# -*- 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')