Only the information for your area of interest
Download the shapefile with the administrative boundary of Vietnam
Download the netCDF file
ds_tmys_mmsVN_1976-2005_pr_historical_GFDL-ESM2M.nc
import netCDF4 import numpy as np from osgeo import gdal,osr,ogr import matplotlib.pyplot as plt # function to create the mask of your shapefile # function to create the mask of your shapefile def makeMask(lon,lat,res): source_ds = ogr.Open(shapefile) source_layer = source_ds.GetLayer() # Create high res raster in memory mem_ds = gdal.GetDriverByName('MEM').Create('', lon.size, lat.size, gdal.GDT_Byte) mem_ds.SetGeoTransform((lon.min(), res, 0, lat.max(), 0, -res)) band = mem_ds.GetRasterBand(1) # Rasterize shapefile to grid gdal.RasterizeLayer(mem_ds, [1], source_layer, burn_values=[1]) # Get rasterized shapefile as numpy array array = band.ReadAsArray() # Flush memory file mem_ds = None band = None return array # set the data directories datadir = "/path/to/" shapefile = "/path/to/VNM_adm0.shp" infile = "ds_tmys_mmsVN_1976-2005_pr_historical_GFDL-ESM2M.nc" ncs = datadir + infile # read the netcdf data file nc = netCDF4.Dataset(ncs,'r') # get the precipitation pr = nc.variables['pr'][:] # show the precipitation plt.imshow(pr) plt.show() # get the longitude information lons = nc.variables['lon'][:] # get the latitude information lats = nc.variables['lat'][:] # calculate the cellsize cellsize = lons[:][1] - lons[:][0] # create the mask mask = makeMask(lons,lats,cellsize) # show the mask plt.imshow(mask) plt.show() # mask the precipitation data precip = np.ma.masked_where(mask==0,pr) plt.imshow(precip) plt.show() # print some stats print np.min(precip), np.mean(precip), np.max(precip)
Hi, I want ask you more about netcdf file. Can you give me your contact information, please?