在 PyCharm 中基于 ArcPy 环境调用 QGIS 拓扑检查工具。
1,实现思路:
本质上是利用 Python 的 subprocess 模块从 ArcPy 脚本中启动 QGIS 自带的 Python 解释器(python-qgis-ltr.bat),并执行一个独立的 QGIS 脚本来完成拓扑检查。这种"混合调用"方式允许你在 ArcGIS Pro 的 Python 环境中复用 QGIS 的几何处理能力。
-
ArcPy 主脚本(
LAPolygonChk.py)在 ArcGIS Pro 的 Python 环境中运行。 -
该脚本使用
subprocess.Popen启动 QGIS 的批处理文件python-qgis-ltr.bat,并将 QGIS 脚本LAPolygonChk_qgistopo.py的路径、输入要素类路径、输出文件路径等作为参数传递。 -
QGIS 脚本在 QGIS 内置 Python 环境中运行,初始化 QGIS 应用,加载要素类(支持 Shapefile 和 GDB),执行几何有效性检查,将结果写入文本文件。
-
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\元宝 帮我写文章!!!