Leer geometrías

Cada entidad en una clase de entidad incluye un conjunto de puntos que definen los vértices de un polígono o una línea o una coordenada única que define una entidad de punto. Se puede acceder a estos puntos con objetos de geometría (Polígono, Polilínea, PointGeometry o MultiPoint), que los devuelve en un conjunto de objetos de Punto.

Las entidades pueden tener varias partes. La propiedad partCount del objeto de geometría devuelve el número de partes de una entidad. El método getPart devuelve un conjunto de objetos de puntos para una parte de la geometría en particular si se especifica un índice. Si no hay un índice especificado, devuelve un conjunto que contiene un conjunto de objetos de puntos para cada parte de la geometría.

Las entidades PointGeometry devuelven un objeto de punto único en lugar de un conjunto de objetos de puntos. Los demás tipos de entidad (polígono, polilínea y multipunto) devuelven un conjunto de objetos de puntos o, si la entidad tiene varias partes, un conjunto que contiene varios conjuntos de objetos de puntos.

Si un polígono contiene agujeros, consistirá en un número de anillos. El conjunto de objetos de puntos devuelto para un polígono contiene los puntos del anillo exterior y de todos los anillos interiores. El anillo exterior siempre se devuelve en primer lugar, seguido de los anillos interiores, con los objetos de puntos nulos como separadores entre los anillos. Cuando una secuencia de comandos lee una coordenada de polígonos en una geodatabase o un shapefile, la geodatabase o el shapefile debe incluir una lógica para el manejo de los anillos interiores si la secuencia de comandos requiere esta información; de lo contrario, solo se lee el anillo exterior.

Una entidad multiparte está compuesta por más de una parte física, pero sólo hace referencia a un conjunto de atributos de la base de datos. Por ejemplo, en una capa de estados, el estado Hawaii puede ser considerado como una entidad multiparte. Aunque está compuesto por muchas islas, se puede registrar en la base de datos como una sola entidad.

Un anillo es una ruta cerrada que define un área bidimensional. Un anillo válido consiste en una ruta válida, de tal manera que los puntos de origen y destino del anillo tengan las mismas coordenadas x,y. Un anillo en el sentido de las agujas del reloj es un anillo exterior y un anillo en sentido contrario a las agujas del reloj define un anillo interior.

Más información sobre la escritura de geometrías

Usar tokens de geometría

Los tokens de geometría también se pueden utilizar como accesos directos en lugar de acceder a los objetos completos de geometría. Los tokens de geometría adicionales se pueden utilizar para obtener acceso a información de geometría específica. Acceder a la geometría completa es mucho más costoso en términos de tiempo. Si solo necesita propiedades específicas de la geometría, utilice tokens para proporcionar accesos directos a las propiedades de geometría. Por ejemplo, SHAPE@XY devolverá una tupla de las coordenadas x, y que representan el centroide de la entidad.

Token

Explicación

SHAPE@

A geometry object for the feature.

SHAPE@XY

A tuple of the feature's centroid x,y coordinates.

SHAPE@TRUECENTROID

A tuple of the feature's true centroid x,y coordinates.

SHAPE@X

A double of the feature's x-coordinate.

SHAPE@Y

A double of the feature's y-coordinate.

SHAPE@Z

A double of the feature's z-coordinate.

SHAPE@M

A double of the feature's m-value.

SHAPE@JSON

The esri JSON string representing the geometry.

SHAPE@WKB

The well-known binary (WKB) representation for OGC geometry. It provides a portable representation of a geometry value as a contiguous stream of bytes.

SHAPE@WKT

The well-known text (WKT) representation for OGC geometry. It provides a portable representation of a geometry value as a text string.

SHAPE@AREA

A double of the feature's area.

SHAPE@LENGTH

A double of the feature's length.

Leer geometrías de punto

Los siguientes ejemplos usarán SearchCursor para imprimir las coordenadas para todas las entidades:

Buscar cursor en una clase de entidad de puntos
import arcpy

infc = arcpy.GetParameterAsText(0)

# Enter for loop for each feature
#
for row in arcpy.da.SearchCursor(infc, ["SHAPE@XY"]):
    # Print x,y coordinates of each point feature
    #
    x, y = row[0]
    print("{0}, {1}".format(x, y))
Geometría de punto

Con la clase de entidad anterior, la secuencia de comandos devolverá la información siguiente:

2.0 4.0
8.0 10.0
7.0 5.0

Leer geometrías multipunto

Buscar cursor en una clase de entidad multipunto
import arcpy

infc = arcpy.GetParameterAsText(0)

# Enter for loop for each feature
#
for row in arcpy.da.SearchCursor(infc, ["OID@", "SHAPE@"]):
    # Print the current multipoint's ID
    #
    print("Feature {0}:".format(row[0]))

    # For each point in the multipoint feature,
    #  print the x,y coordinates
    for pnt in row[1]:
        print("{0}, {1}".format(pnt.X, pnt.Y))
Geometría multipunto

Con la clase de entidad anterior, la secuencia de comandos devuelve la siguiente información:

Feature 0:
3.0 8.0
4.0 4.0
6.0 6.0
Feature 1:
5.0 9.0
8.0 10.0
Feature 2:
9.0 5.0

Leer geometrías de polilínea o polígono

Buscar cursor en una clase de entidad de polígono o línea
import arcpy

infc = arcpy.GetParameterAsText(0)

# Enter for loop for each feature
#
for row in arcpy.da.SearchCursor(infc, ["OID@", "SHAPE@"]):
    # Print the current multipoint's ID
    #
    print("Feature {0}:".format(row[0]))
    partnum = 0

    # Step through each part of the feature
    #
    for part in row[1]:
        # Print the part number
        #
        print("Part {0}:".format(partnum))

        # Step through each vertex in the feature
        #
        for pnt in part:
            if pnt:
                # Print x,y coordinates of current point
                #
                print("{0}, {1}".format(pnt.X, pnt.Y))
            else:
                # If pnt is None, this represents an interior ring
                #
                print("Interior Ring:")
        partnum += 1
Geometría de polígono

Con la clase de entidad anterior, la secuencia de comandos devuelve la siguiente información. La entidad 0 es un polígono de una parte, la entidad 1 es un polígono de dos parte y la entidad 2 es una polígono de una parte que posee un anillo interior.

Feature 0:
Part 0:
3.0 8.0
1.0 8.0
2.0 10.0
3.0 8.0
Feature 1:
Part 0:
5.0 3.0
3.0 3.0
3.0 5.0
5.0 3.0
Part 1:
7.0 5.0
5.0 5.0
5.0 7.0
7.0 5.0
Feature 2:
Part 0:
9.0 11.0
9.0 8.0
6.0 8.0
6.0 11.0
9.0 11.0
Interior Ring:
7.0 10.0
7.0 9.0
8.0 9.0
8.0 10.0
7.0 10.0

Temas relacionados

9/11/2013