如何用python将两个文件夹中的tif数据像元大小和分辨率,坐标统一,以其中的一个文件夹数据为基准,批量裁剪
时间: 2024-03-17 10:46:02 浏览: 243
要实现将两个文件夹中的tif数据像元大小和分辨率,坐标统一,并以其中的一个文件夹数据为基准,批量裁剪,可以使用Python中的GDAL库来处理,具体步骤如下:
1. 导入GDAL库
``` python
from osgeo import gdal, osr
import os
```
2. 获取基准文件的相关信息
``` python
base_file = "path/to/base/file.tif"
base_ds = gdal.Open(base_file)
base_proj = base_ds.GetProjection()
base_geotrans = base_ds.GetGeoTransform()
base_width = base_ds.RasterXSize
base_height = base_ds.RasterYSize
```
3. 遍历待处理文件夹中的tif文件,对每个文件进行裁剪
``` python
src_dir = "path/to/source/folder"
dst_dir = "path/to/destination/folder"
for filename in os.listdir(src_dir):
if filename.endswith(".tif"):
src_file = os.path.join(src_dir, filename)
dst_file = os.path.join(dst_dir, filename)
# 打开源文件
src_ds = gdal.Open(src_file)
src_proj = src_ds.GetProjection()
src_geotrans = src_ds.GetGeoTransform()
src_width = src_ds.RasterXSize
src_height = src_ds.RasterYSize
# 创建目标数据集
driver = gdal.GetDriverByName('GTiff')
target_ds = driver.Create(dst_file, base_width, base_height, 1, gdal.GDT_Float32)
target_ds.SetProjection(base_proj)
target_ds.SetGeoTransform(base_geotrans)
# 重采样
gdal.ReprojectImage(src_ds, target_ds, src_proj, base_proj, gdal.GRA_Bilinear)
# 关闭数据集
src_ds = None
target_ds = None
```
通过以上步骤,可以将待处理文件夹中的tif数据像元大小和分辨率,坐标统一,并以其中的一个文件夹数据为基准,批量裁剪。其中,src_dir和dst_dir分别表示源文件夹和目标文件夹的路径。需要注意的是,以上代码仅仅是一个示例,具体实现需要根据数据集的具体情况进行修改。
阅读全文