def mirrorSkint(hours): # 6.14.16测试 # 从cimiss中获取所有站点地温插值,hours控制选取的时间间隔 interfaceId = 'getSurfEleInRegionByTimeRange' elements = "Station_Id_C,Lat,Lon,GST,Year,Mon,Day,Hour" # 设定每天8:00、 20:00运行 lastime = datetime.datetime.now().replace( minute=0, second=0) - datetime.timedelta(hours=8) firstime = lastime - datetime.timedelta(hours=hours) temp = ('[', firstime.strftime('%Y%m%d%H%M%S'), ',', lastime.strftime('%Y%m%d%H%M%S'), ')') Time = ''.join(temp) params = { 'dataCode': "SURF_CHN_MUL_HOR", # 需更改为地面逐小时资料 'elements': elements, 'timeRange': Time, 'adminCodes': "630000" } initData = Datainterface.cimissdata(interfaceId, elements, **params) # 获取出cimiss初始数据 initData.Time = pd.to_datetime(initData.Time) # 需按时间进行划分插值,得到 地温网格数据 timeList = pd.to_datetime(initData.Time.unique()).strftime( '%Y%m%d%H%M%S') # 此处可能存在问题,目的仅按顺序取出来时间 initData.set_index(initData.Time, inplace=True) oneHourgrid = [ np.nan_to_num( interp.interpolateGridData( initData.loc[tm].GST.values.astype('float32'), initData.loc[tm].Lat.values.astype('float32'), initData.loc[tm].Lon.values.astype('float32'), glovar.lat, glovar.lon)) for tm in timeList ] return oneHourgrid # oneHourgrid 格点数据形状应为[12, newlat, newlon]
def mirrorskskt(newlat, newlon, hours=1): # 6.14.16测试 # 从cimiss中获取所有站点地温插值,hours控制选取的时间间隔 interfaceId = 'getSurfEleInRegionByTimeRange' elements = "Station_Id_C,Lat,Lon,GST,Year,Mon,Day,Hour" # 设定每天8:00、 20:00运行 lastime = datetime.datetime.now().replace( minute=0, second=0) - datetime.timedelta(hours=8) firstime = lastime - datetime.timedelta(hours=hours) temp = ('[', firstime.strftime('%Y%m%d%H%M%S'), ',', lastime.strftime('%Y%m%d%H%M%S'), ']') Time = ''.join(temp) params = { 'dataCode': "SURF_CHN_MUL_HOR", # 需更改为地面逐小时资料 'elements': elements, 'timeRange': Time, 'adminCodes': "630000" } initData = Datainterface.cimissdata(interfaceId, elements, **params) # 获取出cimiss初始数据 initData.Time = pd.to_datetime(initData.Time) # 需按时间进行划分插值,得到 地温网格数据 timeList = pd.to_datetime(initData.Time.unique()).strftime( '%Y%m%d%H%M%S') # 此处可能存在问题,目的仅按顺序取出来时间 initData.set_index(initData.Time, inplace=True) oneHourgrid = [ np.nan_to_num( interp.interpolateGridData( initData.loc[tm].GST.values.astype('float32'), initData.loc[tm].Lat.values.astype('float32'), initData.loc[tm].Lon.values.astype('float32'), glovar.lat, glovar.lon)) for tm in timeList ] Time = datetime.datetime.now().strftime('%Y%m%d%H') savepath = ''.join(r'/home/cqkj/QHTraffic/tmp/skt', Time, r'.pkl') with open(savepath, 'rb') as f: # 文件名用时间区分精确到小时,供updateSnow使用 pickle.dump(oneHourgrid, f) return oneHourgrid