python 使用proj 转换影像
时间: 2024-01-10 10:11:34 浏览: 140
基于python的图像变换
在Python中,可以使用`rasterio`库和`pyproj`库配合使用来实现影像的坐标转换。以下是一个示例代码,将一个影像从WGS84投影坐标系转换为UTM投影坐标系:
```python
import rasterio
from rasterio.warp import calculate_default_transform, reproject, Resampling
import pyproj
# 打开待转换的影像
with rasterio.open('input.tif') as src:
# 获取原始影像的投影坐标系和尺寸
src_proj = src.crs
src_transform = src.transform
src_width = src.width
src_height = src.height
# 获取目标影像的投影坐标系和尺寸
dst_proj = pyproj.Proj('EPSG:32631') # 目标投影坐标系,这里以UTM投影坐标系的EPSG代码(32631)为例
dst_transform, dst_width, dst_height = calculate_default_transform(src_proj, dst_proj, src_width, src_height, *src.bounds)
# 创建输出影像
dst_profile = src.profile.copy()
dst_profile.update({
'crs': dst_proj.srs,
'transform': dst_transform,
'width': dst_width,
'height': dst_height
})
with rasterio.open('output.tif', 'w', **dst_profile) as dst:
# 执行坐标转换
reproject(
source=rasterio.band(src, 1),
destination=rasterio.band(dst, 1),
src_transform=src_transform,
src_crs=src_proj,
dst_transform=dst_transform,
dst_crs=dst_proj,
resampling=Resampling.bilinear
)
```
以上代码中,`rasterio.open()`用于打开影像,`calculate_default_transform()`用于计算坐标转换的目标投影坐标系和尺寸,`reproject()`用于执行坐标转换。其中,`Resampling.bilinear`是重采样方法,可以根据需要修改。执行完上述代码后,输出影像的投影坐标系就被转换为UTM投影坐标系了。
阅读全文