7 votos

Actualización Lat/Longs y la posición real del punto shapefile el uso de arcpy.UpdateCursor()?

Tengo un punto de shapefile con más de 3000 puntos que se actualizan con frecuencia, cuando se actualizan ellos necesitan tener sus lat/longs cambiado, lo que se introduce en la tabla de atributos.

Cuando la lat/longs se actualizan en la tabla de atributos me doy cuenta de que la característica de la realidad no cambia su posición en relación a la nueva lat/long introducido en la tabla de atributos.

Hay una manera de hacer que esto suceda en ArcView sin la necesidad de re-exportación de la tabla de atributos como un dbf, añádelo al mapa, a continuación, mostrar xy datos?

11voto

Daniel Broekman Puntos 1951

Suena como que usted está actualizando algunos atributos de su cuenta en lugar de la actualización de la geometría real. Usted puede hacer cambios a una característica de la geometría utilizando python, pero es un par de líneas de código. Echa un vistazo a este ejemplo:

import arcpy
shapeName = arcpy.Describe('c:/path/to/shp/update_geom.shp').shapeFieldName
rows = arcpy.UpdateCursor(r'c:/path/to/shp/update_geom.shp')
row = rows.next() # just one row...you could iterate through all rows
pnt = arcpy.Point(row.getValue(shapeName).getPart(0).X + 0.5, row.getValue(shapeName).getPart(0).Y + 0.5)
row.setValue(shapeName, pnt)
rows.updateRow(row)
del rows

Que sólo actualiza una fila, pero se muestra cómo actualizar un punto de la característica de la geometría.

**Agregado el código que se repite a lo largo de todas las filas.

import arcpy
shapeName = arcpy.Describe('c:/path/to/shp/update_geom.shp').shapeFieldName
rows = arcpy.UpdateCursor(r'c:/path/to/shp/update_geom.shp')
for row in rows:
  row = rows.next()
  pnt = arcpy.Point(row.getValue(shapeName).getPart(0).X + 0.5, row.getValue(shapeName).getPart(0).Y + 0.5)
  row.setValue(shapeName, pnt)
  rows.updateRow(row)
del rows

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