wanger 3 mesi fa
parent
commit
c5172db160

+ 2 - 1
processing/algs/gdal/GdalAlgorithm.py

@@ -280,6 +280,7 @@ class GdalAlgorithm(QgsProcessingAlgorithm):
             fileliststr = getFileListPrint()
             pgconn = PostgreSQL(schema='base')
             ogrLayer = ""
+            layername = ""
             if parameters.get("SOURCE_TYPE") == "vector":
                 ogrLayer, layername = self.getOgrCompatibleSource(self.INPUT, parameters, context, feedback, None)
             elif parameters.get("SOURCE_TYPE") == "raster":
@@ -287,7 +288,7 @@ class GdalAlgorithm(QgsProcessingAlgorithm):
                 ogrLayer = raster_layer.source()
             print(ogrLayer)
             pgconn.metadataStorage(parameters, ssxzqh, fileliststr, self.ywlxs[parameters.get("VECTOR_YWLX")],
-                                   self.depts[parameters.get("VECTOR_GLBM")], ogrLayer,
+                                   self.depts[parameters.get("VECTOR_GLBM")], ogrLayer, layername,
                                    self.zymls[parameters.get("VECTOR_ZYML")])
             pgconn.close()
         return results

+ 2 - 2
processing/algs/gdal/GdalAlgorithmDialog.py

@@ -82,7 +82,7 @@ class GdalParametersPanel(ParametersPanel):
         layout.setMargin(0)
         layout.setSpacing(6)
 
-        gdalHidden = False
+        gdalHidden = True
         loop = True
 
         if algname == "postgistogeoserver":
@@ -132,7 +132,7 @@ class GdalParametersPanel(ParametersPanel):
         layout.addWidget(label)
         self.text = QPlainTextEdit()
         self.text.setReadOnly(True)
-        # self.text.setHidden(gdalHidden)
+        self.text.setHidden(gdalHidden)
         layout.addWidget(self.text)
 
         w.setLayout(layout)

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

@@ -267,7 +267,7 @@ class GdalAlgorithmProvider(QgsProcessingProvider):
             ExportRasterByMask(),
             VectorProject(),
             LicenseMake(),
-            TopologyCheck(),
+            # TopologyCheck(),
             A00(),
             A01(),
             A02(),

+ 21 - 5
processing/algs/gdal/rastertopostgislist.py

@@ -20,7 +20,7 @@ __date__ = 'November 2024'
 __copyright__ = '(C) 2024, wanger'
 
 import os
-
+import re
 from PyQt5.QtGui import QIcon
 
 from qgis._core import QgsProcessingParameterFile
@@ -273,8 +273,8 @@ class Ogr2PostGisList(GdalAlgorithm):
         else:
             table = f'{schema}.{table}'
 
-        arguments.append(file)
-        arguments.append(table)
+        arguments.append(f'"{file}"')
+        arguments.append(f'"{table}"')
 
         # postgis相关
         arguments.append('|')
@@ -293,9 +293,25 @@ class Ogr2PostGisList(GdalAlgorithm):
         # return ['ogrinfo D:\gisdata\HaiNanXZQ\XZQH3857.shp']
         if isWindows():
             return ['cmd.exe', '/C ', 'raster2pgsql.exe',
-                    GdalUtils.escapeAndJoin(arguments)]
+                    self.escapeAndJoin(arguments)]
         else:
-            return ['raster2pgsql', GdalUtils.escapeAndJoin(arguments)]
+            return ['raster2pgsql', self.escapeAndJoin(arguments)]
+    def escapeAndJoin(self, strList):
+        escChars = [' ', '&', '(', ')', '"', ';']
+        joined = ''
+        for s in strList:
+            if not isinstance(s, str):
+                s = str(s)
+            # don't escape if command starts with - and isn't a negative number, e.g. -9999
+            if s and re.match(r'^([^-]|-\d)', s) and any(c in s for c in escChars):
+                escaped = s
+                # escaped = '"' + s.replace('\\', '\\\\').replace('"', '"""') \
+                #           + '"'
+            else:
+                escaped = s
+            if escaped is not None:
+                joined += escaped + ' '
+        return joined.strip()
 
     def commandName(self):
         return "raster2pgsql"

+ 4 - 2
processing/tools/GeoServer/GeoServerRest.py

@@ -2,8 +2,10 @@
 from Geoserver import Geoserver
 
 # 连接GeoServer
-# geo = Geoserver('http://192.168.60.52:28085/geoserver', username='admin', password='geoserver')
-
+geo = Geoserver('http://127.0.0.1:28085/geoserver', username='admin', password='geoserver')
+geo.create_datastore(name="wuchuan0705", path=r'D:\temp\wuchuan0705.shp', workspace='spot')
+geo.publish_featurestore(workspace='spot', store_name='wuchuan0705', pg_table='wuchuan0705')
+geo.publish_style(layer_name='wuchuan0705', style_name='spot', workspace='spot')
 # geo.create_coveragestyle(raster_path=r'D:\gisdata\tif\xyq.tif', style_name='style_raster', workspace='demo', color_ramp='RdBu_r')
 # geo.publish_style(layer_name='demo_tiff', style_name='style_raster', workspace='demo')
 

+ 17 - 15
processing/tools/PostgreSQL/PgExxcute.py

@@ -1,19 +1,21 @@
 # -*- coding: utf-8 -*-
-# from PostgreSQL import PostgreSQL
 
-import sys
+__author__ = 'wanger'
+__date__ = '2024-08-20'
+__copyright__ = '(C) 2024 by siwei'
+__revision__ = '1.0'
 
