gdal 中将影像由地理坐标转为投影坐标
时间: 2023-07-29 09:07:45 浏览: 147
使用 GDAL 库将影像由地理坐标转为投影坐标,需要按照以下步骤:
1. 安装 GDAL 库:可以使用 pip install gdal 命令来安装。
2. 打开影像:使用 gdal.Open() 函数来打开需要转换的影像。
3. 获取影像的地理信息:使用 GetGeoTransform() 函数获取影像的地理信息,包括像素分辨率和左上角坐标。
4. 获取目标投影信息:可以通过查询 EPSG 编码或者定义投影信息的方式来获取目标投影信息。
5. 创建目标投影坐标系的 Proj 对象:使用 pyproj.Proj() 函数来创建目标投影坐标系的 Proj 对象。
6. 获取源影像的地理坐标:使用影像的地理信息和像素坐标来计算每个像素的地理坐标。
7. 将地理坐标转换成目标投影坐标:使用 Proj 对象的 transform() 函数将地理坐标转换成目标投影坐标。
8. 创建目标投影影像:使用 gdal.Warp() 函数创建目标投影影像。
下面是一个示例代码,演示如何将 WGS84 坐标系下的影像转换成 UTM 坐标系下的影像:
``` python
import gdal
import pyproj
# 定义源影像路径和目标影像路径
src_path = 'source.tif'
dst_path = 'target.tif'
# 打开源影像
src_ds = gdal.Open(src_path)
# 获取源影像的地理信息
geotransform = src_ds.GetGeoTransform()
# 定义目标投影信息
dst_proj_info = 'EPSG:32651'
# 创建目标投影坐标系的 Proj 对象
dst_proj = pyproj.Proj(dst_proj_info)
# 获取源影像的地理坐标
rows, cols = src_ds.RasterYSize, src_ds.RasterXSize
lon_arr = []
lat_arr = []
for i in range(rows):
for j in range(cols):
x = geotransform[0] + j * geotransform[1] + i * geotransform[2]
y = geotransform[3] + j * geotransform[4] + i * geotransform[5]
lon, lat = dst_proj(x, y, inverse=True)
lon_arr.append(lon)
lat_arr.append(lat)
# 将地理坐标转换成目标投影坐标
x_arr, y_arr = pyproj.transform(pyproj.Proj(init='epsg:4326'), dst_proj, lon_arr, lat_arr)
# 创建目标投影影像
gdal.Warp(dst_path, src_ds, format='GTiff', dstSRS=dst_proj_info)
```
需要注意的是,在实际使用中,需要根据具体的业务需求和数据特点,来选择合适的投影转换方式和参数。同时,还需要判断影像是否包含地理坐标信息。
阅读全文