Update retrieve cmadass for json encode.

This commit is contained in:
NMC-DAVE 2021-08-27 20:17:57 +08:00
parent 4a5c7ac19e
commit 42a5ece8f5

@ -105,6 +105,34 @@ def get_rest_result(interface_id, params, url_only=False,
return req.data
def _load_contents(contents):
"""
Extract information from contents.
Args:
contents (string): [description]
Returns:
[type]: [description]
"""
if contents is None:
print('Return None.')
return None
try:
contents = json.loads(contents.decode('utf-8').replace('\x00', ''), strict=False)
except Exception as e:
print(e)
print(contents)
return None
if contents['returnCode'] != '0':
print(contents)
return None
return contents
def cmadaas_obs_convert_type(obs_data):
"""
Convert observation dataframe to numeric types.
@ -154,11 +182,7 @@ def cmadaas_get_obs_latest_time(data_code="SURF_CHN_MUL_HOR", latestTime=12):
# retrieve data contents
contents = get_rest_result(interface_id, params)
if contents is None:
return None
contents = json.loads(contents.decode('utf-8').replace('\x00', ''), strict=False)
if contents['returnCode'] != '0':
return None
contents = _load_contents(contents)
# construct pandas DataFrame
data = pd.DataFrame(contents['DS'])
@ -207,11 +231,9 @@ def cmadaas_get_obs_files(times, data_code="SURF_CMPA_RT_NC", out_dir=None, pbar
# retrieve data contents
contents = get_rest_result(interface_id, params)
contents = _load_contents(contents)
if contents is None:
return None
contents = json.loads(contents.decode('utf-8').replace('\x00', ''), strict=False)
if contents['returnCode'] != '0':
return None
# loop every file and download
out_files = []
@ -272,11 +294,9 @@ def cmadaas_obs_by_time(times, data_code="SURF_CHN_MUL_HOR_N",
# retrieve data contents
contents = get_rest_result(interface_id, params)
contents = _load_contents(contents)
if contents is None:
return None
contents = json.loads(contents.decode('utf-8').replace('\x00', ''), strict=False)
if contents['returnCode'] != '0':
return None
# construct pandas DataFrame
data = pd.DataFrame(contents['DS'])
@ -343,11 +363,9 @@ def cmadaas_obs_by_time_range(time_range, data_code="SURF_CHN_MUL_HOR_N",
# retrieve data contents
contents = get_rest_result(interface_id, params)
contents = _load_contents(contents)
if contents is None:
return None
contents = json.loads(contents.decode('utf-8').replace('\x00', ''), strict=False)
if contents['returnCode'] != '0':
return None
# construct pandas DataFrame
data = pd.DataFrame(contents['DS'])
@ -405,11 +423,9 @@ def cmadaas_obs_by_time_and_id(times, data_code="SURF_CHN_MUL_HOR_N",
# retrieve data contents
contents = get_rest_result(interface_id, params)
contents = _load_contents(contents)
if contents is None:
return None
contents = json.loads(contents.decode('utf-8').replace('\x00', ''), strict=False)
if contents['returnCode'] != '0':
return None
# construct pandas DataFrame
data = pd.DataFrame(contents['DS'])
@ -468,11 +484,9 @@ def cmadaas_obs_by_time_range_and_id(time_range, data_code="SURF_CHN_MUL_HOR_N",
# retrieve data contents
contents = get_rest_result(interface_id, params)
contents = _load_contents(contents)
if contents is None:
return None
contents = json.loads(contents.decode('utf-8').replace('\x00', ''), strict=False)
if contents['returnCode'] != '0':
return None
# construct pandas DataFrame
data = pd.DataFrame(contents['DS'])
@ -532,11 +546,9 @@ def cmadaas_obs_in_rect_by_time(times, limit, data_code="SURF_CHN_MUL_HOR_N",
# retrieve data contents
contents = get_rest_result(interface_id, params)
contents = _load_contents(contents)
if contents is None:
return None
contents = json.loads(contents.decode('utf-8').replace('\x00', ''), strict=False)
if contents['returnCode'] != '0':
return None
# construct pandas DataFrame
data = pd.DataFrame(contents['DS'])
@ -600,11 +612,9 @@ def cmadaas_obs_in_rect_by_time_range(time_range, limit, data_code="SURF_CHN_MUL
# retrieve data contents
contents = get_rest_result(interface_id, params)
contents = _load_contents(contents)
if contents is None:
return None
contents = json.loads(contents.decode('utf-8').replace('\x00', ''), strict=False)
if contents['returnCode'] != '0':
return None
# construct pandas DataFrame
data = pd.DataFrame(contents['DS'])
@ -662,11 +672,9 @@ def cmadaas_obs_in_admin_by_time(times, admin="110000", data_code="SURF_CHN_MUL_
# retrieve data contents
contents = get_rest_result(interface_id, params)
contents = _load_contents(contents)
if contents is None:
return None
contents = json.loads(contents.decode('utf-8').replace('\x00', ''), strict=False)
if contents['returnCode'] != '0':
return None
# construct pandas DataFrame
data = pd.DataFrame(contents['DS'])
@ -730,11 +738,9 @@ def cmadaas_obs_in_admin_by_time_range(time_range, admin="110000", data_code="SU
# retrieve data contents
contents = get_rest_result(interface_id, params)
contents = _load_contents(contents)
if contents is None:
return None
contents = json.loads(contents.decode('utf-8').replace('\x00', ''), strict=False)
if contents['returnCode'] != '0':
return None
# construct pandas DataFrame
data = pd.DataFrame(contents['DS'])
@ -792,11 +798,9 @@ def cmadaas_obs_in_basin_by_time(times, basin="CJLY", data_code="SURF_CHN_MUL_HO
# retrieve data contents
contents = get_rest_result(interface_id, params)
contents = _load_contents(contents)
if contents is None:
return None
contents = json.loads(contents.decode('utf-8').replace('\x00', ''), strict=False)
if contents['returnCode'] != '0':
return None
# construct pandas DataFrame
data = pd.DataFrame(contents['DS'])
@ -861,11 +865,9 @@ def cmadaas_obs_in_basin_by_time_range(time_range, basin="CJLY", data_code="SURF
# retrieve data contents
contents = get_rest_result(interface_id, params)
contents = _load_contents(contents)
if contents is None:
return None
contents = json.loads(contents.decode('utf-8').replace('\x00', ''), strict=False)
if contents['returnCode'] != '0':
return None
# construct pandas DataFrame
data = pd.DataFrame(contents['DS'])
@ -922,11 +924,9 @@ def cmadaas_obs_by_period(minYear, maxYear, minMD, maxMD, data_code="SURF_CHN_MU
# retrieve data contents
contents = get_rest_result(interface_id, params)
contents = _load_contents(contents)
if contents is None:
return None
contents = json.loads(contents.decode('utf-8').replace('\x00', ''), strict=False)
if contents['returnCode'] != '0':
return None
# construct pandas DataFrame
data = pd.DataFrame(contents['DS'])
@ -986,11 +986,9 @@ def cmadaas_obs_by_period_and_id(minYear, maxYear, minMD, maxMD, data_code="SURF
# retrieve data contents
contents = get_rest_result(interface_id, params)
contents = _load_contents(contents)
if contents is None:
return None
contents = json.loads(contents.decode('utf-8').replace('\x00', ''), strict=False)
if contents['returnCode'] != '0':
return None
# construct pandas DataFrame
data = pd.DataFrame(contents['DS'])
@ -1050,11 +1048,9 @@ def cmadaas_obs_in_admin_by_period(minYear, maxYear, minMD, maxMD, admin="110000
# retrieve data contents
contents = get_rest_result(interface_id, params)
contents = _load_contents(contents)
if contents is None:
return None
contents = json.loads(contents.decode('utf-8').replace('\x00', ''), strict=False)
if contents['returnCode'] != '0':
return None
# construct pandas DataFrame
data = pd.DataFrame(contents['DS'])
@ -1126,11 +1122,9 @@ def cmadaas_obs_grid_by_time(time_str, limit=None, data_code="SURF_CMPA_FAST_5KM
# retrieve data contents
contents = get_rest_result(interface_id, params)
contents = _load_contents(contents)
if contents is None:
return None
contents = json.loads(contents.decode('utf-8').replace('\x00', ''), strict=False)
if contents['returnCode'] != '0':
return None
# get time information
time = datetime.strptime(time_str, '%Y%m%d%H%M%S')
@ -1261,11 +1255,9 @@ def cmadaas_obs_by_days_of_year(data_code="SURF_CHN_DAY_MMUT_19812010",
# retrieve data contents
contents = get_rest_result(interface_id, params)
contents = _load_contents(contents)
if contents is None:
return None
contents = json.loads(contents.decode('utf-8').replace('\x00', ''), strict=False)
if contents['returnCode'] != '0':
return None
# construct pandas DataFrame
data = pd.DataFrame(contents['DS'])
@ -1323,11 +1315,9 @@ def cmadaas_obs_by_pens_of_year(data_code="SURF_CHN_PEN_MMUT_19812010",
# retrieve data contents
contents = get_rest_result(interface_id, params)
contents = _load_contents(contents)
if contents is None:
return None
contents = json.loads(contents.decode('utf-8').replace('\x00', ''), strict=False)
if contents['returnCode'] != '0':
return None
# construct pandas DataFrame
data = pd.DataFrame(contents['DS'])
@ -1385,11 +1375,9 @@ def cmadaas_obs_by_tens_of_year(data_code="SURF_CHN_TEN_MMUT_19812010",
# retrieve data contents
contents = get_rest_result(interface_id, params)
contents = _load_contents(contents)
if contents is None:
return None
contents = json.loads(contents.decode('utf-8').replace('\x00', ''), strict=False)
if contents['returnCode'] != '0':
return None
# construct pandas DataFrame
data = pd.DataFrame(contents['DS'])
@ -1444,11 +1432,9 @@ def cmadaas_obs_by_months_of_year(data_code="SURF_CHN_MON_MMUT_19812010",
# retrieve data contents
contents = get_rest_result(interface_id, params)
contents = _load_contents(contents)
if contents is None:
return None
contents = json.loads(contents.decode('utf-8').replace('\x00', ''), strict=False)
if contents['returnCode'] != '0':
return None
# construct pandas DataFrame
data = pd.DataFrame(contents['DS'])
@ -1500,11 +1486,9 @@ def cmadaas_obs_by_years(data_code="SURF_CHN_YER_MMUT_19812010",
# retrieve data contents
contents = get_rest_result(interface_id, params)
contents = _load_contents(contents)
if contents is None:
return None
contents = json.loads(contents.decode('utf-8').replace('\x00', ''), strict=False)
if contents['returnCode'] != '0':
return None
# construct pandas DataFrame
data = pd.DataFrame(contents['DS'])
@ -1581,11 +1565,9 @@ def cmadaas_analysis_by_time(time_str, limit=None, data_code='NAFP_CLDAS2.0_NRT_
# retrieve data contents
contents = get_rest_result(interface_id, params)
contents = _load_contents(contents)
if contents is None:
return None
contents = json.loads(contents.decode('utf-8').replace('\x00', ''), strict=False)
if contents['returnCode'] != '0':
return None
# get time information
time = datetime.strptime(time_str, '%Y%m%d%H%M%S')
@ -1703,11 +1685,9 @@ def cmadaas_get_model_latest_time(data_code="NAFP_ECMF_FTM_HIGH_ANEA_FOR", lates
# retrieve data contents
contents = get_rest_result(interface_id, params)
contents = _load_contents(contents)
if contents is None:
return None
contents = json.loads(contents.decode('utf-8').replace('\x00', ''), strict=False)
if contents['returnCode'] != '0':
return None
# construct pandas DataFrame
data = pd.DataFrame(contents['DS'])
@ -1791,11 +1771,9 @@ def cmadaas_model_grid(data_code, init_time, valid_time, fcst_ele, fcst_level, l
# retrieve data contents
contents = get_rest_result(interface_id, params)
contents = _load_contents(contents)
if contents is None:
return None
contents = json.loads(contents.decode('utf-8').replace('\x00', ''), strict=False)
if contents['returnCode'] != '0':
return None
# get time information
init_time = datetime.strptime(init_time_str, '%Y%m%d%H')
@ -2125,11 +2103,9 @@ def cmadaas_model_by_time(init_time, valid_time=0, limit=None,
# retrieve data contents
contents = get_rest_result(interface_id, params)
contents = _load_contents(contents)
if contents is None:
return None
contents = json.loads(contents.decode('utf-8').replace('\x00', ''), strict=False)
if contents['returnCode'] != '0':
return None
# get time information
init_time = datetime.strptime(init_time_str, '%Y%m%d%H')
@ -2263,11 +2239,9 @@ def cmadaas_model_by_pionts(init_time_str, data_code='NAFP_FOR_FTM_HIGH_EC_ANEA'
# retrieve data contents
contents = get_rest_result(interface_id, params)
contents = _load_contents(contents)
if contents is None:
return None
contents = json.loads(contents.decode('utf-8').replace('\x00', ''), strict=False)
if contents['returnCode'] != '0':
return None
# convert to numeric
data = pd.DataFrame(contents['DS'])
@ -2378,11 +2352,9 @@ def cmadaas_get_model_file(time, data_code="NAFP_FOR_FTM_HIGH_EC_ANEA", fcst_ele
# retrieve data contents
contents = get_rest_result(interface_id, params)
contents = _load_contents(contents)
if contents is None:
return None
contents = json.loads(contents.decode('utf-8').replace('\x00', ''), strict=False)
if contents['returnCode'] != '0':
return None
# just return the url
if just_url: