Prechádzať zdrojové kódy

拓扑检查核心SQL算法集成

wanger 7 mesiacov pred
rodič
commit
27e26320f2
49 zmenil súbory, kde vykonal 246 pridanie a 230 odobranie
  1. 34 4
      processing/algs/gdal/GdalAlgorithm.py
  2. 42 42
      processing/algs/gdal/GdalAlgorithmProvider.py
  3. 3 4
      processing/algs/gdal/Topology/A00.py
  4. 3 4
      processing/algs/gdal/Topology/A01.py
  5. 3 4
      processing/algs/gdal/Topology/A02.py
  6. 3 4
      processing/algs/gdal/Topology/A03.py
  7. 3 4
      processing/algs/gdal/Topology/A04.py
  8. 3 4
      processing/algs/gdal/Topology/A05.py
  9. 3 4
      processing/algs/gdal/Topology/AA01.py
  10. 3 4
      processing/algs/gdal/Topology/AA02.py
  11. 3 4
      processing/algs/gdal/Topology/AA03.py
  12. 3 4
      processing/algs/gdal/Topology/AA04.py
  13. 3 4
      processing/algs/gdal/Topology/AA05.py
  14. 3 4
      processing/algs/gdal/Topology/AL01.py
  15. 3 4
      processing/algs/gdal/Topology/AP01.py
  16. 3 4
      processing/algs/gdal/Topology/AP02.py
  17. 3 4
      processing/algs/gdal/Topology/L00.py
  18. 3 4
      processing/algs/gdal/Topology/L01.py
  19. 3 4
      processing/algs/gdal/Topology/L02.py
  20. 3 4
      processing/algs/gdal/Topology/L03.py
  21. 3 4
      processing/algs/gdal/Topology/L04.py
  22. 3 4
      processing/algs/gdal/Topology/L05.py
  23. 3 4
      processing/algs/gdal/Topology/L06.py
  24. 3 4
      processing/algs/gdal/Topology/L07.py
  25. 3 4
      processing/algs/gdal/Topology/L08.py
  26. 3 4
      processing/algs/gdal/Topology/L09.py
  27. 3 4
      processing/algs/gdal/Topology/L10.py
  28. 3 4
      processing/algs/gdal/Topology/LA01.py
  29. 3 4
      processing/algs/gdal/Topology/LA02.py
  30. 3 4
      processing/algs/gdal/Topology/LA03.py
  31. 3 4
      processing/algs/gdal/Topology/LL01.py
  32. 3 4
      processing/algs/gdal/Topology/LL02.py
  33. 3 4
      processing/algs/gdal/Topology/LL03.py
  34. 3 4
      processing/algs/gdal/Topology/LL04.py
  35. 3 4
      processing/algs/gdal/Topology/LP01.py
  36. 3 4
      processing/algs/gdal/Topology/P00.py
  37. 3 4
      processing/algs/gdal/Topology/P01.py
  38. 3 4
      processing/algs/gdal/Topology/PA01.py
  39. 3 4
      processing/algs/gdal/Topology/PA02.py
  40. 3 4
      processing/algs/gdal/Topology/PA03.py
  41. 3 4
      processing/algs/gdal/Topology/PL01.py
  42. 3 4
      processing/algs/gdal/Topology/PL02.py
  43. 3 4
      processing/algs/gdal/Topology/PP01.py
  44. 3 4
      processing/algs/gdal/Topology/PP02.py
  45. 0 0
      processing/algs/gdal/Topology/__init__.py
  46. BIN
      processing/algs/gdal/Topology/topology.png
  47. 37 7
      processing/tools/SpatiaLite/SpatiaLite.py
  48. 2 4
      processing/tools/topology/read.py
  49. 5 5
      processing/tools/topology/topoCheck.yaml

+ 34 - 4
processing/algs/gdal/GdalAlgorithm.py

@@ -25,7 +25,8 @@ import numpy as np
 from PyQt5.QtGui import QIcon
 
 from qgis.PyQt.QtCore import QUrl, QCoreApplication
