有什么中国气象数据共享网技术的数据服务吗?

2019-03-01 09:25
来源:
中国气象数据
不知从什么时候起
气象大数据就出现在我们眼前
被我们经常提起
但是,你确定你真的了解气象大数据吗?
气象大数据是指在气象领域中,围绕智能预报和智慧服务,从气象数据采集、加工处理、预报预测、共享服务、存储归档等气象业务和科研工作各个环节所产生的各类数据总和,以及相关技术和应用的总称。
它的主要来源有三类
分别是气象观测数据
气象产品数据
互联网气象数据
通过各种可能观(探)测、遥测手段
收集或加工处理得到的
来自地球大气圈及其他相邻圈层的
描述与大气及其变化有关的
物理和化学状态的信息元素
此类都被称为气象观测数据
“雪龙”号上的中国第九次北极科学考察队成员在白令海公海区域释放探空气球
通过数据质量控制
统计加工
遥感处理技术
多源数据融合分析
资料同化与再分析等关键技术
建成的涵盖地基、空基、天基的
多圈层、长序列、高质量的三维业务和服务产品
智能网格预报实况分析场 全国6.25km/1h短波辐射
包括第三方、志愿者或个人搭建的
气象探测设备
智能终端搭载气象要素传感设备获取的
探测数据
以及拍摄上传的天气状态
气象灾害灾情照片等社会化气象数据
另外还包括搜索引擎对气象相关敏感词的
统计分析数据
除此之外
气象信息传播主体、服务用户反馈的信息
都算互联网气象数据
中国气象数据网APP时景上传
现在
是不是对数量庞大的气象数据
有了一个基本的了解了呢?返回搜狐,查看更多
责任编辑:
气象数据就空间分布方式分为两种:站点数据和格点数据。站点数据就是在观测站点实测到的数据。格点数据就是将空间上分布不均匀的数据,按一定的几何形态格子归并,求出各格子中数据的平均值,置于格子的中心位置,这种处理所形成的数据,特点就是时空分辨率比较高。在实际应用中,我们已经积累了大量的站点观测数据,但是受气象观测站点空间分布的不均一、时间序列长短不一,观测台站环境变迁等影响,在具体的气候分析和数值模拟等研究中,离散的站点数据不利于可视化与分析,不能完全真实代表区域气候变化的特征,气象预测面临着诸多的限制,所以有时我们需要把站点数据转化成规则的、连续的格点数据。格点数据利用了空间插值技术将离散的站点资料转化为空间连续的、规则的网格点序列,可以有效的反映气候要素的空间信息,大大提高了气候数据序列在对应网格范围的气候代表性。气象格点数据目前确定的规范数据格式包括:Grib、NetCDF和HDF三种。Grib格式码表十分规范,较适用于对规范要求严格的各项业务;NetCDF及HDF由于其自身的灵活特征,有众多应用的支持,较适用于各种科研类工作。我们可以通过这篇项目来自和鲸社区优秀创作者:lqy,来学习如何将站点数据和格点数据结合在一起,获取更高精度、更高分辨率和更高准确度的气象要素分布图。在 ModelWhale 运行该项目,CPU/GPU算力灵活接入,丰富镜像随需搭载,项目环境免安装,一键获取完整代码云端复现!项目链接项目概览一、背景简述目的与意义:利用站点资料插值去校正GFS湿度场,将站点数据和网格化数据结合在一起,获取更高精度、更高分辨率和更高准确度的气象要素分布图。实用性:格点化的天气预报数据往往数个小时前就已经获得,而再分析资料现在暂未获得。我们有的只有十几分钟前获得的站点观测数据,而我们需要的是一个较为准确的区域的当前网格化观测数据。主要步骤:下载GFS数值模式的预报数据和地面自动气象站观测数据读取GFS预报数据的地表温度和露点温度变量基于地表温度和露点温度,计算网格化地表相对湿度使用cressman插值,以站点经纬度为第一猜测场,引入站点相对湿度,获得一个新的相对湿度将GFS预报的相对湿度由经纬度网格处理为WRF的兰伯特投影二、项目细节安装模块In [1]:!pip install siphonIn [2]:!pip install metpyIn [3]:!pip install cmaps一、下载GFS预报数据In [3]:from siphon.catalog import TDSCatalog
best_gfs = TDSCatalog('http://thredds.ucar.edu/thredds/catalog/grib/NCEP/GFS/'
'Global_0p25deg/catalog.xml?dataset=grib/NCEP/GFS/Global_0p25deg/Best')
best_ds = list(best_gfs.datasets.values())[0]
ncss = best_ds.subset()
query = ncss.query()In [10]:from datetime import datetime, timedelta
mytime = datetime.strptime('2020-08-13T00:00:00Z','%Y-%m-%dT%H:%M:%Sz')
query.lonlat_box(north=55, south=0, east=140, west=70).time(mytime)
query.variables('Temperature_surface','Dewpoint_temperature_height_above_ground',
'Relative_humidity_height_above_ground')
query.accept('netcdf4')Out[10]:var=Relative_humidity_height_above_ground&var=Temperature_surface&var=Dewpoint_temperature_height_above_ground&time=2020-08-13T00%3A00%3A00&west=70&east=140&south=0&north=55&accept=netcdf4In [11]:from xarray.backends import NetCDF4DataStore
import xarray as xr
nc = ncss.get_data(query)
data = xr.open_dataset(NetCDF4DataStore(nc))In [12]:Out[12]:In [14]:data.to_netcdf('GFS_2020081300.nc','w')In [15]:import shutil
shutil.move('GFS_2020081300.nc', './work')Out[15]:'./work/GFS_2020081300.nc'注释:以上仅介绍数据下载的方法,后续代码所用数据为2020年8月10日00时(UTC)的GFS数据二、读取GFS预报数据注释:这里要注意维度问题,因为需要的是某一时刻的数据,所以后面把时间维度删去了。In [4]:import metpy
import xarray as xr
data = xr.open_dataset('./work/GFS_2020081000.nc')
dataOut[4]:In [5]:代码已被隐藏三、计算相对湿度(基于地表温度和露点温度)注释:GFS预报场其实是包含相对湿度变量的,根据作业要求,这里基于地表温度和露点温度,计算网格化地表相对湿度。在后面也会比较计算结果和预报结果的差异。计算参考:相对湿度计算说明。发现算出来的相对湿度有大于1的情况,这是由于水汽过饱和导致的,后面将大于1的全部当做1处理。In [6]:import metpy.calc
rh_2m_cal = metpy.calc.relative_humidity_from_dewpoint(tem_2m, dewpoint_2m)In [7]:print(np.nanmax(rh_2m_cal))In [8]:print(np.nanmin(rh_2m_cal))In [9]:rh_2m_cal[rh_2m_cal>1]=1In [10]:print(np.nanmax(rh_2m_cal))In [11]:rh_2m_cal = rh_2m_cal*100四、绘图展示数据注释:由于数据原本是等经纬的,所以目前先不进行投影,仍保留原始状态In [12]:lon_2d, lat_2d = np.meshgrid(lon_1d, lat_1d)In [13]:%matplotlib inline
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cmaps
import numpy as np
import cartopy.io.shapereader as shpreader
from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTERIn [14]:#第一张图:GFS的2m气温预报场
代码已被隐藏In [15]:#第二张图:GFS的2m露点预报场
代码已被隐藏In [18]:#第三张图:GFS的2m相对湿度预报场
代码已被隐藏In [19]:#第四张图:GFS的2m相对湿度预报场(计算所得)
代码已被隐藏五、自动气象站观测数据(站点资料)注释:此处数据来自中国气象数据网,这里展示的数据并没有包含全国所有自动站,华南和东南地区没有下载,其实可以看看站点空间分布不均匀带来的影响。In [20]:import pandas as pd
df = pd.read_excel('./work/20200810_RH.xls')
dfIn [21]:station_lon = df['经度']
station_lat = df['纬度']
station_RH = df['相对湿度']In [22]:#第五张图:自动站的相对湿度观测资料(散点图)
代码已被隐藏六、定义cressman插值函数并进行插值注释:这部分是最核心的部分,以下代码来自冬青老师的课件,太有用了。因为计算量较大,使用了numba加速,不然效率很低。但后面找到了一个更好的办法。In [23]:代码已被隐藏In [24]:#cressman插值
from metpy.interpolate import interpolate_to_grid, remove_nan_observations, remove_repeat_coordinates
station_lon,station_lat,station_RH = remove_nan_observations(station_lon,station_lat,station_RH)
station_lon,station_lat,station_RH = remove_repeat_coordinates(station_lon,station_lat,station_RH)
lon_grid, lat_grid, first_guess = interpolate_to_grid(station_lon,station_lat,station_RH, interp_type='cressman', minimum_neighbors=1,
hres=0.25, search_radius=0.5)In [26]:#第六张图:自动站的相对湿度空间插值
代码已被隐藏注释:分辨率和搜索半径很重要,这个结果比较可靠,因为站点所能代表的范围有限,当然还应该考虑地形、土地利用等信息次啊能得到更为准确的空间分布。七、简单的数据同化(数据融合)目前已经得到两个相对湿度的格点数据了,分别是GFS预报场和地面站点的观测场,问题是预报场可靠性存疑,但空间上连续,而观测场可靠性较高,但空间上有缺失。这里需要将两者结合起来,得到既可靠又空间连续的相对湿度分布。空间分辨率:(1)GFS预报场:0.25×0.25;(2)地面观测场:0.25×0.25。如果遇到非一致的空间分辨率还得进行插值,使两个空间属性一致。但是,除了空间分辨率问题,还有格点的一一对应关系,所以这里还是要插值qaq。In [27]:first_guess.shapeOut[27]:(126, 237)In [28]:rh_2m_cal.shapeOut[28]:(221, 281)In [29]:lon_2d, lat_2d = np.meshgrid(lon_1d, lat_1d)
lon_2d = xr.DataArray(lon_2d, dims=['x','y'])
lat_2d = xr.DataArray(lat_2d, dims=['x','y'])In [30]:lon_grid = xr.DataArray(lon_grid, dims=['x','y'])
lat_grid = xr.DataArray(lat_grid, dims=['x','y'])In [31]:first_guess_xr= xr.DataArray(first_guess, coords=[lat_grid[:,0], lon_grid[0]], dims=["lat", "lon"])In [32]:first_guess_xrOut[32]:In [33]:first_guess_new = first_guess_xr.interp(lon=lon_2d, lat=lat_2d)In [34]:first_guess_newOut[34]:In [36]:#第七张图:重新插值的first_guess
代码已被隐藏In [37]:first_guess_new = np.array(first_guess_new)
rh_2m_cal = np.array(rh_2m_cal)
rh_2m_cal[~np.isnan(first_guess_new)] = first_guess_new[~np.isnan(first_guess_new)]八、变为WRF的兰伯特投影(重投影)In [38]:#第八张图:GFS的2m相对湿度预报场(计算所得)
代码已被隐藏注释:这次发现经纬度标不上了,因为cartopy版本是0.17.0,大家升级到0.18.0就可以对兰伯特标注经纬度了。In [39]:!pip install cartopy注意!更多全面的气象优质教程和项目都在汇总。欢迎进入ModelWhale,了解数据科学平台 ModelWhale 在个人、团队及机构的科研、教研场景下的更多深度应用。

我要回帖

更多关于 中国气象数据共享网 的文章