目录
本次分享内容中,我们将介绍如何使用Python计算和裁剪年度和季节的降水栅格数据。本教程主要涉及到以下内容:
- 计算2000-2021年的年度和季节平均降水量;
- 使用研究区域矢量数据裁剪出研究区域的降水栅格数据。
我们将使用 rasterio
和 geopandas
两个库来实现这些操作。
图1|现有需要计算处理和裁剪的降水栅格数据
1.环境准备
首先,确保你的Python环境中已经安装了必要的库。如果没有的话,你可以使用以下命令来安装这些库(在Anaconda进行):
pip install rasterio geopandas numpy
2.设置文件路径
将文件路径设置为你自己的数据文件夹路径和矢量数据路径:
import os
import rasterio
import numpy as np
import geopandas as gpd
from rasterio.mask import mask
input_folder = r"你的降水栅格数据文件夹路径"
output_folder = r"保存结果的文件夹路径"
clipped_output_folder = r"保存裁剪后结果的文件夹路径"
shapefile_path = r"矢量数据文件路径"
3.读取矢量数据
使用 geopandas
读取研究区域的矢量数据:
shapefile = gpd.read_file(shapefile_path)
4.定义年份和季节
设置要处理的年份和季节:
years = list(range(2000, 2021)) # 从2000到2020年
seasons = {
"spring": [3, 4, 5],
"summer": [6, 7, 8],
"autumn": [9, 10, 11],
"winter": [12, 1, 2]
}
5.创建输出文件夹
确保输出文件夹存在:
os.makedirs(output_folder, exist_ok=True)
os.makedirs(clipped_output_folder, exist_ok=True)
6.裁剪栅格数据的函数
定义一个函数来裁剪栅格数据,并设置无效值:
def clip_raster(raster, shapes, nodata_value):
out_image, out_transform = mask(raster, shapes, crop=True, nodata=nodata_value, filled=False)
out_meta = raster.meta.copy()
out_meta.update({
"height": out_image.shape[1],
"width": out_image.shape[2],
"transform": out_transform,
"nodata": nodata_value
})
return out_image, out_