python中arcpy的示例分析
发表于:2025-11-14 作者:千家信息网编辑
千家信息网最后更新 2025年11月14日,这篇文章给大家分享的是有关python中arcpy的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。需求有多个文件地理数据库(gdb),数据库内有多个面要素类图层,每
千家信息网最后更新 2025年11月14日python中arcpy的示例分析
这篇文章给大家分享的是有关python中arcpy的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
需求
有多个文件地理数据库(gdb),数据库内有多个面要素类图层,每个图层不能有自重叠,也不能和其他图层重叠。所以,需要为每个文件地理数据库(gdb)进行拓扑检查。
思路
1.在输出文件夹下新建与输入文件夹下同名的gdb。
2.在gdb内新建要素类数据集。
3.在数据集内创建拓扑。
4.向拓扑中添加要素类。
5.添加拓扑规则。
6.拓扑验证。
7.导出拓扑错误。
将需要拓扑的gdb放入同一个文件夹下,用python代码串连起来利用循环遍历gdb便可以进行批量拓扑了。
代码
# -*- coding: gbk -*-import osimport arcpyimport sysreload(sys)sys.setdefaultencoding('utf-8')arcpy.AddMessage(sys.getdefaultencoding())arcpy.env.XYResolution = "0.0001 Meters" #设置XY分辨率arcpy.env.XYTolerance = "0.001 Meters" #设置XY容差def checkTopology(in_path, out_path): cout = 0 fail = 0 warning = 0 fail_list = [] warning_list = [] arcpy.env.workspace = in_path workspaces = arcpy.ListWorkspaces("*", "ALL") for workspace in workspaces: arcpy.AddMessage("=" * 60) cout += 1 arcpy.AddMessage(" (" + str(cout) + ") " + os.path.basename(workspace)) arcpy.AddMessage(" ") try: # 将每个gdb设为工作区 arcpy.env.workspace = workspace fc_list = arcpy.ListFeatureClasses() #列出gdb内的要素类图层 in_fc_path_list = [] for fc in fc_list: in_fc_path_list.append(os.path.join(workspace,fc)) # 在输出路径out_path下新建gdb gdb_name1 = os.path.basename(workspace) result_gdb = os.path.join(out_path, gdb_name1) if not arcpy.Exists(result_gdb): arcpy.AddMessage(" 新建 " + result_gdb + " ...") arcpy.CreateFileGDB_management(out_path, gdb_name1) else: arcpy.AddWarning(result_gdb + " 已存在!") warning_list.append(result_gdb) warning += 1 continue arcpy.AddMessage(" 在 " + result_gdb + " 内新建要素数据集...") dataset_name = "dataset" dataset_path = os.path.join(result_gdb,dataset_name) # 引用包含要应用的空间参考的要素类或要素数据集, # 将in_fc_path_list[0]的坐标作为要素数据集的坐标,所以gdb内的所有要素类应该是统一坐标 arcpy.CreateFeatureDataset_management(result_gdb, dataset_name, in_fc_path_list[0]) #导入要素类到数据集 arcpy.AddMessage(" 向 " + dataset_path + " 导入要素类图层...") arcpy.FeatureClassToGeodatabase_conversion(in_fc_path_list,dataset_path) #在dataset数据内创建拓扑 arcpy.AddMessage(" 创建拓扑...") topology_name = "topology" topology_path = os.path.join(dataset_path, topology_name) arcpy.CreateTopology_management(dataset_path, topology_name) # 将导入dataset的要素类添加到拓扑中 arcpy.AddMessage(" 向拓扑中添加要素类...") dataset_fc_path_lsit = [] #数据集中的要素类绝对路径列表 for ifc_name in fc_list: # 拼接数据集中的要素类绝对路径 dataset_fc_path = os.path.join(dataset_path,ifc_name) dataset_fc_path_lsit.append(dataset_fc_path) arcpy.AddFeatureClassToTopology_management(topology_path, dataset_fc_path, "1", "1") arcpy.AddMessage(" 添加拓扑规则...") for i in range(len(dataset_fc_path_lsit)): fc_path2 = dataset_fc_path_lsit[i] #规则1:不能重叠 arcpy.AddRuleToTopology_management(topology_path, "Must Not Overlap (Area)", fc_path2, "", "", "") for j in range(i + 1, len(dataset_fc_path_lsit)): fc_path3 = dataset_fc_path_lsit[j] # 规则2:不能重叠与其他要素类重叠 arcpy.AddRuleToTopology_management(topology_path, "Must Not Overlap With (Area-Area)", fc_path2, "", fc_path3, "") arcpy.AddMessage(" 拓扑验证...") arcpy.ValidateTopology_management(topology_path, "Full_Extent") arcpy.AddMessage(" 导出拓扑错误...") arcpy.ExportTopologyErrors_management(topology_path, dataset_path, "topoError") except Exception as e: arcpy.AddError(e.message) arcpy.AddError(" " + os.path.basename(workspace) + " 失败!") fail_list.append(os.path.basename(workspace)) fail += 1 arcpy.AddMessage('+' * 60) arcpy.AddMessage(u" 成功:" + str(cout - fail - warning) + u" 个!") if warning > 0: arcpy.AddWarning(u" 警告:" + str(warning) + u" 个! 如下:") arcpy.AddWarning("####" + '*' * 20) for fff in warning_list: arcpy.AddWarning(" " + fff) arcpy.AddWarning("####" + '*' * 20) if fail > 0: arcpy.AddError(u" 失败:" + str(fail) + u" 个! 如下:") arcpy.AddError("####" + '*' * 20) for ff in fail_list: arcpy.AddError(" " + ff) arcpy.AddError("####" + '*' * 20) arcpy.AddMessage('+' * 60)if __name__ == "__main__": in_path_globle = arcpy.GetParameterAsText(0) out_path_globe = arcpy.GetParameterAsText(1) checkTopology(in_path_globle,out_path_globe)效果图

感谢各位的阅读!关于"python中arcpy的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
要素
拓扑
数据
文件
规则
坐标
数据库
文件夹
路径
示例
分析
代码
内容
地理
地理数据库
多个
更多
篇文章
错误
参考
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
宠物商品信息数据库
服务器专用管理语言
数据库可视化 历史
软件开发企业注册前置件
我的世界迪士尼服务器ip地址
专业支付软件开发
寻甸品牌软件开发网上价格
c 查找数据库中的内容
苹果电脑合不合适做网络安全
怎么打开自动连接服务器
srs流媒体服务器断线
达梦数据库的实例是什么
软件开发14001环境认证体系
服务器背系统识别按钮黄灯
软件开发形成的产品会计分录
远程登录服务器软件
武汉专业软件开发流程
美通视讯软件开发
lol观战服务器连接失败
r440服务器主板说明
网络安全模型图包括哪几个部分
深圳应用软件开发服务费
网络安全学生发言稿400字
数据库运行慢怎么解决
服务器装2个数据库
镇海计算机软件开发商
山东诚兑互联网科技
软件开发都是连续做一天吗
服务器系统自动运行
江苏省网络安全宣传周标语