[ncl-talk] ESMF Conservative Regridding of population and population density

Tabish Ansari tabishumaransari at gmail.com
Thu Mar 16 10:55:01 MDT 2023


Hi

I need to understand a fundamental feature of the ESMF "conserve"
regridding: does it conserve fluxes or absolute values?

I've got a *population count* and *population density* data on a native
1deg x 1deg grid. Ultimately, I need a population count on a 1.9deg x
2.5deg grid. I tried to achieve this in two ways:

1. Regridding the population count directly: This gives me a grid sum
of 1.67 billion instead of 7.96 billion (world population in 2020) as
obtained from the native grid sum. Strangely enough, if I multiply 1.67
billion with 1.9*2.5, the result gets pretty close to 7.96 billion but I'm
unable to interpret why that might be the case.

2. Regridding population density data and multiplying by a matrix of
gridpoint areas (I have obtained this separately) to get total population.
In this case, the grid sum turns out to be 13.5 billion which is
significantly higher than the actual world population of 7.96 billion again.

So, my first question is, which is the right way to regrid population when
using conservative remapping? And further, are there any obvious issues in
my approach?

Here's my code to generate weights file:
































*load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"load
"$NCARG_ROOT/lib/ncarg/nclscripts/esmf/ESMF_regridding.ncl"begin    sfile =
addfile("/work/users/tan/gpw-v4-population-density-rev11_totpop_1_deg_nc/gpw_v4_population_density_rev11_1_deg.nc
<http://gpw_v4_population_density_rev11_1_deg.nc>","r")    dfile =
addfile("/data/sync/modelinput/CAMS-Emissions-tbu/HTAP_transient_1.9x2.5_emis_NO_20201217.nc
<http://HTAP_transient_1.9x2.5_emis_NO_20201217.nc>","r")    varname =
"Population Density, v4.11 (2000, 2005, 2010, 2015, 2020): 1 degree" ; A
TERRIBLE VARIABLE NAME!    pop     = sfile->$varname$    pop2020 =
pop(4,:,:) ; EXTRACTING 2D POPULATION DATA FOR THE YEAR 2020    nox_cams =
dfile->glseas(0,:,:)    poplat = pop2020&latitude    poplon =
pop2020&longitude    camslat = nox_cams&lat    camslon = nox_cams&lon   Opt
               = True   Opt at ForceOverwrite = True   Opt at InterpMethod   =
"conserve"   Opt at SrcGridLon        = poplon   Opt at SrcGridLat        =
poplat   Opt at DstGridLon        = camslon   Opt at DstGridLat        = camslat
 pop_regrid = ESMF_regrid(pop2020,Opt)   printVarSummary(pop_regrid)end*

Here's the code to generate the regridded data using the newly created
weights file:













*beginsfile =
addfile("/work/users/tan/gpw-v4-population-density-rev11_totpop_1_deg_nc/gpw_v4_population_density_rev11_1_deg.nc
<http://gpw_v4_population_density_rev11_1_deg.nc>","r")dfile =
addfile("/work/users/tan/gpw-v4-population-density-rev11_totpop_1_deg_nc/popdensity2020_regridded.nc
<http://popdensity2020_regridded.nc>","c")varname = "Population Density,
v4.11 (2000, 2005, 2010, 2015, 2020): 1 degree" pop     =
sfile->$varname$pop2020 = pop(4,:,:)WF =
"/work/users/tan/nclscripts/pop-regridfiles/weights_file.nc
<http://weights_file.nc>"pop2020_regrid =
ESMF_regrid_with_weights(pop2020,WF,False) ;REGRIDDINGdfile->popdensity2020
= pop2020_regrid  ;STORINGprint("Regridded!")*


*end*

Thanks a lot.

best regards,

Tabish

-------------------------------
Dr Tabish Ansari
Research Associate
Air Quality Modelling Group
IASS-Potsdam
Germany
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.ucar.edu/pipermail/ncl-talk/attachments/20230316/4def3803/attachment.htm>


More information about the ncl-talk mailing list