PROJ_DATA连接问题
This commit is contained in:
@@ -44,11 +44,21 @@ def _setup_python_path():
|
|||||||
|
|
||||||
def _setup_environment():
|
def _setup_environment():
|
||||||
"""设置 QGIS 运行所需的环境变量"""
|
"""设置 QGIS 运行所需的环境变量"""
|
||||||
# 自动检测 QGIS 应用目录
|
# 自动检测 QGIS 应用目录(与 run_qgis.bat 保持一致)
|
||||||
qgis_app_dir = os.path.join(QGIS_ROOT, "apps", "qgis-ltr")
|
qgis_app_dir = os.path.join(QGIS_ROOT, "apps", "qgis-ltr")
|
||||||
if not os.path.isdir(qgis_app_dir):
|
if not os.path.isdir(qgis_app_dir):
|
||||||
qgis_app_dir = os.path.join(QGIS_ROOT, "apps", "qgis")
|
qgis_app_dir = os.path.join(QGIS_ROOT, "apps", "qgis")
|
||||||
|
|
||||||
|
# ★ 必须在任何 DLL 加载前设置 PROJ_DATA,防止 PostgreSQL 的旧 proj.db 干扰
|
||||||
|
for proj_dir in [
|
||||||
|
os.path.join(qgis_app_dir, "share", "proj"),
|
||||||
|
os.path.join(QGIS_ROOT, "share", "proj"),
|
||||||
|
os.path.join(QGIS_ROOT, "apps", "gdal", "share", "proj"),
|
||||||
|
]:
|
||||||
|
if os.path.isdir(proj_dir):
|
||||||
|
os.environ["PROJ_DATA"] = proj_dir
|
||||||
|
break
|
||||||
|
|
||||||
os.environ["QGIS_PREFIX_PATH"] = qgis_app_dir
|
os.environ["QGIS_PREFIX_PATH"] = qgis_app_dir
|
||||||
os.environ["PYTHONUTF8"] = "1"
|
os.environ["PYTHONUTF8"] = "1"
|
||||||
os.environ["GDAL_FILENAME_IS_UTF8"] = "YES"
|
os.environ["GDAL_FILENAME_IS_UTF8"] = "YES"
|
||||||
@@ -64,15 +74,6 @@ def _setup_environment():
|
|||||||
if os.path.isdir(gdal_data):
|
if os.path.isdir(gdal_data):
|
||||||
os.environ["GDAL_DATA"] = 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
|
import ctypes
|
||||||
_dll_dirs = [
|
_dll_dirs = [
|
||||||
os.path.join(qgis_app_dir, "bin"),
|
os.path.join(qgis_app_dir, "bin"),
|
||||||
|
|||||||
Reference in New Issue
Block a user