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. |
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. Nota: Restablecer se utiliza solamente para Conjuntos que no son de cursor. Utilizar restablecer en un Conjunto de cursor no restablecerá el primer registro. |
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 |
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
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
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
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