1 votos

¿Convertir las coordenadas de características a texto (igual que la salida del comando UNGENERATE en ArcInfo Workstation)?

Estoy tratando de convertir segmentos de flujo a texto. Esta es la función para el script

#función para convertir la característica a texto como comando ungenerate en ArcGIS workstation

def featureTotext(path,feature,TextFileName):

import string, os, sys, locale, arcgisscripting
gp = arcgisscripting.create()
gp.overwriteoutput = 1
msgNotEnoughParams = "Número incorrecto de parámetros de entrada."
msgUseValidDecimalPointSep = "Por favor, utilice uno de los separadores de punto decimal válidos."
try:
    os.chdir(path)
    inputFC = feature
    outFile = open(TextFileName, "w")
    sepchar=""
    inDesc = gp.describe(inputFC)
    inRows = gp.searchcursor(inputFC)
    inRow = inRows.next()
   # outFile.write(inDesc.ShapeType + "\n")

    while inRow:
        feat = inRow.GetValue(inDesc.ShapeFieldName)

        partnum = 0
        partcount = feat.partcount

        while partnum < partcount:
            outFile.write("\t"+str(inRow.GetValue('GRID_CODE')) + "\n")
            print inRow.GetValue('GRID_CODE')
            part = feat.getpart(partnum)
            part.reset()
            pnt = part.next()
            pnt_count = 0
            while pnt:
                outLine = "\t" + str(pnt.x) + "\t" + str(pnt.y) + "\n"
                if sepchar == "": outFile.write(outLine)
                else: outFile.write(outLine.replace(".", sepchar))
                pnt = part.next()
                pnt_count += 1
                if not pnt:
                    pnt = part.next()
                    if pnt:
                        outFile.write("AnilloInterior\n")

            partnum += 1
            outFile.write("FIN\n")
        inRow = inRows.next()
    outFile.write("FIN")
    outFile.flush()
    outFile.close()
    print outFile

except Exception, ErrorDesc:
    gp.AddError(ErrorDesc[0])
    if outFile: outFile.close()
    gp.AddError(gp.getmessages(2))

Este script da una salida similar al comando "ungenerate" en ArcGIS workstation. Cuando se usa, esta función da menos puntos de salida que usando el comando ungenerate.

La salida de esta función se ve así:
1354
391367.254831   9456327.37568
389617.254831   9458077.37568
389617.254831   9459077.37568
388117.254831   9460577.37568
387117.254831   9460577.37568
380117.254831   9467577.37568

FIN

Quiero tener más puntos (intervalo más pequeño) al extraer las coordenadas X e Y de una característica. ¿Cómo puedo hacer esto?

1voto

jcsharp Puntos 11

El script devolverá un array de objetos de punto para cada parte (devuelta por el método GetPart) de cada registro en la clase de entidad. El número de puntos devueltos no está definido por ninguna tolerancia; el array contendrá todos los vértices que componen esa parte del polígono.

La única forma de obtener más puntos sería colocarlos en las líneas existentes, lo cual (si entiendo correctamente su requerimiento) sería redundante.

"http://help.arcgis.com/es/arcgisdesktop/10.0/help/index.html#//002z0000001t000000"

"http://help.arcgis.com/es/sdk/10.0/arcobjects_net/componenthelp/index.html#/IGpDescribeGeometry_Interface/002n000001nw000000/"

1voto

Greg Puntos 1756

Quiero tener más puntos (intervalo más pequeño) al extraer coordenadas X e Y de una entidad. ¿Cómo puedo hacer esto?

Si tiene acceso a los niveles de licencia Estándar o Avanzado, ejecute Densify (arcpy.Densify_edit) en las líneas antes de convertirlas en texto. Tenga en cuenta que esto puede cambiar la forma de la geometría especialmente a lo largo de curvas, aunque los vértices individuales deberían permanecer en la ruta original de la línea.

0voto

hakkikonu Puntos 131

No sé cómo se hará esto mediante un script, pero si tienes datos vectoriales y quieres tenerlos en un archivo de texto o en formato Excel, entonces:

  1. Agrega una capa en ArcMap
  2. Abre la tabla de atributos
  3. Selecciona todas las entidades y desde clic derecho selecciona copiar entidades y pégalas en un archivo de Excel o Word.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X