diff --git a/app/services/qgis/qgis_runner.py b/app/services/qgis/qgis_runner.py index 0b4d243..b45abb9 100644 --- a/app/services/qgis/qgis_runner.py +++ b/app/services/qgis/qgis_runner.py @@ -44,7 +44,11 @@ def _setup_python_path(): def _setup_environment(): """设置 QGIS 运行所需的环境变量""" + # 自动检测 QGIS 应用目录 qgis_app_dir = os.path.join(QGIS_ROOT, "apps", "qgis-ltr") + if not os.path.isdir(qgis_app_dir): + qgis_app_dir = os.path.join(QGIS_ROOT, "apps", "qgis") + os.environ["QGIS_PREFIX_PATH"] = qgis_app_dir os.environ["PYTHONUTF8"] = "1" os.environ["GDAL_FILENAME_IS_UTF8"] = "YES" @@ -60,6 +64,15 @@ def _setup_environment(): if os.path.isdir(gdal_data): os.environ["GDAL_DATA"] = gdal_data + # 强制使用 QGIS 自带的 PROJ,避免 PostgreSQL/PostGIS 的旧 proj.db 干扰 + for proj_dir in [ + os.path.join(qgis_app_dir, "share", "proj"), + os.path.join(QGIS_ROOT, "share", "proj"), + ]: + if os.path.isdir(proj_dir): + os.environ["PROJ_DATA"] = proj_dir + break + import ctypes _dll_dirs = [ os.path.join(qgis_app_dir, "bin"),