【问题标题】:Writing lat/long geometries to a feature class field将纬度/经度几何写入要素类字段
【发布时间】:2015-05-20 22:21:32
【问题描述】:

我有一个包含超过 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'

【问题讨论】:

    标签: python gis arcpy


    【解决方案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'
    

    【讨论】:

    • 同意。但是,为了匹配问题,您还应该显示四舍五入。 row[2] = round(row[0], 3)
    • 好点@DWynne。我更新了代码以包含 round 函数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-29
    • 2019-04-02
    • 2020-09-28
    • 1970-01-01
    • 1970-01-01
    • 2019-07-11
    相关资源
    最近更新 更多