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 mediante el objeto de geometría, el cual los devuelve en forma de conjunto de objetos de puntos.

Propiedad

Explicación

cantidad

El número de objetos del conjunto.

Propiedades de los conjuntos

Método

Explicación

add(value)

Agrega un Conjunto o un Objeto de punto al conjunto en la última posición.

append(value)

Adjunta un objeto al conjunto en la última posición.

clone(point_object)

Clona el objeto de punto.

extend(items)

Extiende el conjunto mediante el agregado de elementos.

getObject(index)

Devuelve un objeto específico del conjunto.

insert(index, value)

Agrega un objeto al conjunto en una posición específica.

next()

Devuelve el siguiente objeto del conjunto.

remove(index)

Quita un objeto específico del conjunto.

removeAll()

Quita todos los objetos y crea un conjunto vacío.

replace(index, value)

Reemplaza un objeto de acuerdo a la ubicación en el índice.

reset()

Restablece el primer objeto del conjunto.

NotaNota:

Restablecer se utiliza solamente para Conjuntos que no son de cursor. Utilizar restablecer en un Conjunto de cursor no restablecerá el primer registro.

Métodos de los conjuntos

Las entidades de una geodatabase o un shapefile pueden incluir 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 de puntos 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.

Propiedad

Explicación

Id.

El Id. de la forma del punto

X

La coordenada horizontal del punto

Y

La coordenada vertical del punto

Z

El valor de elevación del punto

M

El valor de medición del punto

Propiedades de punto

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 cómo escribir geometrías

Los siguientes ejemplos imprimen las coordenadas para todas las entidades:

Leer geometrías de punto

Buscar cursor en una clase de entidad de puntos

import arcpy

infc = arcpy.GetParameterAsText(0)

# Identify the geometry field
#
desc = arcpy.Describe(infc)
shapefieldname = desc.ShapeFieldName

# Create search cursor
#
rows = arcpy.SearchCursor(infc)

# Enter for loop for each feature/row
#
for row in rows:
    # Create the geometry object 'feat'
    #
    feat = row.getValue(shapefieldname)
    pnt = feat.getPart()

    # Print x,y coordinates of current point
    #
    print pnt.X, pnt.Y
Geometría de puntos

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)  # Identify the geometry field # desc = arcpy.Describe(infc) shapefieldname = desc.ShapeFieldName  # Create search cursor # rows = arcpy.SearchCursor(infc)  # Enter for loop for each feature/row # for row in rows:     # Create the geometry object     #     feat = row.getValue(shapefieldname)      # Print the current multipoint's ID     #     print "Feature %i:" % row.getValue(desc.OIDFieldName)      # For each point in the multipoint feature,     #  print the x,y coordinates     for pnt in feat:         print 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)  # Identify the geometry field # desc = arcpy.Describe(infc) shapefieldname = desc.ShapeFieldName  # Create search cursor # rows = arcpy.SearchCursor(infc)  # Enter for loop for each feature/row # for row in rows:     # Create the geometry object     #     feat = row.getValue(shapefieldname)      # Print the current multipoint's ID     #     print "Feature %i:" % row.getValue(desc.OIDFieldName)     partnum = 0      # Step through each part of the feature     #     for part in feat:         # Print the part number         #         print "Part %i:" % partnum          # Step through each vertex in the feature         #         for pnt in feat.getPart(partnum):             if pnt:                 # Print x,y coordinates of current point                 #                 print 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


7/11/2012