python gdal处理遥感影像批量
时间: 2023-09-26 20:14:22 浏览: 217
GDAL遥感影像处理
4星 · 用户满意度95%
使用 Python 中的 GDAL 库可以很方便地批量处理遥感影像。下面是一个简单的示例代码,可以读取指定文件夹下的所有遥感影像,对它们进行裁剪并保存到指定的文件夹中:
```python
import os
from osgeo import gdal
# 设置输入和输出文件夹
input_folder = "/path/to/input/folder"
output_folder = "/path/to/output/folder"
# 设置裁剪区域
xmin, ymin, xmax, ymax = 0, 0, 1000, 1000
# 遍历文件夹中的所有遥感影像
for filename in os.listdir(input_folder):
if filename.endswith(".tif"):
# 打开遥感影像
filepath = os.path.join(input_folder, filename)
dataset = gdal.Open(filepath)
# 获取影像的元数据
geotransform = dataset.GetGeoTransform()
projection = dataset.GetProjection()
# 计算裁剪范围对应的像素坐标
pxmin, pymin = gdal.ApplyGeoTransform(geotransform, xmin, ymin)
pxmax, pymax = gdal.ApplyGeoTransform(geotransform, xmax, ymax)
# 裁剪影像
data = dataset.ReadAsArray(int(pxmin), int(pymin), int(pxmax-pxmin), int(pymax-pymin))
# 创建输出文件
output_filepath = os.path.join(output_folder, filename)
driver = gdal.GetDriverByName("GTiff")
output_dataset = driver.Create(output_filepath, data.shape[1], data.shape[0], dataset.RasterCount, dataset.GetRasterBand(1).DataType)
output_dataset.SetGeoTransform((pxmin, geotransform[1], geotransform[2], pymin, geotransform[4], geotransform[5]))
output_dataset.SetProjection(projection)
# 写入数据
for i in range(dataset.RasterCount):
output_dataset.GetRasterBand(i+1).WriteArray(data[i])
# 关闭数据集
dataset = None
output_dataset = None
```
在上面的代码中,我们首先设置了输入和输出文件夹的路径,以及需要裁剪的区域的范围。然后我们遍历了输入文件夹中的所有遥感影像,并对它们进行了裁剪。在裁剪过程中,我们使用了 GDAL 的一些函数来获取影像的元数据、计算裁剪范围对应的像素坐标、读取数据、创建输出文件并写入数据。最后我们关闭了数据集,释放了内存,结束了程序的运行。
阅读全文