Browse Source

拓扑检查核心SQL算法集成

wanger 7 months ago
parent
commit
bea84c7d6a
2 changed files with 94 additions and 6 deletions
  1. 6 6
      processing/algs/gdal/GdalAlgorithmProvider.py
  2. 88 0
      processing/tools/Raster/Metadata.py

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

@@ -91,9 +91,9 @@ from .postgistogeoserver import Postgistogeoserver
 from .postgisupdate import Postgisupdate
 from .postgisrestore import Postgisrestore
 from .OneSideBuffer import OneSideBuffer
-from .spotfileupload import SpotfileUpload
-from .spotfiledownload import SpotfileDownload
-from .spotfiledelete import SpotfileDelete
+# from .spotfileupload import SpotfileUpload
+# from .spotfiledownload import SpotfileDownload
+# from .spotfiledelete import SpotfileDelete
 from .PointsAlongLines import PointsAlongLines
 from .ExportVectorByMask import ExportVectorByMask
 from .ExportRasterByMask import ExportRasterByMask
@@ -258,9 +258,9 @@ class GdalAlgorithmProvider(QgsProcessingProvider):
             PointsAlongLines(),
             Postgisupdate(),
             Postgisrestore(),
-            SpotfileUpload(),
-            SpotfileDownload(),
-            SpotfileDelete(),
+            # SpotfileUpload(),
+            # SpotfileDownload(),
+            # SpotfileDelete(),
             ExportVectorByMask(),
             ExportRasterByMask(),
             VectorProject(),

+ 88 - 0
processing/tools/Raster/Metadata.py

@@ -0,0 +1,88 @@
+# -*- coding: utf-8 -*-
+
+__author__ = 'wanger'
+__description__ = '批量生成栅格数据元数据表格 EXCEL'
+__date__ = '2024-11-25'
+__copyright__ = '(C) 2024 by siwei'
+__revision__ = '1.0'
+
+from osgeo import gdal, osr
+import openpyxl
+
+# 读取 .img 文件
+filename = 'E:\\projects\\遥感技术部需求\\批量生成元数据\\数据\\分幅成果\\DEM成果\\DEM\\NH48G051053DEMK.img'
+dataset = gdal.Open(filename)
+
+if dataset:
+    # 获取栅格数据的基本信息
+    print(f"Driver: {dataset.GetDriver().ShortName}")
+    print(f"Raster Size: {dataset.RasterXSize} x {dataset.RasterYSize}")
+    print(f"Number of Bands: {dataset.RasterCount}")
+
+    # 获取地理信息
+    geo_transform = dataset.GetGeoTransform()
+    if geo_transform:
+        print(f"GeoTransform: {geo_transform}")
+
+    # 获取投影信息
+    projection = dataset.GetProjection()
+    print(f"Projection: {projection}")
+    # 获取栅格数据的投影信息
+
+    # 创建 SpatialReference 对象并加载投影信息
+    spatial_ref = osr.SpatialReference()
+    spatial_ref.ImportFromWkt(projection)  # 或者使用 ImportFromProj4(projection)
+
+    # 检查投影是否为 UTM 类型,UTM 投影的中央子午线位于 PROJ.4 中的 +lon_0 参数
+    if spatial_ref.IsProjected():
+        proj4 = spatial_ref.ExportToProj4()
+        print(f"Projection PROJ.4: {proj4}")
+
+        # 寻找中央子午线 (lon_0)
+        central_meridian = None
+        for param in proj4.split():
+            if param.startswith('+lon_0'):
+                central_meridian = param.split('=')[1]
+                break
+
+        if central_meridian:
+            print(f"Central Meridian: {central_meridian}")
+        else:
+            print("No central meridian found.")
+
+    # 获取栅格数据的各个波段元数据
+    for band_index in range(1, dataset.RasterCount + 1):
+        band = dataset.GetRasterBand(band_index)
+        print(f"\nBand {band_index}:")
+        print(f"Data type: {gdal.GetDataTypeName(band.DataType)}")
+        print(f"Band min: {band.GetMinimum()}, Band max: {band.GetMaximum()}")
+        print(f"Band NoData Value: {band.GetNoDataValue()}")
+        print(f"Band metadata: {band.GetMetadata()}")
+else:
+    print("Failed to load image.")
+
+
+
+
+
+
+#操作excel
+# filename = 'example.xlsx'
+# workbook = openpyxl.load_workbook(filename)
+# sheet = workbook.active
+# # 定义替换数据的字典
+# replacements = {
+#     "{{name}}": "Bob",
+#     "{{age}}": "40",
+#     "{{address}}": "Paris"
+# }
+# # 遍历单元格,替换占位符
+# for row in sheet.iter_rows():
+#     for cell in row:
+#         if isinstance(cell.value, str):  # 确保单元格内容是字符串
+#             for placeholder, replacement in replacements.items():
+#                 if placeholder in cell.value:
+#                     # 替换占位符
+#                     cell.value = cell.value.replace(placeholder, replacement)
+# # 保存修改后的文件
+# workbook.save('modified_example.xlsx')