예제 #1
0
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]
예제 #2
0
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