由于传感器角度问题,如果传感器在拍摄时不是完全垂直于地面,即存在倾斜角度,那么拍摄到的图像就会出现歪斜。如下图所示:
这种情况可用python代码解决:
import os
import rasterio
from rasterio.warp import calculate_default_transform, reproject, Resampling
# 定义输入文件夹和输出文件夹路径
input_folder = r'G:\MOD16A3(2014-2024)\xn-4'
output_folder = r'G:\MOD16A3(2014-2024)\xn-4\re'
# 定义目标投影的EPSG代码(例如,WGS84的EPSG代码为4326)
dst_crs = 'EPSG:4326'
# 遍历输入文件夹中的所有TIF文件
for filename in os.listdir(input_folder):
if filename.endswith('.tif') or filename.endswith('.TIF'):
input_path = os.path.join(input_folder, filename)
output_path = os.path.join(output_folder, filename)
with rasterio.open(input_path) as src:
# 计算默认的转换参数
transform, width, height = calculate_default_transform(
src.crs, dst_crs, src.width, src.height, *src.bounds)
# 更新元数据
kwargs = src.meta.copy()
kwargs.update({
'crs': dst_crs,
'transform': transform,
'width': width,
'height': height
})
# 执行重投影
with rasterio.open(output_path, 'w', **kwargs) as dst:
for i in range(1, src.count + 1):
reproject(
source=rasterio.band(src, i),
destination=rasterio.band(dst, i),
src_transform=src.transform,
src_crs=src.crs,
dst_transform=transform,
dst_crs=dst_crs,
resampling=Resampling.nearest)
print("重投影完成!")
运行完后输出的新TIF图像,即为方形栅格: