0

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

 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 屏幕中时,该点会转到旧坐标的位置,即使属性表正在显示新坐标。

有什么想法吗?谢谢!

4

1 回答 1

5

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

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

那应该让你非常接近。如果可能,您应该使用数据访问游标。它们更快、更容易使用。

于 2013-08-27T01:27:33.080 回答