-print(sys.getdefaultencoding())
+import psycopg2
 
-import os
-
-# 获取PYTHONIOENCODING的值
-python_io_encoding = os.getenv('PYTHONIOENCODING')
-
-# 打印结果
-print(f"PYTHONIOENCODING: {python_io_encoding}")
-# pgconn = PostgreSQL(schema='gis')
-# pgconn = PostgreSQL()
-# rows = pgconn.execute(sql="SELECT 省,类型 from \"XZQH3857\"")
-# print(rows)
-# pgconn.close()
+# 配置数据库连接参数并指定schema
+connparams = {
+    "dbname": "real3d",
+    "user": "postgres",
+    "password": "postgis",
+    "host": "192.168.60.62",
+    "port": "5432",
+    "options": "-c search_path=otherSchema,base"
+}
+conn = psycopg2.connect(**connparams)
+# 创建一个游标对象
+cur = conn.cursor()

+ 16 - 6
processing/tools/PostgreSQL/PostgreSQL.py

@@ -93,17 +93,27 @@ class PostgreSQL:
         self.conn.commit()
 
     # 元数据入库,参数parameters
-    def metadataStorage(self, parameters, ssxzqh, fileliststr, ywlx, glbm, ogrLayer, zyml):
+    def metadataStorage(self, parameters, ssxzqh, fileliststr, ywlx, glbm, ogrLayer, layername, zyml):
         record_id = ""
         id = uuid.uuid4().__str__()
         id = id.replace("-", "")
-        # print(parameters)
-        if (parameters.get("TABLE") is None or parameters.get("TABLE") == "") and ogrLayer is not None:
-            record_id = parameters.get("SCHEMA") + "." + getInputFileName(ogrLayer).lower()
-        elif ogrLayer is not None:
-            record_id = parameters.get("SCHEMA") + "." + ogrLayer.lower()
+        print(ogrLayer)
+        print(layername)
+        print(parameters)
+        if parameters.get("TABLE") is None or parameters.get("TABLE") == "":
+            if layername is not None and layername != "":
+                record_id = parameters.get("SCHEMA") + "." + layername.lower()
+            else:
+                record_id = parameters.get("SCHEMA") + "." + getInputFileName(ogrLayer).lower()
         else:
             record_id = parameters.get("SCHEMA") + "." + parameters.get("TABLE")
+
+        # if (parameters.get("TABLE") is None or parameters.get("TABLE") == "") and ogrLayer is not None:
+        #     record_id = parameters.get("SCHEMA") + "." + getInputFileName(ogrLayer).lower()
+        # elif ogrLayer is not None:
+        #     record_id = parameters.get("SCHEMA") + "." + ogrLayer.lower()
+        # else:
+        #     record_id = parameters.get("SCHEMA") + "." + parameters.get("TABLE")
         table_alias = parameters.get("TABLE_ALIAS")
         if table_alias is not None and table_alias != '':  # 配置表别名
             self.setTableAlias(table=self.getTableName(recordid=record_id),

+ 31 - 31
processing/tools/QGS/load.py

@@ -83,37 +83,37 @@ def on_initialization_completed():
     qgis_dir = get_qgis_install_dir()
     licensepath = f"{qgis_dir}\\license.txt"
     # 打开文件并读取内容
-    text = []
-    with open(licensepath, 'r') as file:
-        for line in file:
-            text.append(line.replace('\n', ' '))
-    # 打印文件内容
-    print(text)
-
-    try:
-        # 尝试执行的代码
-        fernet = Fernet(text[0].encode("utf-8"))
-        decrypted_message = fernet.decrypt(text[1].encode("utf-8"))
-        license = decrypted_message.decode('utf-8')
-        licenseDict = str_to_dict(license)
-        host = licenseDict["host"]
-        date = licenseDict["license"]
-
-        time_str = f"{date} 23:59:59"
-        licensetime = str_to_time(time_str)
-        if host != machine_name:
-            licenseError("机器名错误!")
-            exit(1)
-        elif current_time > licensetime:
-            licenseError("许可已过期!")
-            exit(1)
-        else:
-            print("许可正常")
-            # print(f"解密的消息: {decrypted_message.decode('utf-8')}")
-    except Exception as e:
-        # 处理异常的代码
-        licenseError("许可文件解析问题!")
-        exit(1)
+    # text = []
+    # with open(licensepath, 'r') as file:
+    #     for line in file:
+    #         text.append(line.replace('\n', ' '))
+    # # 打印文件内容
+    # print(text)
+    #
+    # try:
+    #     # 尝试执行的代码
+    #     fernet = Fernet(text[0].encode("utf-8"))
+    #     decrypted_message = fernet.decrypt(text[1].encode("utf-8"))
+    #     license = decrypted_message.decode('utf-8')
+    #     licenseDict = str_to_dict(license)
+    #     host = licenseDict["host"]
+    #     date = licenseDict["license"]
+    #
+    #     time_str = f"{date} 23:59:59"
+    #     licensetime = str_to_time(time_str)
+    #     if host != machine_name:
+    #         licenseError("机器名错误!")
+    #         exit(1)
+    #     elif current_time > licensetime:
+    #         licenseError("许可已过期!")
+    #         exit(1)
+    #     else:
+    #         print("许可正常")
+    #         # print(f"解密的消息: {decrypted_message.decode('utf-8')}")
+    # except Exception as e:
+    #     # 处理异常的代码
+    #     licenseError("许可文件解析问题!")
+    #     exit(1)
 
 
 def licenseError(message):