将纬度/长几何写入要素类字段

时间:2015-05-20 22:21:33

标签: python gis arcpy

我有一个点要素类,有超过8000万个要素,需要添加字段以包含两个不同字段中的纬度/经度坐标。虽然在ArcMap中很容易计算出来,但我需要编写一个脚本,它将两个都写入表中,然后舍入到小数点后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'

1 个答案:

答案 0 :(得分:1)

您使用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'