我正在编写一个脚本以允许用户输入坐标以更新点的位置。
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)
Run Code Online (Sandbox Code Playgroud)
脚本“有效”;也就是说,我在最后创建的 shapefile 在旧坐标的位置包含新坐标。但是,当我将新的 shapefile 拖入 ArcMap 屏幕时,该点会转到旧坐标的位置,即使属性表正在显示新坐标。
有什么想法吗?谢谢!
小智 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
Run Code Online (Sandbox Code Playgroud)
这应该让你很接近。如果可能,您应该使用数据访问游标。它们使用起来更快、更容易。
| 归档时间: |
|
| 查看次数: |
2218 次 |
| 最近记录: |