ArcGISPro 将 村界 图层中与 PolygonZY 图层要素相交或包含的要素的 界线名 字段值,赋值给 PolygonZY 的 QSDWMC 字段。核心逻辑是通过空间关系匹配属性值。

import arcpy

# 设置输入图层路径
polygon_layer = r"村界"  # 村界图层
village_layer = r"PolygonZY"  # PolygonZY图层

# 创建查询表达式来选择与 村界 相交的 PolygonZY 要素
arcpy.management.SelectLayerByLocation(village_layer, "INTERSECT", polygon_layer)

# 使用 UpdateCursor 遍历 PolygonZY 图层的选中要素并赋值
with arcpy.da.UpdateCursor(village_layer, ["QSDWMC", "SHAPE@", "OID@"]) as cursor:
    for row in cursor:
        # 获取当前 PolygonZY 要素与 村界 图层相交的要素的 "界线名" 字段值
        with arcpy.da.SearchCursor(polygon_layer, ["界线名", "SHAPE@", "OID@"]) as search_cursor:
            for search_row in search_cursor:
                if row[1].overlaps(search_row[1]) or row[1].within(search_row[1]):
                    # 将 PolygonZY 的 QSDWMC 字段赋值为 村界 图层的 "界线名" 字段值
                    row[0] = search_row[0]  # 将 "界线名" 字段值赋给 QSDWMC 字段
                    cursor.updateRow(row)  # 更新 PolygonZY 图层的 QSDWMC 字段值

print("赋值完成!")

注意事项

  • 匹配优先级:若存在多个相交要素,需明确取值规则(如面积最大、最近、或合并多值)。

  • 空间关系类型:根据需求调整 SelectLayerByLocation 的匹配条件(如 WITHINCONTAINS)。

  • 数据一致性:确保两图层的坐标系一致,避免空间计算错误。

  • 内存管理:处理完成后及时删除临时数据(如 arcpy.Delete_management(spatial_join))。

通过上述优化,代码的健壮性、效率和可维护性将显著提升。

你可能感兴趣的:(ArcGISPro,arcgis)