我从ESGF网站下载了tasmax数据集。数据集中的.nc文件包含从1850年到2014年的全球数据。但是,我需要孟加拉国、斯里兰卡、巴基斯坦、马尔代夫等特定国家的数据。然后在这些特定的国家进行研究。
包含1850年至1899年数据的.nc文件的详细信息:
table_id: day
table_info: Creation Date:(20 February 2019) MD5:951084b632bd52c3f6224e495b1cb65e
title: INM-CM4-8 output prepared for CMIP6
tracking_id: hdl:21.14100/819efd11-8094-46b4-86a9-1296bfe83b55
variable_id: tasmax
dict_keys(['time', 'time_bnds', 'lat', 'lat_bnds', 'lon', 'lon_bnds', 'height', 'tasmax'])
dimensions(sizes): time(5475), lat(120), lon(180), bnds(2)
tasmax变量的详细信息:
tasmax=ds.variables['tasmax']
print(tasmax)
这给出输出:
<class 'netCDF4._netCDF4.Variable'>
float32 tasmax(time, lat, lon)
standard_name: air_temperature
long_name: Daily Maximum Near-Surface Air Temperature
comment: maximum near-surface (usually, 2 meter) air
temperature (add cell_method attribute 'time: max')
units: K
original_name: tasmax
cell_methods: area: mean time: maximum (interval: 1 day)
cell_measures: area: areacella
history: 2019-05-28T11:29:24Z altered by CMOR: Treated
scalar dimension: 'height'.
coordinates: height
missing_value: 1e+20
_FillValue: 1e+20
unlimited dimensions: time
current shape = (5475, 120, 180)
filling on, default _FillValue of 9.969209968386869e+36 used
tasmax.dimentions
('time', 'lat', 'lon')
该文件在绘制时显示整个地球仪每天的tasmax数据。我只需要一个特定国家的数据,而不是地球仪。我使用Python,但我也可以使用QGIS和ArcGIS,如果这是一个更好的方法。
我试着在lat和lon空间中放置特定的坐标,如下所示:
print(temp[:,23.35,90])
其中23.35和90是孟加拉国某点的经度和纬度。
这给出输出:[282.4348 281.53607 283.49426 ... 280.90012 282.33377 282.48367]
通过这种方式,我可以提取特定点的数据。但是国家有很多纬度点,所以我不能对每个点都这样做,因为这样效率不高。
我还创建了一个numpy dataframe,并使用它将数据提取到csv文件中。
我想做趋势分析,看看孟加拉国的tasmax方差。为此,我需要孟加拉国的时间序列数据。我需要检测孟加拉国多年来的温度变化。
我想做1。Mann Kendall检验,2.斯皮尔曼秩相关检验,3。森氏斜率,4.方差相关分析与M-K检验
因此,我需要网格化的数据集是只有孟加拉国,而不是整个地球仪。
我试着用一个世界shapefile把数据导入qgis。netCDF 4数据不与shapefile重叠。事实上,它也被翻转了。
我不知道怎么把它翻到右边,怎么让它正确地重叠。
我也意识到我的netcdf 4数据的分辨率是100 kms,这是非常大的。如何将其减少到25公里?
1条答案
按热度按时间xwbd5t1u1#
您可以使用QGIS来获取所需的数据。您应该添加您的国家的矢量图层,并添加netcdf文件作为光栅层。对于您的国家shapefile,您可以轻松地在线查找全球国家shapefile,然后打开属性表,切换编辑模式并删除除您所在国家以外的所有国家。请注意,你应该为每个你想要的国家单独做。然后从菜单:
·光栅>提取>通过遮罩层裁剪光栅
clip raster by layer
选择你的栅格数据和你的国家shapefile为多边形,保存为netcdf文件。现在你有一个网格化的时间序列数据只有你的国家。同样通过qgis中的数据工具,你也可以取你国家边界内所有点的平均值。