我正在编写一个脚本,允许用户输入坐标以更新点的位置。
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屏幕时,即使属性表显示新坐标,该点也会转到旧坐标的位置。
有什么想法?谢谢!
答案 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。它们更快更容易使用。