python代码批量将utm,zone_43N投影下30m分辨率的影像转换为wgs84投影,且转换后的像元分辨率为0.0003度
时间: 2024-09-24 11:27:59 浏览: 38
批量转换Python代码,通常会涉及到地理空间数据处理库如GDAL或Rasterio,因为它们支持读取、操作和写入各种投影的遥感影像。以下是一个基于Rasterio的基本例子,假设你已经有一个包含UTM Zone 43N影像的文件:
```python
from rasterio import.open, transform
import rasterio.warp
def batch_transform(input_file, output_file, dst_crs="EPSG:4326", resampling_method="cubic"):
with open(input_file, 'r') as src:
src_dataset = src.read()
src_transform = src.transform
src_crs = src.crs
# 将UTM坐标系转换为目标WGS84投影
if str(src_crs).startswith('EPSG'):
if int(str(src_crs)[9:]) == 32643: # 对于Zone 43N
dst_transform, width, height = rasterio.warp.calculate_default_transform(src_crs, dst_crs, src.width, src.height, *src.bounds)
else:
raise ValueError("Unsupported source CRS")
# 使用新的transform和crs创建一个新的目标dataset
destination_profile = src.meta.copy()
destination_profile.update({
'driver': 'GTiff',
'height': height,
'width': width,
'transform': dst_transform,
'crs': dst_crs,
'res': (0.0003, 0.0003), # 设置新的分辨率
'nodata': src.nodata,
})
with rasterio.open(output_file, 'w', **destination_profile) as dst:
dst.write(src_dataset, indexes=1) # 一般遥感图像只有一个band,这里写入第1个band
# 使用函数,传入源文件和输出文件路径
input_file = "path/to/your/input.tif"
output_file = "path/to/output/file.tif"
batch_transform(input_file, output_file)
阅读全文