添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

可以在 中国科技资源共享网 中进行下载 1km分辨率逐月降水量数据集

2 数据说明

该数据为 .nc 格式,里面有 lat lon time pre 四个数据块,其中 lat lon 是[H, W]形状的矩阵,每一个像素代表该像素对应坐标的经纬度; time 有12个,分别为1-12月; pre 是对应的降水数据块,形状为[12, H, W],代表某个像素12个月的降雨量。

3 数据处理

我们需要的是获取一些经纬度点的12个月降雨量,因此可以使用Python的 netCDF4 进行读取,然后进行处理,代码如下:

import numpy as np
import netCDF4 as nc
class WaterReader:
    def __init__(self, nc_path):
        self.src = nc.Dataset(nc_path)
        self.data = np.asarray(self.src["pre"])
        self.rang = self._get_range()
        self.lon_step = (self.rang[1] - self.rang[0]) / len(self.src["lon"])
        self.lat_step = (self.rang[3] - self.rang[2]) / len(self.src["lat"])
    def _get_range(self):
        return (
            np.min(self.src["lon"]),
            np.max(self.src["lon"]),
            np.min(self.src["lat"]),
            np.max(self.src["lat"]))
    def _get_rowcol_by_lonlat(self, lon, lat):
        lon_min, lon_max, lat_min, lat_max = self.rang
        if lon < lon_min or lon > lon_max or lat < lat_min or lat > lat_max:
            raise ValueError("lon or lat is out of range")
        lon_index = int((lon - lon_min) / self.lon_step)
        lat_index = int((lat_max - lat) / self.lat_step)
        return lon_index, lat_index
    def get_water(self, lon, lat):
        lon_index, lat_index = self._get_rowcol_by_lonlat(lon, lat)
        return self.data[:, lat_index, lon_index]
if __name__ == "__main__":
    wr = WaterReader("pre_2021.nc")
    print(wr.get_water(104.4214641, 33.731619))

其中关键在于通过_get_rowcol_by_lonlat将输入的经纬度对应找到图上最近的像元,然后通过该像元的行列号找到降水量。这里还可以插找距离最近的四个像元,通过线性插值的方法得到该点的12个月降水量。

如果需要批量处理的话,写成循环就好了。

将输入的经纬度对应找到图上最近的像元,然后通过该像元的行列号找到降水量。这里还可以插找距离最近的四个像元,通过线性插值的方法得到该点的12个月降水量。是对应的降水数据块,形状为[12, H, W],代表某个像素12个月的降雨量。我们需要的是获取一些经纬度点的12个月降雨量,因此可以使用Python的。是[H, W]形状的矩阵,每一个像素代表该像素对应坐标的经纬度;如果需要批量处理的话,写成循环就好了。有12个,分别为1-12月; 数据来自 2010年国地面气候资料日值数据集(V3.0) 国气象数据数据集实体文件名称: 数据文件命名由数据集代码(SURF_CLI_CHN_MUL_DAY)、要素代码(XXX)、项目代码(XXXXX)、年份标识(YYYY)和月份标识(MM)组成。其,SURF表示地面气象资料,CLI表示地面气候资料,CHN表示国,MUL表示多要素,DAY表示日值数据。 XXX-XXXXX说... Python雷达数据处理 什么是派拉德? Pyrad是由MeteoSwiss和MeteoFrance开发的实时数据处理框架。该框架旨在离线和实时处理和可视化来自单个气象雷达以及笛卡尔合成产品的极地数据。它是用Python语言编写的。该框架受版本控制,并且基于doc字符串生成自动文档。它能够从瑞士的所有天气雷达获取数据,即运行的MeteoSwiss C波段rad4alp雷达网络,MeteoSwiss X波段DX50雷达和EPFL MXPol雷达以及OPERA文件格式的雷达数据。此外,它可以提取C / FRadial和NEXRAD 2级文件。 处理流程由3个简单的配置文件控制。可以执行多个级别的处理。在每个级别上,都会创建新的数据集(例如,衰减校正的反射率),这些数据集可以存储在文件和/或在下一个处理级别使用(例如,从校正后的反射率创建降雨率数据集)。可以从每个数据集生成多个 #在python3上运行 from elasticsearch import Elasticsearch from urllib3.connectionpool import xrange def get_page_data(result): for hit in result['hits']['hits']: print(hit) if __name__=='__main__': es_host = "0.0.0.0" port = 9200 timeout = 15000 index = "gather # 绘制降水量和流量的折线图 plt.plot(data['日期'], data['降水量'], label='降水量') plt.plot(data['日期'], data['流量'], label='流量') # 添加图例和标签 plt.legend() plt.xlabel('日期') plt.ylabel('降水量/流量') # 显示图像 plt.show() 希望能帮到您!