ArcPy 程序调用 QGIS 进程实现几何拓扑检查

在 PyCharm 中基于 ArcPy 环境调用 QGIS 拓扑检查工具。

1,实现思路:

本质上是利用 Python 的 subprocess 模块从 ArcPy 脚本中启动 QGIS 自带的 Python 解释器(python-qgis-ltr.bat),并执行一个独立的 QGIS 脚本来完成拓扑检查。这种"混合调用"方式允许你在 ArcGIS Pro 的 Python 环境中复用 QGIS 的几何处理能力。

  1. ArcPy 主脚本(LAPolygonChk.py)在 ArcGIS Pro 的 Python 环境中运行。

  2. 该脚本使用 subprocess.Popen 启动 QGIS 的批处理文件 python-qgis-ltr.bat,并将 QGIS 脚本 LAPolygonChk_qgistopo.py 的路径、输入要素类路径、输出文件路径等作为参数传递。

  3. QGIS 脚本在 QGIS 内置 Python 环境中运行,初始化 QGIS 应用,加载要素类(支持 Shapefile 和 GDB),执行几何有效性检查,将结果写入文本文件。

  4. ArcPy 脚本等待 QGIS 进程结束,读取生成的结果文件,并汇总到最终报告 topology_errors.txt。

2,具体步骤

环境准备

  • 确保已安装 QGIS 3.40.14 ,其 bin 目录下存在 python-qgis-ltr.bat(路径如C:\Program Files\QGIS 3.40.14\bin\python-qgis-ltr.bat)。

  • 确保 ArcGIS Pro 3.5 已安装,并且其 Python 环境(如 arcgispro-py3 或克隆环境)可用。

  • 准备 PyCharm,并配置项目使用 ArcGIS Pro 的 Python 解释器(例如 E:\*****\arcgispro-py3-clone\python.exe)。

编写 QGIS 拓扑检查脚本

编写 ArcPy 主脚本

使用 subprocess.Popen 执行,设置 shell=True 和 creationflags=subprocess.CREATE_NO_WINDOW(隐藏窗口)
在主脚本 LARedLineEXjson.py的开头,需要配置两个关键路径:

QGIS_BATCH_FILE = r"C:\Program Files\QGIS 3.40.14\bin\python-qgis-ltr.bat" # 指向QGIS的批处理文件

QGIS_GEOJSON_SCRIPT = r"E:\********\json_qgis.py" # 指向QGIS脚本的完整路径

致谢:deepseek\元宝 帮我写文章!!!

相关推荐
丨白色风车丨14 分钟前
Python中JSON与字典/列表的相互转换详解
windows·python·json
梦想不只是梦与想15 分钟前
SQLAlchemy:查询与操作 (三)
数据库·python·sqlalchemy
计算机编程指导师20 分钟前
【大数据毕设】基于Hadoop+Django乳腺癌数据分析与可视化系统选题推荐 源码 毕业设计 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·毕业设计·课程设计·乳腺癌
打工仔折腾 AI22 分钟前
鸿蒙版ToDesk远控实测:蓝牙键鼠、双模式鼠标与跨端剪贴板怎么用
后端·python·华为·性能优化·计算机外设·harmonyos·ai agent 实战
启观川24 分钟前
数据结构与算法 -第 3 章 常用算法-回溯算法
数据结构·笔记·python·算法
计算机编程指导师33 分钟前
Python毕设怎么做?基于hadoop的商家优惠券营销效果数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·spark·毕业设计·课程设计·优惠券
计算机编程指导师37 分钟前
【Python毕设推荐】基于Hadoop+Spark的商场商铺运行数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·spark·课程设计·商场商铺
haluhalu.41 分钟前
Agent = LLM + 上下文 + 工具(含观察 / 动作空间、ReAct 循环)
前端·javascript·人工智能·python·react.js·机器学习·个人开发
mldong42 分钟前
给 Django Admin 加审批流:一行前端代码没写,298 行接上工作流引擎
后端·python·架构
kobe_OKOK_8 小时前
__getattr__和__getattribute__如何用
python