def funcMap(): gridRMSE, uy, ux = grid.array2grid(statErr2.RMSE, lat=lat, lon=lon) gridCorr, uy, ux = grid.array2grid(statSigma2.sigma, lat=lat, lon=lon) figM, axM = plt.subplots(1, 2, figsize=(10, 4)) axplot.mapGrid(axM[0], uy, ux, gridRMSE, vRange=[0, 0.1], cmap=plt.cm.jet) axM[0].set_title('Temporal Test RMSE') axplot.mapGrid(axM[1], uy, ux, gridCorr, vRange=[0, 0.1], cmap=plt.cm.jet) axM[1].set_title('Temporal Test Correlation') figP, axP = plt.subplots(1, 1, figsize=(15, 3)) return figM, axM, figP, axP, lon, lat
out = trainName + '_y15_Forcing_dr60' rootDB = rnnSMAP.kPath['DB_L3_NA'] rootOut = rnnSMAP.kPath['Out_L3_NA'] predField = 'LSTM' targetField = 'SMAP' ds = rnnSMAP.classDB.DatasetPost(rootDB=rootDB, subsetName=testName, yrLst=[2016, 2017]) ds.readData(var='SMAP_AM', field='SMAP') ds.readPred(rootOut=rootOut, out=out, field='LSTM') statErr = ds.statCalError(predField='LSTM', targetField='SMAP') # dsTrain = rnnSMAP.classDB.DatasetPost( # rootDB=rootDB, subsetName=testName, yrLst=[2015]) # dsTrain.readData(var='SMAP_AM', field='SMAP') # dsTrain.readPred(rootOut=rootOut, out=out, field='LSTM') lat = ds.crd[:, 0] lon = ds.crd[:, 1] gridRMSE, uy, ux = grid.array2grid(statErr.RMSE, lat=lat, lon=lon) gridCorr, uy, ux = grid.array2grid(statErr.rho, lat=lat, lon=lon) fig, axes = plt.subplots(2, 1, figsize=(9, 10)) axplot.mapGrid(axes[0], uy, ux, gridRMSE, vRange=[0, 0.1], cmap=plt.cm.jet) axes[0].set_title('Temporal Test RMSE') axplot.mapGrid(axes[1], uy, ux, gridCorr, vRange=[0.5, 1], cmap=plt.cm.jet) axes[1].set_title('Temporal Test Correlation') fig.show() np.nanmean(statErr.RMSE) np.nanmean(statErr.rho)
# read shapefile # fileEcoShp = r'C:\Users\geofk\work\map\ecoRegion\NA_CEC_Eco_Level3\NA_CEC_Eco_Level3_Project.shp' fileEcoShp = '/mnt/sdb/Kuai/map/ecoRegion/NA_CEC_Eco_Level3/NA_CEC_Eco_Level3_Project.shp' shapeLst = shapefile.Reader(fileEcoShp).shapes() shapeRecLst = shapefile.Reader(fileEcoShp).records() codeLstTemp = [x['NA_L3CODE'].split('.') for x in shapeRecLst] codeLst = [[x[0] for x in codeLstTemp], [x[1] for x in codeLstTemp], [x[2] for x in codeLstTemp]] # read database crd rootDB = hydroDL.pathSMAP['DB_L3_NA'] tRange = [20150401, 20160401] df = dbCsv.DataframeCsv(rootDB=rootDB, subset='CONUS', tRange=tRange) lat, lon = df.getGeo() # calculate inside poligon # indLst=gis.pointInPoly(lat,lon,shapeLst) # df.saveDataConst(indLst, 'ecoShapeInd', bWriteStat=True) indLst = df.getDataConst('ecoShapeInd').squeeze().astype(int).tolist() shapeCodeLst = [shapeRecLst[x]['NA_L3CODE'].split('.') for x in indLst] for k in range(3): data = [int(x[k]) for x in shapeCodeLst] # df.saveDataConst(data, 'ecoRegionL'+str(k+1), bCalStat=False) # subset fieldLst = ['ecoRegionL' + str(x + 1) for x in range(3)] codeLst = df.getDataConst(fieldLst, doNorm=False, rmNan=False) dataGrid, uy, ux = grid.array2grid(codeLst[0], lat=lat, lon=lon) fig, ax = plot.plotMap(dataGrid, lat=uy, lon=ux)
from hydroDL import pathSMAP from hydroDL.utils import grid, flatData from hydroDL.data import dbCsv from hydroDL.post import plot import numpy as np import matplotlib.pyplot as plt rootDB = pathSMAP['DB_L3_NA'] tRange = [20150401, 20180331] df = dbCsv.DataframeCsv(rootDB=rootDB, subset='CONUS', tRange=tRange) lat, lon = df.getGeo() indGrid, uy, ux = grid.array2grid(df.indSub, lat=lat, lon=lon, fillMiss=False) indSub = flatData(indGrid[::3, ::3]).astype(int) df.subsetInit('CONUSv3f1', ind=indSub) fig, ax = plt.subplots(figsize=(12, 8)) plt.plot(lon, lat, 'bo') plt.plot(lon[indSub], lat[indSub], 'r*') fig.show() # can not repeat what MATLAB did indSub = flatData(indGrid[::4, 1::4]).astype(int) dfSub = dbCsv.DataframeCsv(rootDB=rootDB, subset='CONUSv4f1', tRange=tRange) latSub, lonSub = dfSub.getGeo() fig, ax = plt.subplots(figsize=(12, 8)) plt.plot(lon[indSub], lat[indSub], 'r*') plt.plot(lonSub, latSub, 'bo') fig.show()