利用arcpy快速查找两个图层所有字段是否一致

利用arcpy快速查找两个图层所有字段是否一致

背景

在数据处理中,常常对图层字段增减操作,用于辅助空间分析,可是操作完成后又不确定图层的字段是否与标准库一致,这个时候去跑专业质检软件会很麻烦,而有些图层标准字段多达40-50个,人工比对效率极低吗,本文的一个简单的小工具就可以简单快速地对比两个图层所有字段是否一致~

具体实现

参数

参数如下所示:

在这里插入图片描述

代码

这是所有的代码

// This code is writed by Minie
# -- ##############
# opened by gb2312

import arcpy
import sys


def check(stand_layer, check_layer):
    stand_fields = arcpy.ListFields(stand_layer)
    check_fields = arcpy.ListFields(check_layer)

    std_field_name = [field.name for field in stand_fields]
    chk_field_name = [field.name for field in check_fields]
    # 存在的字段
    _01_chk_field_child = [field for field in check_fields if field.name in std_field_name]
    # 多余的字段
    _02_chk_field_child = [field for field in check_fields if not field.name in std_field_name]
    
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您可以使用arcpy中的工具和函数来检查两个线要素的属性和图形是否有变化。下面是一个简单的示例代码,可以帮助您完成此任务: ```python import arcpy # 设置工作空间 arcpy.env.workspace = "YourWorkspace" # 输入要素类路径 fc1 = "Path_to_first_feature_class" fc2 = "Path_to_second_feature_class" # 创建游标以遍历要素 cursor1 = arcpy.da.SearchCursor(fc1, ["SHAPE@", "Field1", "Field2"]) # 替换"Field1"和"Field2"为您要比较的属性字段 cursor2 = arcpy.da.SearchCursor(fc2, ["SHAPE@", "Field1", "Field2"]) # 遍历要素并进行比较 for row1, row2 in zip(cursor1, cursor2): shape1, field1_1, field1_2 = row1 shape2, field2_1, field2_2 = row2 # 检查属性是否有变化 if field1_1 != field2_1 or field1_2 != field2_2: print("属性有变化") # 检查图形是否有变化 if not shape1.equals(shape2): print("图形有变化") # 释放游标对象 del cursor1, cursor2 ``` 请替换代码中的以下部分: - "YourWorkspace":您的工作空间路径,可以是文件地理数据库或文件夹。 - "Path_to_first_feature_class"和"Path_to_second_feature_class":您要比较的两个要素类的路径。 - "Field1"和"Field2":您要比较的属性字段的名称。 这段代码将遍历两个要素类中的要素,并逐个比较它们的属性和图形。如果属性或图形有变化,将会输出相应的信息。注意,此示例假设两个要素类中的要素顺序、数量和属性字段完全一致。如果要素顺序不一致或要素数量不同,可能需要进行更复杂的比较逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值