-from qgis._core import QgsCoordinateTransformContext
+from qgis._core import QgsCoordinateTransformContext, QgsCoordinateReferenceSystem, QgsCoordinateTransform, \
+    QgsVectorLayer, QgsWkbTypes, QgsFeature, QgsGeometry
 
 from qgis.core import (QgsApplication,
                        QgsProject,
@@ -299,6 +300,33 @@ class GdalAlgorithm(QgsProcessingAlgorithm):
 
     # 将VectorLayer导入到SpatiaLite数据库
     def importLayerToSpatiaLite(self, layer, table_name):
+        # TODO wanger 强制进行坐标系转换  统一入库数据坐标系  增强分析结果准确性
+        target_crs = QgsCoordinateReferenceSystem("EPSG:4490")
+        # 创建坐标转换对象
+        transform_context = QgsProject.instance().transformContext()
+        transform = QgsCoordinateTransform(layer.crs(), target_crs, transform_context)
+        # 创建内存图层
+        geometry_type = layer.wkbType()  # 保留原始几何类型
+        memory_layer = QgsVectorLayer(
+            f"{QgsWkbTypes.displayString(geometry_type)}",  # 指定几何类型
+            "Transformed Layer",
+            "memory"
+        )
+        # 设置内存图层的 CRS 和属性字段
+        memory_layer.setCrs(target_crs)
+        memory_layer.dataProvider().addAttributes(layer.fields())  # 复制字段
+        memory_layer.updateFields()
+        # 遍历原图层的所有要素,逐个转换几何并添加到内存图层
+        features = []
+        for feature in layer.getFeatures():
+            new_feature = QgsFeature(feature)  # 复制属性
+            geom = feature.geometry()
+            if geom:  # 检查几何是否有效
+                geom.transform(transform)  # 转换几何坐标
+                new_feature.setGeometry(geom)
+            features.append(new_feature)
+        # 将转换后的要素添加到内存图层
+        memory_layer.dataProvider().addFeatures(features)
         # TODO 构造连接到Spatialite数据库的URI
         uri = QgsDataSourceUri()
         uri.setDatabase(self.spatialite_db_path)
@@ -307,10 +335,11 @@ class GdalAlgorithm(QgsProcessingAlgorithm):
         options.driverName = "SQLite"
         options.layerName = table_name
         options.fileEncoding = "UTF-8"
+        # options.crs = target_crs
         options.actionOnExistingFile = QgsVectorFileWriter.CreateOrOverwriteLayer
         # TODO 将QgsVectorLayer导入到spatialite并指定表名
-        result = QgsVectorFileWriter.writeAsVectorFormatV2(layer, self.spatialite_db_path,
-                                                           QgsCoordinateTransformContext(), options)
+        result = QgsVectorFileWriter.writeAsVectorFormatV2(memory_layer, self.spatialite_db_path,
+                                                           QgsProject.instance().transformContext(), options)
         return result
 
     # 将VectorLayer导出到文件
@@ -335,6 +364,7 @@ class GdalAlgorithm(QgsProcessingAlgorithm):
                                                            QgsCoordinateTransformContext(), export_options)
         if result[0] != QgsVectorFileWriter.NoError:
             print(f"Failed to export processed layer to SHP file.")
+            print(result)
 
     # 拓扑检查成功,没有错误项
     def topologySuccessWithNone(self):
@@ -343,7 +373,7 @@ class GdalAlgorithm(QgsProcessingAlgorithm):
             "结论": "符合"
         }
 
