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