更新ArcGIS更新坐标的光标命令,但坐标位置没有更新?

时间:2013-08-08 18:18:03

标签: python gis arcgis arcpy

我正在编写一个脚本,允许用户输入坐标以更新点的位置。

 rows = arcpy.UpdateCursor("C:\Users\Hannah\Desktop\Marcellus Shale data\GDB and Maps\Marcellus.gdb\Marcellus_Wells\Update_Cursor")
for row in rows:
    row.Latitude = float(raw_input('Latitude: '))
    rows.updateRow(row)
del row
del rows

rows = arcpy.UpdateCursor("C:\Users\Hannah\Desktop\Marcellus Shale data\GDB and Maps\Marcellus.gdb\Marcellus_Wells\Update_Cursor")
for row in rows:
    row.Longitude = float(raw_input('Longitude: '))
    rows.updateRow(row)
del row
del rows


inFeatures = ["C:\Users\Hannah\Desktop\Marcellus Shale data\GDB and Maps\Marcellus.gdb\Marcellus_Wells\Update_Cursor"]
outLocation = "C:\Users\Hannah\Desktop\Marcellus Shale data\GDB and Maps\Database Script\Shapefiles"
arcpy.FeatureClassToShapefile_conversion(inFeatures, outLocation)

脚本“有效”;也就是说,我在末尾创建的shapefile包含旧坐标所在的新坐标。但是,当我将新的shapefile拖动到ArcMap屏幕时,即使属性表显示新坐标,该点也会转到旧坐标的位置。

有什么想法?谢谢!

1 个答案:

答案 0 :(得分:4)

您正在更新纬度和经度字段,但不更新实际几何图形。要更新记录的几何图形,您需要创建一个新的点对象并将其存储在形状字段中。

rows = arcpy.UpdateCursor("C:\Users\Hannah\Desktop\Marcellus Shale data\GDB and Maps\Marcellus.gdb\Marcellus_Wells\Update_Cursor")
for row in rows:
    point = new arcpy.point()
    latitude = float(raw_input('Latitude: '))
    longitude = float(raw_input('Longitude: '))
    row.Latitude = latitude
    row.Longitude = longitude
    point.Y = latitude
    point.X = longitude        
    pointGeometry = arcpy.PointGeometry(point)
    row.setValue('SHAPE', pointGeometry)
    rows.updateRow(row)
del row
del rows

这应该让你非常接近。如果可能,您应该使用data access cursors。它们更快更容易使用。