-    #拓扑检查成功
+    # 拓扑检查成功
     def topologySuccess(self, count, reportpath):
         return {
             "状态": "拓扑检查成功",

+ 42 - 42
processing/algs/gdal/GdalAlgorithmProvider.py

@@ -99,48 +99,48 @@ from .ExportVectorByMask import ExportVectorByMask
 from .ExportRasterByMask import ExportRasterByMask
 from .VectorProject import VectorProject
 from .LicenseMake import LicenseMake
-from .A00 import A00
-from .A01 import A01
-from .A02 import A02
-from .A03 import A03
-from .A04 import A04
-from .A05 import A05
-from .P00 import P00
-from .P01 import P01
-from .L00 import L00
-from .L01 import L01
-from .L02 import L02
-from .L03 import L03
-from .L04 import L04
-from .L05 import L05
-from .L06 import L06
-from .L07 import L07
-from .L08 import L08
-from .L09 import L09
-from .L10 import L10
-from .PP01 import PP01
-from .PP02 import PP02
-from .PL01 import PL01
-from .PL02 import PL02
-from .PA01 import PA01
-from .PA02 import PA02
-from .PA03 import PA03
-from .LP01 import LP01
-from .LL01 import LL01
-from .LL02 import LL02
-from .LL03 import LL03
-from .LL04 import LL04
-from .LA01 import LA01
-from .LA02 import LA02
-from .LA03 import LA03
-from .AP01 import AP01
-from .AP02 import AP02
-from .AL01 import AL01
-from .AA01 import AA01
-from .AA02 import AA02
-from .AA03 import AA03
-from .AA04 import AA04
-from .AA05 import AA05
+from .Topology.A00 import A00
+from .Topology.A01 import A01
+from .Topology.A02 import A02
+from .Topology.A03 import A03
+from .Topology.A04 import A04
+from .Topology.A05 import A05
+from .Topology.P00 import P00
+from .Topology.P01 import P01
+from .Topology.L00 import L00
+from .Topology.L01 import L01
+from .Topology.L02 import L02
+from .Topology.L03 import L03
+from .Topology.L04 import L04
+from .Topology.L05 import L05
+from .Topology.L06 import L06
+from .Topology.L07 import L07
+from .Topology.L08 import L08
+from .Topology.L09 import L09
+from .Topology.L10 import L10
+from .Topology.PP01 import PP01
+from .Topology.PP02 import PP02
+from .Topology.PL01 import PL01
+from .Topology.PL02 import PL02
+from .Topology.PA01 import PA01
+from .Topology.PA02 import PA02
+from .Topology.PA03 import PA03
+from .Topology.LP01 import LP01
+from .Topology.LL01 import LL01
+from .Topology.LL02 import LL02
+from .Topology.LL03 import LL03
+from .Topology.LL04 import LL04
+from .Topology.LA01 import LA01
+from .Topology.LA02 import LA02
+from .Topology.LA03 import LA03
+from .Topology.AP01 import AP01
+from .Topology.AP02 import AP02
+from .Topology.AL01 import AL01
+from .Topology.AA01 import AA01
+from .Topology.AA02 import AA02
+from .Topology.AA03 import AA03
+from .Topology.AA04 import AA04
+from .Topology.AA05 import AA05
 from .topologycheck import TopologyCheck
 
 # from .ogr2ogrtabletopostgislist import Ogr2OgrTableToPostGisList

+ 3 - 4
processing/algs/gdal/A00.py → processing/algs/gdal/Topology/A00.py

@@ -62,8 +62,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -94,7 +93,7 @@ class A00(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -139,7 +138,7 @@ class A00(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/A01.py → processing/algs/gdal/Topology/A01.py

@@ -63,8 +63,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -95,7 +94,7 @@ class A01(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -140,7 +139,7 @@ class A01(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/A02.py → processing/algs/gdal/Topology/A02.py

@@ -63,8 +63,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -95,7 +94,7 @@ class A02(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -140,7 +139,7 @@ class A02(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/A03.py → processing/algs/gdal/Topology/A03.py

@@ -63,8 +63,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -95,7 +94,7 @@ class A03(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -140,7 +139,7 @@ class A03(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/A04.py → processing/algs/gdal/Topology/A04.py

@@ -63,8 +63,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -95,7 +94,7 @@ class A04(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -140,7 +139,7 @@ class A04(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/A05.py → processing/algs/gdal/Topology/A05.py

@@ -63,8 +63,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -101,7 +100,7 @@ class A05(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -148,7 +147,7 @@ class A05(GdalAlgorithm):
         self.TOPOLOGYPARAMS["tolerance"] = str(tolerance)
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/AA01.py → processing/algs/gdal/Topology/AA01.py

@@ -63,8 +63,7 @@ from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -101,7 +100,7 @@ class AA01(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -159,7 +158,7 @@ class AA01(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/AA02.py → processing/algs/gdal/Topology/AA02.py

@@ -62,8 +62,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -100,7 +99,7 @@ class AA02(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -158,7 +157,7 @@ class AA02(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/AA03.py → processing/algs/gdal/Topology/AA03.py

@@ -62,8 +62,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -100,7 +99,7 @@ class AA03(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -158,7 +157,7 @@ class AA03(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/AA04.py → processing/algs/gdal/Topology/AA04.py

@@ -62,8 +62,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -100,7 +99,7 @@ class AA04(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -158,7 +157,7 @@ class AA04(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/AA05.py → processing/algs/gdal/Topology/AA05.py

@@ -62,8 +62,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -100,7 +99,7 @@ class AA05(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -158,7 +157,7 @@ class AA05(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/AL01.py → processing/algs/gdal/Topology/AL01.py

@@ -62,8 +62,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -100,7 +99,7 @@ class AL01(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -158,7 +157,7 @@ class AL01(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/AP01.py → processing/algs/gdal/Topology/AP01.py

@@ -62,8 +62,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -100,7 +99,7 @@ class AP01(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -158,7 +157,7 @@ class AP01(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/AP02.py → processing/algs/gdal/Topology/AP02.py

@@ -62,8 +62,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -100,7 +99,7 @@ class AP02(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -158,7 +157,7 @@ class AP02(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/L00.py → processing/algs/gdal/Topology/L00.py

@@ -62,8 +62,7 @@ from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescription, getTopoCheckNote)
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -94,7 +93,7 @@ class L00(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -139,7 +138,7 @@ class L00(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/L01.py → processing/algs/gdal/Topology/L01.py

@@ -62,8 +62,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -94,7 +93,7 @@ class L01(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -139,7 +138,7 @@ class L01(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/L02.py → processing/algs/gdal/Topology/L02.py

@@ -62,8 +62,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -94,7 +93,7 @@ class L02(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -139,7 +138,7 @@ class L02(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/L03.py → processing/algs/gdal/Topology/L03.py

@@ -62,8 +62,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -94,7 +93,7 @@ class L03(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -139,7 +138,7 @@ class L03(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/L04.py → processing/algs/gdal/Topology/L04.py

@@ -62,8 +62,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -94,7 +93,7 @@ class L04(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -139,7 +138,7 @@ class L04(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/L05.py → processing/algs/gdal/Topology/L05.py

@@ -62,8 +62,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -94,7 +93,7 @@ class L05(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -139,7 +138,7 @@ class L05(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/L06.py → processing/algs/gdal/Topology/L06.py

@@ -63,8 +63,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -101,7 +100,7 @@ class L06(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -148,7 +147,7 @@ class L06(GdalAlgorithm):
         self.TOPOLOGYPARAMS["tolerance"] = str(tolerance)
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/L07.py → processing/algs/gdal/Topology/L07.py

@@ -62,8 +62,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -94,7 +93,7 @@ class L07(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -139,7 +138,7 @@ class L07(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/L08.py → processing/algs/gdal/Topology/L08.py

@@ -62,8 +62,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -94,7 +93,7 @@ class L08(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -139,7 +138,7 @@ class L08(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/L09.py → processing/algs/gdal/Topology/L09.py

@@ -62,8 +62,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -94,7 +93,7 @@ class L09(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -139,7 +138,7 @@ class L09(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/L10.py → processing/algs/gdal/Topology/L10.py

@@ -63,8 +63,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -101,7 +100,7 @@ class L10(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -148,7 +147,7 @@ class L10(GdalAlgorithm):
         self.TOPOLOGYPARAMS["tolerance"] = str(tolerance)
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/LA01.py → processing/algs/gdal/Topology/LA01.py

@@ -62,8 +62,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -100,7 +99,7 @@ class LA01(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -158,7 +157,7 @@ class LA01(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/LA02.py → processing/algs/gdal/Topology/LA02.py

@@ -62,8 +62,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -100,7 +99,7 @@ class LA02(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -158,7 +157,7 @@ class LA02(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/LA03.py → processing/algs/gdal/Topology/LA03.py

@@ -62,8 +62,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -100,7 +99,7 @@ class LA03(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -158,7 +157,7 @@ class LA03(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/LL01.py → processing/algs/gdal/Topology/LL01.py

@@ -62,8 +62,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -100,7 +99,7 @@ class LL01(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -158,7 +157,7 @@ class LL01(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/LL02.py → processing/algs/gdal/Topology/LL02.py

@@ -62,8 +62,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -100,7 +99,7 @@ class LL02(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -158,7 +157,7 @@ class LL02(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/LL03.py → processing/algs/gdal/Topology/LL03.py

@@ -62,8 +62,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -100,7 +99,7 @@ class LL03(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -158,7 +157,7 @@ class LL03(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/LL04.py → processing/algs/gdal/Topology/LL04.py

@@ -62,8 +62,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -100,7 +99,7 @@ class LL04(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -158,7 +157,7 @@ class LL04(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/LP01.py → processing/algs/gdal/Topology/LP01.py

@@ -62,8 +62,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -100,7 +99,7 @@ class LP01(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -158,7 +157,7 @@ class LP01(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/P00.py → processing/algs/gdal/Topology/P00.py

@@ -62,8 +62,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -94,7 +93,7 @@ class P00(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -139,7 +138,7 @@ class P00(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/P01.py → processing/algs/gdal/Topology/P01.py

@@ -62,8 +62,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -94,7 +93,7 @@ class P01(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -139,7 +138,7 @@ class P01(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/PA01.py → processing/algs/gdal/Topology/PA01.py

@@ -62,8 +62,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -100,7 +99,7 @@ class PA01(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -158,7 +157,7 @@ class PA01(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/PA02.py → processing/algs/gdal/Topology/PA02.py

@@ -62,8 +62,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -100,7 +99,7 @@ class PA02(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -158,7 +157,7 @@ class PA02(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/PA03.py → processing/algs/gdal/Topology/PA03.py

@@ -62,8 +62,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 import sqlite3
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -100,7 +99,7 @@ class PA03(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -158,7 +157,7 @@ class PA03(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/PL01.py → processing/algs/gdal/Topology/PL01.py

@@ -62,8 +62,7 @@ from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescription, getTopoCheckNote)
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -100,7 +99,7 @@ class PL01(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -158,7 +157,7 @@ class PL01(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/PL02.py → processing/algs/gdal/Topology/PL02.py

@@ -62,8 +62,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -100,7 +99,7 @@ class PL02(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -158,7 +157,7 @@ class PL02(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/PP01.py → processing/algs/gdal/Topology/PP01.py

@@ -62,8 +62,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -100,7 +99,7 @@ class PP01(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -158,7 +157,7 @@ class PP01(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 3 - 4
processing/algs/gdal/PP02.py → processing/algs/gdal/Topology/PP02.py

@@ -62,8 +62,7 @@ from processing.tools.topology.read import (getTopoCheckSQL, getTopoCheckDescrip
 from processing.tools.SpatiaLite.SpatiaLite import SpatiaLiteUtils
 import sqlite3
 
-pluginPath = os.path.normpath(os.path.join(
-    os.path.split(os.path.dirname(__file__))[0], os.pardir))
+pluginPath = os.path.dirname(os.path.abspath(__file__))
 gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
 gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
 
@@ -100,7 +99,7 @@ class PP02(GdalAlgorithm):
         return self.TOPOLOGYTYPE
 
     def icon(self):
-        return QIcon(os.path.join(pluginPath, 'images', 'dbms', 'topology.png'))
+        return QIcon(os.path.join(pluginPath, 'topology.png'))
 
     def displayName(self):
         return self.tr(getTopoCheckNote(self.TOPOLOGYTYPE))
@@ -158,7 +157,7 @@ class PP02(GdalAlgorithm):
         # TODO SQL语句
         sql = getTopoCheckSQL(self.TOPOLOGYTYPE, self.TOPOLOGYPARAMS)
         try:
-            dbutils.executescript(f"{sql}")
+            dbutils.executescript(f"{sql}", self.TOPOLOGYPARAMS)
         except sqlite3.Error as e:
             return {
                 "状态": "拓扑检查失败",

+ 0 - 0
processing/algs/gdal/Topology/__init__.py


BIN
processing/algs/gdal/Topology/topology.png


+ 37 - 7
processing/tools/SpatiaLite/SpatiaLite.py

@@ -29,37 +29,62 @@ class SpatiaLiteUtils:
         rows = self.cursor.fetchall()
         return rows
 
-    def executescript(self,sql):
+    def executescript(self, sql, params):
         self.cursor.executescript(sql)
         print(f"Script executed successfully.{sql}")
+        print(f"同步输入输出表字段信息及属性关联")
+        tables = params["intable_s"]
+        tablet = params["outtable"]
+        self.synchronizeFields(tables=tables, tablet=tablet)
+        print(f"{tables}字段和属性已关联同步更新到{tablet}")
 
     def enable_load_extension(self, bool):
         self.conn.enable_load_extension(bool)
 
+    # 同步字段
+    def synchronizeFields(self, tables, tablet):
+        # 获取 tables 的字段信息
+        self.cursor.execute(f"pragma table_info({tables});")
+        fields = self.cursor.fetchall()
+        # 添加字段到 tablet
+        insertfield = []
+        for field in fields:
+            field_name, field_type = field[1], field[2]
+            if field_name != "id" and field_name != "ogc_fid" and field_name != "objectid" and field_name.lower() != "geometry":  # 排除 id 字段
+                insertfield.append(field_name)
+                self.cursor.execute(f"alter table {tablet} add column {field_name} {field_type};")
+        # 更新 tablet 中的数据
+        update_query = f"update {tablet} set "
+        update_query += ", ".join(
+            [f"{field} = (select {field} from {tables} where ogc_fid = {tablet}.sid)" for field in insertfield])
+        print(update_query)
+        self.cursor.execute(update_query)
+        self.conn.commit()
+
     def queryCount(self, tablename):
         self.cursor.execute(f"SELECT count(1) FROM {tablename};")
         rows = self.cursor.fetchall()
         return rows[0][0]
 
-    #重置数据库
+    # 重置数据库
     def resetDb(self):
         # 获取所有表名,排除系统表
         self.cursor.execute("""-- 删除所有表
         select 'drop table if exists ' || name || ';' 
         from sqlite_master 
-        where type='table' and name not like 'sqlite_%' and name like '%topology%'
+        where type='table' and name not like 'sqlite_%' and (name like '%topology%' or name like '%temp%')
         
         union all 
         -- 删除所有索引
         select 'drop index if exists ' || name || ';'
         from sqlite_master
-        where type='index' and name like '%topology%'
+        where type='index' and (name like '%topology%' or name like '%temp%')
         
         union all 
         -- 删除所有视图
         select 'drop view if exists ' || name || ';'
         from sqlite_master
-        where type='view' and name like '%temp%'
+        where type='view' and (name like '%temp%' or name like '%view%')
         
         union all 
         -- 删除所有触发器
@@ -68,11 +93,16 @@ class SpatiaLiteUtils:
         where type='trigger' and name like '%topology%';""")
         tables = self.cursor.fetchall()
         # 循环删除每个表
-        for sql in tables:
-            self.cursor.execute(sql[0])
+        # for sql in tables:
+        #     self.cursor.execute(sql[0])
         # 提交更改并关闭连接
         self.conn.commit()
 
     def closeDb(self):
         self.cursor.close()
         self.conn.close()
+
+# db = SpatiaLiteUtils(dbpath="D:\\temp\\output.sqlite")
+# db.synchronizeFields(tables="topology_in_table_5226c4d3c7a84b2e901c5032cbd299fe", tablet="topology_out_table_5226c4d3c7a84b2e901c5032cbd299fe")
+# # db.resetDb()
+# db.closeDb()

+ 2 - 4
processing/tools/topology/read.py

@@ -11,10 +11,8 @@ def read_yaml_file(filepath):
         data = yaml.load(file, Loader=yaml.FullLoader)
     return data
 
-
-current_file_path = os.path.abspath(__file__)
 # 获取当前脚本所在的目录
-current_dir = os.path.dirname(current_file_path)
+current_dir = os.path.dirname(os.path.abspath(__file__))
 topoCheckData = read_yaml_file(f"{current_dir}\\topoCheck.yaml")
 # print(topoCheckData)
 # print(topoCheckData["topoCheck"]["A03"])
@@ -33,7 +31,7 @@ def getTopoCheckSQL(type, my_dict):
         value = my_dict[key]
         k = f"@{key}@"
         tempSql = tempSql.replace(k, value)
-    print(tempSql)
+    # print(tempSql)
     return tempSql
 
 

+ 5 - 5
processing/tools/topology/topoCheck.yaml

@@ -932,11 +932,11 @@ topoCheck:
     RARG: [ '@intable_s@=输入表的名字','@outtable@=输出表的名字' ]
     RUNTYPE: repl
     ALG: "drop table if exists @outtable@; 
-            create table @outtable@(ID INTEGER PRIMARY KEY not null,UUID VARCHAR(128),sid,rulecode,geometry POLYGON);
+            create table @outtable@(ID INTEGER PRIMARY KEY not null,UUID VARCHAR(128),sid,rulecode,geometry MULTIPOLYGON);
             insert into @outtable@
             select null,createuuid(),ogc_fid sid,'A00' rulecode, geometry geometry
             from @intable_s@ where isvalid(geometry) <> 1;
-            select recovergeometrycolumn('@outtable@','geometry',(select srid from geometry_columns where f_table_name = '@intable_s@') ,'POLYGON',(select case when coord_dimension == 2 then 'XY' else 'XYZ' end from geometry_columns where f_table_name = '@intable_s@'));"
+            select recovergeometrycolumn('@outtable@','geometry',(select srid from geometry_columns where f_table_name = '@intable_s@') ,'MULTIPOLYGON',(select case when coord_dimension == 2 then 'XY' else 'XYZ' end from geometry_columns where f_table_name = '@intable_s@'));"
     UI:
       inparam:
         - type: vector
@@ -1180,7 +1180,7 @@ topoCheck:
     RARG: [ '@intable_s@=输入表的名字','@outtable@=输出表的名字' ]
     RUNTYPE: repl
     ALG: "drop table if exists @outtable@; 
-            create table @outtable@(ID INTEGER PRIMARY KEY not null,UUID VARCHAR(128),sid,rulecode,geometry POLYGON);
+            create table @outtable@(ID INTEGER PRIMARY KEY not null,UUID VARCHAR(128),sid,rulecode,geometry MULTIPOLYGON);
             insert into @outtable@
             select null,createuuid(),
             ogc_fid sid,
@@ -1189,7 +1189,7 @@ topoCheck:
             from @intable_s@
             where ST_NumPoints(linesfromrings(geometry)) > 3
             and ST_SelfIntersections(linesfromrings(geometry)) is not null;
-            select recovergeometrycolumn('@outtable@', 'geometry', (select srid from geometry_columns where f_table_name = '@intable_s@'), 'POLYGON', (select case when coord_dimension == 2 then 'XY' else 'XYZ' end from geometry_columns where f_table_name = '@intable_s@'));
+            select recovergeometrycolumn('@outtable@', 'geometry', (select srid from geometry_columns where f_table_name = '@intable_s@'), 'MULTIPOLYGON', (select case when coord_dimension == 2 then 'XY' else 'XYZ' end from geometry_columns where f_table_name = '@intable_s@'));
             "
     UI:
       inparam:
@@ -1729,7 +1729,7 @@ topoCheck:
             and a.rowid = c.rowid
             and b.rowid = d.rowid
             and intersects(c.geometry, d.geometry)
-            group by sid)
+            group by c.ogc_fid)
             insert into @outtable@
             select null,uuid,sid,did,rulecode,geometry from t;
             select recovergeometrycolumn('@outtable@', 'geometry', (select srid from geometry_columns where f_table_name = '@intable_s@'), 'POINT', (select case when coord_dimension == 2 then 'XY' else 'XYZ' end from geometry_columns where f_table_name = '@intable_s@'));"