将 lat/long 几何图形写入要素 class 字段

Writing lat/long geometries to a feature class field

我有一个点要素 class,其中包含超过 8000 万个要素,需要添加字段以包含两个不同字段中的 lat/long 坐标。虽然在 ArcMap 中很容易计算出来,但我需要编写一个脚本,将两者都写入 table,然后四舍五入到小数点后 3 位以内。我尝试同时使用 InsertCursorUpdateCursor,但无法写入字段。但是,当我使用 SearchCursor 时,我可以检索我无法将它们写入字段的值。

这是我目前正在处理的内容:

import arcpy

from arcpy import env 
env.workspace = 'C:\Users\Testing'
env.overwriteOutput = True

inFeatures = "ras2point.shp"
cursor = arcpy.da.InsertCursor(inFeatures, ["SHAPE@X"])
for row in inFeatures:
     X = row[0]
     cursor.insertRow([X])

del row
del cursor   
print 'FINISHED'

您在 UpdateCursor 方面走在了正确的轨道上。如果您还没有添加 XY 字段,那么您可以使用脚本执行此操作并将 field_scale 参数(小数位数)设置为 3 或对值本身进行舍入。然后确保在创建游标时包含新的 XY 字段。

import arcpy

from arcpy import env 
env.workspace = 'C:\Users\Testing'
env.overwriteOutput = True

inFeatures = 'ras2point.shp'
arcpy.AddField_management(inFeatures, 'X', 'DOUBLE', 8, 3)
arcpy.AddField_management(inFeatures, 'Y', 'DOUBLE', 8, 3)
with arcpy.da.UpdateCursor(inFeatures, ['SHAPE@X', 'SHAPE@Y', 'X', 'Y']) as cursor:
    for row in cursor:
        row[2] = round(row[0], 3)
        row[3] = round(row[1], 3)
        cursor.updateRow(row)

print 'FINISHED'