QGIS完成初步重构

This commit is contained in:
wzy-warehouse
2026-06-20 15:50:24 +08:00
parent d20b5744bb
commit 18d8bcb1a3
45 changed files with 1688 additions and 454 deletions
+22 -5
View File
@@ -7,6 +7,8 @@ import time
from qgis.core import QgsProject, QgsDataSourceUri
from app.config.paths import get_logger
from app.config.qgis_mappings import TABLE_RENAMES, SCHEMA_REPLACEMENTS
from .template_cache import TemplateCache
from .template_modifier import TemplateModifier
from .layer_filter import LayerFilter
@@ -115,17 +117,32 @@ class MapService:
db_config["username"],
db_config["password"],
)
# 更新 schematable="base"."xxx" → table="qgis"."xxx"
# 更新 schema
old_uri = uri.uri()
if f'table="{actual_schema}".' not in old_uri:
new_uri = old_uri.replace('table="base".', f'table="{actual_schema}".')
if new_uri != old_uri:
uri = QgsDataSourceUri(new_uri)
for old_schema in SCHEMA_REPLACEMENTS:
new_uri = old_uri.replace(
f'table="{old_schema}".',
f'table="{actual_schema}".',
)
if new_uri != old_uri:
uri = QgsDataSourceUri(new_uri)
break
# 表名映射(模板表名 ≠ 目标库表名)
uri_str = uri.uri()
for old_name, new_name in TABLE_RENAMES.items():
full_old = f'table="{actual_schema}"."{old_name}"'
full_new = f'table="{actual_schema}"."{new_name}"'
if full_old in uri_str:
uri_str = uri_str.replace(full_old, full_new)
uri = QgsDataSourceUri(uri_str)
layer.setDataSource(uri.uri(), layer.name(), "postgres")
if layer.isValid():
logger.info(f"图层 {layer.name()} 连接更新成功")
fc = layer.featureCount()
logger.info(f"图层 {layer.name()} 连接更新成功 ({fc} features)")
else:
logger.error(f"图层 {layer.name()} 更新后仍无效")
except Exception as e: