def test_getnetdata(file_nc, expected_size): """ file_nc = os.path.join(dir_testinput,'DFM_3D_z_Grevelingen','computations','run01','DFM_OUTPUT_Grevelingen-FM','Grevelingen-FM_0000_map.nc') expected_size = 44796 """ from dfm_tools.get_nc import get_netdata ugrid = get_netdata(file_nc) assert ugrid.verts.shape[0] == expected_size
def test_UGrid_polygon_intersect(): import numpy as np from dfm_tools.get_nc import get_netdata file_nc = os.path.join(dir_testinput,'DFM_sigma_curved_bend\\DFM_OUTPUT_cb_3d\\cb_3d_map.nc') multipart = None line_array = np.array([[2084.67741935, 3353.02419355], #with linebend in cell en with line crossing same cell twice [2255.79637097, 3307.15725806], [2222.27822581, 3206.60282258], [2128.78024194, 3266.58266129]]) ugrid = get_netdata(file_nc=file_nc, multipart=multipart) #intersect function, find crossed cell numbers (gridnos) and coordinates of intersection (2 per crossed cell) intersect_gridnos, intersect_coords = ugrid.polygon_intersect(line_array, optimize_dist=False) expected_intersectgridnos = np.array([ 91, 146, 146, 147, 147, 201, 201, 202], dtype=np.int64) expected_intersectcoords = np.array([[[2084.67741935, 2144.15041424], [3353.02419355, 3337.08297842]], [[2144.15041424, 2202.53662217], [3337.08297842, 3321.43306702]], [[2173.05750857, 2128.78024194], [3238.17837704, 3266.58266129]], [[2202.53662217, 2255.79637097], [3321.43306702, 3307.15725806]], [[2255.79637097, 2246.9810802 ], [3307.15725806, 3280.71138574]], [[2239.02015401, 2222.27822581], [3256.82860719, 3206.60282258]], [[2222.27822581, 2173.05750857], [3206.60282258, 3238.17837704]], [[2246.9810802 , 2239.02015401], [3280.71138574, 3256.82860719]]]) assert (intersect_gridnos-expected_intersectgridnos<1e-9).all() assert (intersect_coords-expected_intersectcoords<1e-8).all()
[79018.07708186, 435169.27404501], [81324.39771538, 434536.89580679], [82923.94267088, 434611.29324658], [84449.09018659, 435132.07532512], [86606.61594052, 434685.69068637], [88689.74425466, 435355.26764449], [90772.8725688, 434983.28044554], [91926.03288556, 435132.07532512] ]) val_ylim = None clim_bl = [-10, 10] #optimize_dist = 150 else: raise Exception('ERROR: no settings provided for this mapfile') ugrid = get_netdata(file_nc=file_nc, multipart=multipart) #get bedlevel and create plot with ugrid and cross section line data_frommap_bl = get_ncmodeldata(file_nc=file_nc, varname='mesh2d_flowelem_bl', multipart=multipart) fig, ax_input = plt.subplots() pc = plot_netmapdata(ugrid.verts, values=data_frommap_bl, ax=ax_input, linewidth=0.5, edgecolors='face', cmap='jet') #, color='crimson', facecolor="None") pc.set_clim(clim_bl) fig.colorbar(pc, ax=ax_input) ax_input.set_aspect('equal')
varname='waterlevel', station='all', timestep='all') fig, ax = plt.subplots(1, 1, figsize=(10, 5)) for iP, station in enumerate(data_fromhis_wl.var_stations['station_name']): ax.plot(data_fromhis_wl.var_times, data_fromhis_wl[:, iP], '-', label=station) ax.legend() ax.set_ylabel( '%s (%s)' % (data_fromhis_wl.var_varname, data_fromhis_wl.var_ncvarobject.units)) #plot net/grid ugrid_all = get_netdata(file_nc=file_nc_map) #,multipart=False) fig, ax = plt.subplots() pc = plot_netmapdata(ugrid_all.verts, values=None, ax=None, linewidth=0.5, color="crimson", facecolor="None") ax.set_aspect('equal') #plot water level on map data_frommap_wl = get_ncmodeldata(file_nc=file_nc_map, varname='mesh2d_s1', timestep=3) #, multipart=False) fig, ax = plt.subplots() pc = plot_netmapdata(ugrid_all.verts,
#plt.close('all') file = 'p:\\1221207-kuweit-iczm-marshlands\\02_Marshlands\\task_5D_-_Water_Quality\\02_modelSetup\\03_loads\\UAE_diffuse_loads.def' grd = 'p:\\1221207-kuweit-iczm-marshlands\\02_Marshlands\\task_5C_-_Sediment_Transport\\model_setup\\coupling\\final\\aggregations\\7_zones_4x4\\7_zones_4x4_waqgeom.nc' #grd = r'p:\1221207-kuweit-iczm-marshlands\02_Marshlands\task_5D_-_Water_Quality\02_modelSetup\T04\7_zones_4x4_waqgeom.nc' segs = dict() with open(file, 'r') as def_file: lines = def_file.readlines() for line in lines: if "'" in line: tmp = line.split(' ') segs[tmp[2]] = int(tmp[0]) fig, ax = plt.subplots() ugrid = get_netdata(grd) pc = plot_netmapdata(ugrid.verts, values=None, ax=None, linewidth=0.5, color="crimson", facecolor="None") ax.set_aspect(1./np.cos(np.mean(ax.get_ylim())/180*np.pi),adjustable='box') # see Matlab axislat() show_waq_segment(grd, 8, segs) grd = 'p:\\11202512-h2020_impaqt\\03_waterquality\\03_baseCase\\RT_spin\\NZB_waqgeom_UGRID.nc' segs = {'module_1 (11)': 448023, 'module_1 (12)': 491961, 'module_1 (13)': 535899} fig, ax = plt.subplots() ugrid = get_netdata(grd) pc = plot_netmapdata(ugrid.verts, values=None, ax=None, linewidth=0.5, color="crimson", facecolor="None") show_waq_segment(grd, 20, segs)
""" # import libraries from dfm_tools.get_nc import get_netdata, get_ncmodeldata, plot_netmapdata from dfm_tools.get_nc_helpers import get_ncvardimlist, get_timesfromnc, get_hisstationlist import xarray as xr import numpy as np import matplotlib.pyplot as plt # set filename fname = 'C:\\Users\\backeber\\OneDrive - Stichting Deltares\\Desktop\\Project-D-HYDRO-Phase-4\\dflowfm\\dflowfm_serial\\oceaneddy_expt00_20010101_000000_rst.nc' ds = xr.open_dataset(fname) # plt.scatter(ds.FlowElem_xzw.data,ds.FlowElem_yzw.data,1,ds.s1.data[0,:]) ugrid_all = get_netdata( file_nc= 'C:\\Users\\backeber\\OneDrive - Stichting Deltares\\Desktop\\Project-D-HYDRO-Phase-4\\dflowfm\\dflowfm_serial\\DFM_OUTPUT_oceaneddy_expt00\\oceaneddy_expt00_map.nc' ) #ugrid_all = get_netdata(file_nc=fname) ds = xr.open_dataset(fname) ssh = get_ncmodeldata(file_nc=fname, varname='s1', timestep=0) # find location of max ssh to add to plot maxi = np.argmax(ssh) fig, ax = plt.subplots() #(figsize=(15, 10)) pc = plot_netmapdata(ugrid_all.verts, values=ssh[0, :], ax=ax, linewidth=0.5,
from dfm_tools.get_nc import get_netdata, plot_netmapdata dir_testinput = r'c:\DATA\dfm_tools_testdata' dir_output = '.' file_nc_list = [ os.path.join( dir_testinput, r'DFM_3D_z_Grevelingen\computations\run01\Grevelingen_FM_grid_20190603_net.nc' ), os.path.join(dir_testinput, 'vanNithin', 'myortho3_RGFGRID_net.nc'), os.path.join(dir_testinput, 'DFM_fou_RMM', 'rooster_rmm_v1p5_net.nc'), ] for file_nc in file_nc_list: print('plot only grid from net.nc') ugrid = get_netdata(file_nc=file_nc) fig, ax = plt.subplots() plot_netmapdata(ugrid.verts, values=None, ax=None, linewidth=0.5, color="crimson", facecolor="None") ax.set_aspect('equal') plt.savefig( os.path.join(dir_output, os.path.basename(file_nc).replace('.', '')))
# expt = 'expt03' varname = 'mesh2d_ucy' tstep2plot = 0 # # import libraries # from dfm_tools.get_nc import get_netdata, get_ncmodeldata, plot_netmapdata from dfm_tools.get_nc_helpers import get_ncvardimlist, get_timesfromnc, get_hisstationlist import matplotlib.pyplot as plt import xarray as xr import numpy as np fname = 'C:\\Users\\backeber\\OneDrive - Stichting Deltares\\Desktop\\Project-D-HYDRO-Phase-4\\dflowfm\\dflowfm_serial\\DFM_OUTPUT_ocean_eddy_' + expt + '\\ocean_eddy_' + expt + '_map.nc' ugrid_all = get_netdata(file_nc=fname) ds = xr.open_dataset(fname) fig, axs = plt.subplots(1, 1, figsize=(5, 5)) var = get_ncmodeldata(file_nc=fname, varname=varname, timestep=tstep2plot) pc = plot_netmapdata(ugrid_all.verts, values=var[0, :], ax=axs, linewidth=0.5, cmap="jet") #pc.set_clim([0, 0.25]) #axs.plot(x[:i],y[:i],'r.', markersize = 2) axs.set_title(np.datetime_as_string(ds.time.data[tstep2plot], unit='h')) #axs.set_title('t = '+str(tstep2plot)+' hours')
varlist = ['Chlfa'] #,'mesh2d_s1'] dir_shp = dir_output if not os.path.exists(dir_shp): os.makedirs(dir_shp) file_nc = os.path.join( r'p:\11203850-coastserv\06-Model\waq_model\simulations\run0_20200319\DFM_OUTPUT_kzn_waq', 'kzn_waq_0000_map.nc') vars_pd, dims_pd = get_ncvardimlist(file_nc=file_nc) vars_pd_matching = vars_pd[vars_pd.loc[:, 'long_name'].str.match('.*Chl.*')] #vars_pd_matching = vars_pd[vars_pd.loc[:,'long_name'].str.startswith('') & vars_pd.loc[:,'long_name'].str.endswith('Chlo')] varns_Chl = vars_pd_matching['nc_varkeys'].tolist() varns_Chl_long = vars_pd_matching['long_name'].tolist() ugrid = get_netdata(file_nc=file_nc) #, multipart=False) pol_shp_list = [] #partly from dfm_tools.ugrid.polygon_intersect() for iP, pol_data in enumerate(ugrid.verts): #[range(5000),:,:] pol_data_nonan = pol_data[~np.isnan(pol_data).all(axis=1)] pol_shp = Polygon(pol_data_nonan) pol_shp_list.append(pol_shp) print('creating geodataframe with cells') newdata = gpd.GeoDataFrame(crs="EPSG:4326") newdata[ 'geometry'] = pol_shp_list #way more time efficient than doing it the loop for iV, varname in enumerate(varlist): newdata[varname] = None
"import libraries" from dfm_tools.get_nc import get_netdata, get_ncmodeldata, plot_netmapdata from dfm_tools.get_nc_helpers import get_ncvardimlist, get_timesfromnc, get_hisstationlist import matplotlib.pyplot as plt import numpy as np import xarray as xr #set filename fname11 = 'c:\oceaneddy\DFM_OUTPUT_oceaneddymankmx0-expt11\oceaneddymankmx0_map.nc' # beta plane 100x100_dx2000 fname12 = 'c:\oceaneddy\DFM_OUTPUT_oceaneddymankmx0-expt12\oceaneddymankmx0_map.nc' # sferic 100x100_dx2000 fname13 = 'c:\oceaneddy\DFM_OUTPUT_oceaneddymankmx0-expt13\oceaneddymankmx0_map.nc' # sferic 100x100_dx2000 oceaneddysizefrac=0.025 fname14 = 'c:\oceaneddy\DFM_OUTPUT_oceaneddymankmx0-expt14\oceaneddymankmx0_map.nc' # init from map, use release v2021.03, oceaneddysizefrac=0.05 ds11 = xr.open_dataset(fname11) ugrid_all11 = get_netdata(file_nc=fname11) ds12 = xr.open_dataset(fname12) ugrid_all12 = get_netdata(file_nc=fname12) ds13 = xr.open_dataset(fname13) ugrid_all13 = get_netdata(file_nc=fname13) ds14 = xr.open_dataset(fname14) ugrid_all14 = get_netdata(file_nc=fname14) x11 = np.empty(ds11.time.size) y11 = np.empty(ds11.time.size) x12 = np.empty(ds12.time.size) y12 = np.empty(ds12.time.size) x13 = np.empty(ds13.time.size) y13 = np.empty(ds13.time.size) x14 = np.empty(ds14.time.size) y14 = np.empty(ds14.time.size)