python下gdal 影像地理坐标转投影坐标
时间: 2023-10-15 22:06:57 浏览: 204
在Python下使用GDAL库进行影像地理坐标转投影坐标,可以通过以下步骤实现:
1. 导入GDAL库
```python
import gdal
```
2. 打开需要处理的栅格数据
```python
dataset = gdal.Open("input.tif")
```
3. 获取数据集的投影和地理参考信息
```python
projection = dataset.GetProjection()
geotransform = dataset.GetGeoTransform()
```
4. 创建输出数据集
```python
from osgeo import gdalconst
driver = gdal.GetDriverByName("GTiff")
output_dataset = driver.Create("output.tif", dataset.RasterXSize, dataset.RasterYSize, 1, gdalconst.GDT_Float32)
output_dataset.SetProjection(projection)
output_dataset.SetGeoTransform(geotransform)
```
5. 创建坐标转换对象
```python
from osgeo import osr
src_srs = osr.SpatialReference()
src_srs.ImportFromWkt(projection)
dst_srs = osr.SpatialReference()
dst_srs.SetWellKnownGeogCS("WGS84")
coord_transform = osr.CoordinateTransformation(src_srs, dst_srs)
```
6. 读取输入数据集的像素值,并转换为投影坐标
```python
for y in range(dataset.RasterYSize):
for x in range(dataset.RasterXSize):
# 获取像素值
pixel_value = dataset.GetRasterBand(1).ReadAsArray(x, y, 1, 1)[0, 0]
# 将像素坐标转换为地理坐标
geo_x = geotransform[0] + x * geotransform[1] + y * geotransform[2]
geo_y = geotransform[3] + x * geotransform[4] + y * geotransform[5]
# 将地理坐标转换为投影坐标
point = coord_transform.TransformPoint(geo_x, geo_y)
# 将投影坐标写入输出数据集
output_dataset.GetRasterBand(1).WriteArray([[point[0]]], x, y)
```
7. 保存输出数据集
```python
output_dataset.FlushCache()
```
注意,以上代码仅适用于将地理坐标转换为WGS84投影坐标,如果需要将地理坐标转换为其他投影坐标系,需要修改第5步中的dst_srs对象。
阅读全文