Change retrieve_micaps_server.get_model_grid's ensemble number dimension position.
This commit is contained in:
parent
851b350989
commit
9c7fe4a22e
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
BIN
documents/cmadaas/Grib层次类型.pdf
Normal file
BIN
documents/cmadaas/Grib层次类型.pdf
Normal file
Binary file not shown.
Binary file not shown.
BIN
documents/基于位置的天气实况服务/附件1基于位置的天气实况服务策略V10_2175845214613085.pdf
Normal file
BIN
documents/基于位置的天气实况服务/附件1基于位置的天气实况服务策略V10_2175845214613085.pdf
Normal file
Binary file not shown.
Binary file not shown.
BIN
documents/基于位置的天气实况服务/附件2基于位置的天气实况服务接口使用说明_2175847195813361.pdf
Normal file
BIN
documents/基于位置的天气实况服务/附件2基于位置的天气实况服务接口使用说明_2175847195813361.pdf
Normal file
Binary file not shown.
@ -43,7 +43,7 @@
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"<xarray.core.options.set_options at 0x7f76030646d0>"
|
||||
"<xarray.core.options.set_options at 0x7fc33c112590>"
|
||||
]
|
||||
},
|
||||
"execution_count": 2,
|
||||
@ -126,6 +126,77 @@
|
||||
"data"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## 读取CRA40再分析数据\n",
|
||||
"\n",
|
||||
"CRA40为中国研制的第一套长时间序列全球大气再分析数据集-逐6小时产品,覆盖全球范围,时间跨度40年(197901-201812)并准实时更新,水平分辨率34公里、0.25°、0.5°、1.0°、2.5°。"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/html": [
|
||||
"<pre><xarray.Dataset>\n",
|
||||
"Dimensions: (lat: 361, level: 1, lon: 720, time: 1)\n",
|
||||
"Coordinates:\n",
|
||||
" * time (time) datetime64[ns] 2020-04-19\n",
|
||||
" * level (level) int64 500\n",
|
||||
" * lat (lat) float64 90.0 89.5 89.0 ... -89.0 -89.5 -90.0\n",
|
||||
" * lon (lon) float64 0.0 0.5 1.0 1.5 ... 358.5 359.0 359.5\n",
|
||||
" forecast_reference_time datetime64[ns] 2020-04-19\n",
|
||||
" forecast_period (time) float64 0.0\n",
|
||||
"Data variables:\n",
|
||||
" geopotential_height (time, level, lat, lon) float32 5.14e+03 ... 4.8...\n",
|
||||
"Attributes:\n",
|
||||
" Conventions: CF-1.6\n",
|
||||
" Origin: CIMISS Server by MUSIC API</pre>"
|
||||
],
|
||||
"text/plain": [
|
||||
"<xarray.Dataset>\n",
|
||||
"Dimensions: (lat: 361, level: 1, lon: 720, time: 1)\n",
|
||||
"Coordinates:\n",
|
||||
" * time (time) datetime64[ns] 2020-04-19\n",
|
||||
" * level (level) int64 500\n",
|
||||
" * lat (lat) float64 90.0 89.5 89.0 ... -89.0 -89.5 -90.0\n",
|
||||
" * lon (lon) float64 0.0 0.5 1.0 1.5 ... 358.5 359.0 359.5\n",
|
||||
" forecast_reference_time datetime64[ns] 2020-04-19\n",
|
||||
" forecast_period (time) float64 0.0\n",
|
||||
"Data variables:\n",
|
||||
" geopotential_height (time, level, lat, lon) float32 5.14e+03 ... 4.8...\n",
|
||||
"Attributes:\n",
|
||||
" Conventions: CF-1.6\n",
|
||||
" Origin: CIMISS Server by MUSIC API"
|
||||
]
|
||||
},
|
||||
"execution_count": 4,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# set retrieve parameters\n",
|
||||
"data_code = \"NAFP_CRA40_FTM_6HOR_ANA\"\n",
|
||||
"init_time = \"2020041900\"\n",
|
||||
"valid_time = 0\n",
|
||||
"fcst_ele = \"GPH\" # 位势高度场\n",
|
||||
"fcst_level = 500 # 500hPa层次\n",
|
||||
"level_type = \"-\"\n",
|
||||
"\n",
|
||||
"# retrieve data from CMADaSS\n",
|
||||
"data = cmadaas_model_grid(data_code, init_time, valid_time, fcst_ele, fcst_level, level_type,\n",
|
||||
" varname='geopotential_height', units='gpm', \n",
|
||||
" levattrs={'long_name':'isobaric', 'units':'hPa', '_CoordinateAxisType':'isobaric'},\n",
|
||||
" cache=False)\n",
|
||||
"data"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
|
File diff suppressed because one or more lines are too long
@ -1423,7 +1423,7 @@ def cmadaas_model_grid(data_code, init_time, valid_time, fcst_ele, fcst_level, l
|
||||
:param fcst_ele: forecast element, like 2m temperature "TEM"
|
||||
:param fcst_level: vertical level, like 0
|
||||
:param level_type: forecast level type, 表示Grib数据中的层次类型, 可在云平台上查询.
|
||||
:param limit: [min_lat, min_lon, max_lat, max_lon],
|
||||
:param limit: [min_lat, min_lon, max_lat, max_lon]
|
||||
:param varname: set variable name, default is 'data'
|
||||
:param units: forecast element's units, defaults to retrieved units.
|
||||
:param scale_off: [scale, offset], return values = values*scale + offset.
|
||||
|
@ -272,9 +272,9 @@ def get_model_grid(directory, filename=None, suffix="*.024",
|
||||
if data_type == 4:
|
||||
data = np.full((nmem, nlat, nlon), np.nan)
|
||||
else:
|
||||
data = np.full((2, nmem, nlat, nlon), np.nan)
|
||||
data = np.full((nmem, 2, nlat, nlon), np.nan)
|
||||
ind = 0
|
||||
for imem in range(nmem):
|
||||
for _ in range(nmem):
|
||||
head_info_mem = np.frombuffer(
|
||||
byteArray[ind:(ind+278)], dtype=head_dtype)
|
||||
ind += 278
|
||||
@ -285,7 +285,7 @@ def get_model_grid(directory, filename=None, suffix="*.024",
|
||||
if data_type == 4:
|
||||
data[number, :, :] = np.squeeze(data_mem['data'])
|
||||
else:
|
||||
data[:, number, :, :] = np.squeeze(data_mem['data'])
|
||||
data[number, :, :, :] = np.squeeze(data_mem['data'])
|
||||
|
||||
# scale and offset the data, if necessary.
|
||||
if scale_off is not None:
|
||||
@ -340,18 +340,18 @@ def get_model_grid(directory, filename=None, suffix="*.024",
|
||||
'lat':lat_coord, 'lon':lon_coord})
|
||||
else:
|
||||
if level[0] == 0:
|
||||
data = data[np.newaxis, ...]
|
||||
data = data[:, np.newaxis, ...]
|
||||
data = xr.Dataset({
|
||||
varname:(['time', 'number', 'lat', 'lon'], data, varattrs)},
|
||||
varname:(['number', 'time', 'lat', 'lon'], data, varattrs)},
|
||||
coords={
|
||||
'time':time_coord, 'number':number_coord,
|
||||
'number':number_coord, 'time':time_coord,
|
||||
'lat':lat_coord, 'lon':lon_coord})
|
||||
else:
|
||||
data = data[np.newaxis, :, np.newaxis, ...]
|
||||
data = data[:, np.newaxis, np.newaxis, ...]
|
||||
data = xr.Dataset({
|
||||
varname:(['time', 'number', 'level', 'lat', 'lon'], data, varattrs)},
|
||||
varname:(['number', 'time', 'level', 'lat', 'lon'], data, varattrs)},
|
||||
coords={
|
||||
'time':time_coord, 'number':number_coord, 'level':level_coord,
|
||||
'number':number_coord, 'time':time_coord, 'level':level_coord,
|
||||
'lat':lat_coord, 'lon':lon_coord})
|
||||
elif data_type == 11:
|
||||
speedattrs = {'long_name':'wind speed', 'units':'m/s'}
|
||||
@ -386,25 +386,25 @@ def get_model_grid(directory, filename=None, suffix="*.024",
|
||||
angle = 270. - angle
|
||||
angle[angle<0] = angle[angle<0] + 360.
|
||||
if level[0] == 0:
|
||||
speed = speed[np.newaxis, ...]
|
||||
angle = angle[np.newaxis, ...]
|
||||
speed = speed[:, np.newaxis, ...]
|
||||
angle = angle[:, np.newaxis, ...]
|
||||
data = xr.Dataset({
|
||||
'speed': (
|
||||
['time', 'number', 'lat', 'lon'], speed, speedattrs),
|
||||
['number', 'time', 'lat', 'lon'], speed, speedattrs),
|
||||
'angle': (
|
||||
['time', 'number', 'lat', 'lon'], angle, angleattrs)},
|
||||
['number', 'time', 'lat', 'lon'], angle, angleattrs)},
|
||||
coords={
|
||||
'lon': lon_coord, 'lat': lat_coord,
|
||||
'number': number_coord, 'time': time_coord})
|
||||
else:
|
||||
speed = speed[np.newaxis, :, np.newaxis, ...]
|
||||
angle = angle[np.newaxis, :, np.newaxis, ...]
|
||||
speed = speed[:, np.newaxis, np.newaxis, ...]
|
||||
angle = angle[:, np.newaxis, np.newaxis, ...]
|
||||
data = xr.Dataset({
|
||||
'speed': (
|
||||
['time', 'number', 'level', 'lat', 'lon'],
|
||||
['number', 'time', 'level', 'lat', 'lon'],
|
||||
speed, speedattrs),
|
||||
'angle': (
|
||||
['time', 'number', 'level', 'lat', 'lon'],
|
||||
['number', 'time', 'level', 'lat', 'lon'],
|
||||
angle, angleattrs)},
|
||||
coords={
|
||||
'lon': lon_coord, 'lat': lat_coord, 'level': level_coord,
|
||||
|
Loading…
Reference in New Issue
Block a user