[ncl-talk] Regridding from OSGB spatial coordinate to Latitude-longitude in rotated pole coordinates

Karin Meier-Fleischer meier-fleischer at dkrz.de
Mon Mar 1 04:11:56 MST 2021


As Dave and Dennis already wrote there is something wrong with the 
grid_latitude and grid_longitude values. I was not able to get the 
correct plot neither with NCL, Python nor CDO.

How did you create a correct plot with Python? Did you use Iris? It 
would be very interesting to see your Python script. Is it possible to 
get it?

-Karin


Am 26.02.21 um 17:38 schrieb Dave Allured - NOAA Affiliate via ncl-talk:
> Progress.  This proves that arrays grid_latitude and grid_longitude are 
> wrong in the input file.  This is no longer an NCL problem, except for 
> possibly trying to reproject the data using projection parameters.  I 
> think Dennis already said this projection is not supported in NCL, so 
> that would be difficult.
> 
> I recommend asking Iris support for help to generate the correct lat and 
> lon arrays.  You can show them the invalid coordinates directly, leaving 
> NCL out of the loop, by sampling the output from:
> 
>      ncdump -v grid_latitude,grid_longitude file.nc <http://file.nc>
> 
> It may also be possible to get the correct coordinate arrays by some 
> other method.  You might ask the original data provider if they can 
> supply the correct lat and lon arrays to match their data.  If you can 
> get corrected arrays, it would be easy to retrofit them into your 
> temperature data file.
> 
> 
> On Fri, Feb 26, 2021 at 2:34 AM S Br <sbr.climate at gmail.com 
> <mailto:sbr.climate at gmail.com>> wrote:
> 
>     Hi,
>     The min and max of f->grid_latitude and f->grid_longitude prints
>     wrong information. You can see that the bounding box is not
>     surrounding the UK.
> 
>     (0) min=-0.8710618968191547   max=12.94984143216418
>     (0) min=-18.24145632530888   max=-6.580251255557555
> 
>     Thanks.
> 
>     On Thu, Feb 25, 2021 at 9:24 PM Dave Allured - NOAA Affiliate
>     <dave.allured at noaa.gov <mailto:dave.allured at noaa.gov>> wrote:
> 
>         Okay.  We need to evaluate whether the lat and lon coordinates
>         in your file are correct.  I see Dennis's other reply, but I am
>         suggesting a different approach using only attached coordinates,
>         and nothing else.   If the Iris package generated your file
>         correctly, then nothing else should be needed.
> 
>         Please show the min and max of f->grid_latitude and
>         f->grid_longitude.  Don't show the whole array.  The command
>         *printMinMax (var, 0)* is useful for this.  If these coordinate
>         sets are correct, then the min and max should be a bounding box
>         surrounding the UK.
> 
>         NCL works best with supplied coordinate arrays, which is the
>         method I am recommending here.  Python is doing something
>         different, perhaps recalculating based on the projection
>         information.  I don't really care about that, I just want to
>         help you get the normal NCL method working.
> 
> 
>         On Thu, Feb 25, 2021 at 1:20 PM S Br <sbr.climate at gmail.com
>         <mailto:sbr.climate at gmail.com>> wrote:
> 
>             Hi Dave,
>             Please see the attached plot, this is how it looks like if
>             we use the above statements.
>             It obviously doesn't plot over the UK.
> 
> 
>             On Thu, Feb 25, 2021 at 6:59 PM Dave Allured - NOAA
>             Affiliate <dave.allured at noaa.gov
>             <mailto:dave.allured at noaa.gov>> wrote:
> 
>                 I see what's going on.  From your other e-mail, the data
>                 file contains two different sets of coordinates.  There
>                 are the projection coordinates in meters.  Those are not
>                 latitudes and longitudes, therefore not sufficient for
>                 NCL.  But the geographic coordinates are also provided. 
>                 Double coordinates are frequently encountered in GIS
>                 related applications.  Try this:
> 
>                      tas at lat2d=f->grid_latitude
>                      tas at lon2d=f->grid_longitude
> 
> 
>                 On Thu, Feb 25, 2021 at 11:42 AM S Br
>                 <sbr.climate at gmail.com <mailto:sbr.climate at gmail.com>>
>                 wrote:
> 
>                     If I print tas at lat2d and tas at lon2d, they give the
>                     following information.
> 
>                     Variable: taslat
>                     Type: double
>                     Total Size: 896 bytes
>                                  112 values
>                     Number of Dimensions: 1
>                     Dimensions and sizes: [112]
>                     Coordinates:
>                     (0) -102000
>                     (1) -90000
>                     (2) -78000
>                     (3) -66000
>                     (4) -54000
>                     (5) -42000
>                     (6) -30000
>                     (7) -18000
>                     (8) -6000
>                     (9) 6000
>                     (10) 18000
>                     (11) 30000
>                     (12) 42000
>                     (13) 54000
>                     (14) 66000
>                     (15) 78000
>                     (16) 90000
>                     (17) 102000
>                     (18) 114000
>                     (19) 126000
>                     (20) 138000
>                     (21) 150000
>                     (22) 162000
>                     (23) 174000
>                     (24) 186000
>                     (25) 198000
>                     (26) 210000
>                     (27) 222000
>                     (28) 234000
>                     (29) 246000
>                     (30) 258000
>                     (31) 270000
>                     (32) 282000
>                     (33) 294000
>                     (34) 306000
>                     (35) 318000
>                     (36) 330000
>                     (37) 342000
>                     (38) 354000
>                     (39) 366000
>                     (40) 378000
>                     (41) 390000
>                     (42) 402000
>                     (43) 414000
>                     (44) 426000
>                     (45) 438000
>                     (46) 450000
>                     (47) 462000
>                     (48) 474000
>                     (49) 486000
>                     (50) 498000
>                     (51) 510000
>                     (52) 522000
>                     (53) 534000
>                     (54) 546000
>                     (55) 558000
>                     (56) 570000
>                     (57) 582000
>                     (58) 594000
>                     (59) 606000
>                     (60) 618000
>                     (61) 630000
>                     (62) 642000
>                     (63) 654000
>                     (64) 666000
>                     (65) 678000
>                     (66) 690000
>                     (67) 702000
>                     (68) 714000
>                     (69) 726000
>                     (70) 738000
>                     (71) 750000
>                     (72) 762000
>                     (73) 774000
>                     (74) 786000
>                     (75) 798000
>                     (76) 810000
>                     (77) 822000
>                     (78) 834000
>                     (79) 846000
>                     (80) 858000
>                     (81) 870000
>                     (82) 882000
>                     (83) 894000
>                     (84) 906000
>                     (85) 918000
>                     (86) 930000
>                     (87) 942000
>                     (88) 954000
>                     (89) 966000
>                     (90) 978000
>                     (91) 990000
>                     (92) 1002000
>                     (93) 1014000
>                     (94) 1026000
>                     (95) 1038000
>                     (96) 1050000
>                     (97) 1062000
>                     (98) 1074000
>                     (99) 1086000
>                     (100) 1098000
>                     (101) 1110000
>                     (102) 1122000
>                     (103) 1134000
>                     (104) 1146000
>                     (105) 1158000
>                     (106) 1170000
>                     (107) 1182000
>                     (108) 1194000
>                     (109) 1206000
>                     (110) 1218000
>                     (111) 1230000
> 
> 
>                     Variable: taslon
>                     Type: double
>                     Total Size: 656 bytes
>                                  82 values
>                     Number of Dimensions: 1
>                     Dimensions and sizes: [82]
>                     Coordinates:
>                     (0) -210000
>                     (1) -198000
>                     (2) -186000
>                     (3) -174000
>                     (4) -162000
>                     (5) -150000
>                     (6) -138000
>                     (7) -126000
>                     (8) -114000
>                     (9) -102000
>                     (10) -90000
>                     (11) -78000
>                     (12) -66000
>                     (13) -54000
>                     (14) -42000
>                     (15) -30000
>                     (16) -18000
>                     (17) -6000
>                     (18) 6000
>                     (19) 18000
>                     (20) 30000
>                     (21) 42000
>                     (22) 54000
>                     (23) 66000
>                     (24) 78000
>                     (25) 90000
>                     (26) 102000
>                     (27) 114000
>                     (28) 126000
>                     (29) 138000
>                     (30) 150000
>                     (31) 162000
>                     (32) 174000
>                     (33) 186000
>                     (34) 198000
>                     (35) 210000
>                     (36) 222000
>                     (37) 234000
>                     (38) 246000
>                     (39) 258000
>                     (40) 270000
>                     (41) 282000
>                     (42) 294000
>                     (43) 306000
>                     (44) 318000
>                     (45) 330000
>                     (46) 342000
>                     (47) 354000
>                     (48) 366000
>                     (49) 378000
>                     (50) 390000
>                     (51) 402000
>                     (52) 414000
>                     (53) 426000
>                     (54) 438000
>                     (55) 450000
>                     (56) 462000
>                     (57) 474000
>                     (58) 486000
>                     (59) 498000
>                     (60) 510000
>                     (61) 522000
>                     (62) 534000
>                     (63) 546000
>                     (64) 558000
>                     (65) 570000
>                     (66) 582000
>                     (67) 594000
>                     (68) 606000
>                     (69) 618000
>                     (70) 630000
>                     (71) 642000
>                     (72) 654000
>                     (73) 666000
>                     (74) 678000
>                     (75) 690000
>                     (76) 702000
>                     (77) 714000
>                     (78) 726000
>                     (79) 738000
>                     (80) 750000
>                     (81) 762000
> 
>                     On Thu, Feb 25, 2021 at 6:26 PM Dave Allured - NOAA
>                     Affiliate <dave.allured at noaa.gov
>                     <mailto:dave.allured at noaa.gov>> wrote:
> 
>                         It is starting to look like there is an error in
>                         the attached coordinates.  What are the min and
>                         max values of tas at lat2d and tas at lon2d?
> 
> 
>                         On Thu, Feb 25, 2021 at 10:45 AM S Br
>                         <sbr.climate at gmail.com
>                         <mailto:sbr.climate at gmail.com>> wrote:
> 
>                             Hi Dennis,
>                             The data draws on a wrong location and the
>                             map boundary is not aligning.
>                             It should plot over the UK which is about
>                             50-60N.
> 
>                             Thanks.
> 
>                             On Thu, Feb 25, 2021 at 5:41 PM Dennis Shea
>                             <shea at ucar.edu <mailto:shea at ucar.edu>> wrote:
> 
>                                 It helps to give NCL the correct lat/lon
>                                 array information.
> 
>                                 See attached
> 
>                                 On Thu, Feb 25, 2021 at 10:23 AM Dave
>                                 Allured - NOAA Affiliate via ncl-talk
>                                 <ncl-talk at mailman.ucar.edu
>                                 <mailto:ncl-talk at mailman.ucar.edu>> wrote:
> 
>                                     That script looks pretty good.  You
>                                     can see from the error messages that
>                                     NCL is trying to understand @lat2d
>                                     and @lon2d, but something is not
>                                     quite right with them.  We need to
>                                     see printVarSummary for tas,
>                                     tas at lat2d, and tas at lon2d.  It is
>                                     possible that dimensions are
>                                     mismatched between data and
>                                     coordinates, for some reason.
> 
>                                     There is also this note in that doc
>                                     page:  "If your data variable is a
>                                     two-dimensional (2D) array ordered
>                                     lon x lat, you will need to reorder
>                                     it to be lat x lon."  Please check
>                                     and see if this is the problem.
> 
> 
>                                     On Thu, Feb 25, 2021 at 10:00 AM S
>                                     Br <sbr.climate at gmail.com
>                                     <mailto:sbr.climate at gmail.com>> wrote:
> 
> 
>                                         Hi Dave,
>                                         Many thanks for your reply.
>                                         Sorry I missed to provide the
>                                         details.
>                                         I have run the following NCL
>                                         script  and came across the
>                                         errors given below.
>                                         You can see the attached plot
>                                         that it draws value throughout
>                                         the globe. It is supposed to be
>                                         drawn only over the UK.
>                                         Am I doing something wrong?
> 
>                                         ;********
>                                         srcFileName="tas_rcp85_land-rcm_uk_12km_01_mon_198012-208011.nc
>                                         <http://tas_rcp85_land-rcm_uk_12km_01_mon_198012-208011.nc>"
> 
>                                         ;---Read File
>                                         f=addfile(srcFileName,"r")
>                                         print(f)
> 
>                                         ;---Get the source lat/lon grid
>                                         tas=f->tas(0,0,:,:)
>                                         tas at lat2d=f->projection_y_coordinate
>                                         tas at lon2d=f->projection_x_coordinate
> 
>                                         ;---Plot data
>                                            wks = gsn_open_wks("x11","map")
> 
>                                            res              = True
>                                            res at gsnMaximize  = True     ;
>                                         maximize plot in frame
>                                            res at cnFillOn     = True     ;
>                                         turn on contour fill
>                                            res at cnLinesOn    = False    ;
>                                         turn off contour fill
>                                            res at gsnAddCyclic     = False
>                                         ;   res at mpMinLatF    =  48.0    
>                                                  ; only plot 30S to 30N
>                                         ;   res at mpMaxLatF    =  60.0
>                                         ;  res at mpMinLonF    =  -15.0    
>                                               ; only plot 30S to 30N
>                                         ;   res at mpMaxLonF    = 6.0
>                                           res at mpDataBaseVersion =
>                                         "MediumRes"
>                                             res at mpLandFillColor = "white"
> 
>                                            plot =
>                                         gsn_csm_contour_map(wks,tas(:,:),res)
> 
>                                         ********************
>                                         (0) is_valid_latlon2d_attr:
>                                         Warning: The 'lat2d' attribute
>                                         must either be
>                                         (0) the same dimension sizes as
>                                         the data, or one element larger
>                                         in both directions.
>                                         (0) Your data will most likely
>                                         not be overlaid on the map
>                                         correctly.
>                                         (0) check_for_y_lat_coord:
>                                         Warning: Data either does not
>                                         contain
>                                         (0) a valid latitude coordinate
>                                         array or doesn't contain one at all.
>                                         (0) A valid latitude coordinate
>                                         array should have a 'units'
>                                         (0) attribute equal to one of
>                                         the following values:
>                                         (0)    'degrees_north'
>                                         'degrees-north' 'degree_north'
>                                         'degrees north' 'degrees_N'
>                                         'Degrees_north' 'degree_N'
>                                         'degreeN' 'degreesN' 'deg north'
>                                         (0) is_valid_latlon2d_attr:
>                                         Warning: The 'lon2d' attribute
>                                         must either be
>                                         (0) the same dimension sizes as
>                                         the data, or one element larger
>                                         in both directions.
>                                         (0) Your data will most likely
>                                         not be overlaid on the map
>                                         correctly.
>                                         (0) check_for_lon_coord:
>                                         Warning: Data either does not
>                                         contain
>                                         (0) a valid longitude coordinate
>                                         array or doesn't contain one at all.
>                                         (0) A valid longitude coordinate
>                                         array should have a 'units'
>                                         (0) attribute equal to one of
>                                         the following values:
>                                         (0)    'degrees_east'
>                                         'degrees-east' 'degree_east'
>                                         'degrees east' 'degrees_E'
>                                         'Degrees_east' 'degree_E'
>                                         'degreeE' 'degreesE' 'deg east'
> 
>                                         On Thu, Feb 25, 2021 at 4:17 PM
>                                         Dave Allured - NOAA Affiliate
>                                         <dave.allured at noaa.gov
>                                         <mailto:dave.allured at noaa.gov>>
>                                         wrote:
> 
>                                             Does your file contain its
>                                             own lat and lon coordinate
>                                             arrays?  You will need to
>                                             check this yourself with
>                                             ncdump or NCL plus print
>                                             commands.
> 
>                                             If the file has its own
>                                             coordinate arrays, then do
>                                             not regrid or reproject. 
>                                             Doing that will lose detail
>                                             and reduce the quality of
>                                             the plotted image.  NCL is
>                                             quite capable of directly
>                                             displaying any data with
>                                             attached coordinate arrays,
>                                             and it does not need to know
>                                             anything about the
>                                             projection of the data. 
>                                             Please see documentation for
>                                             "Plotting data on a map" for
>                                             much more information about
>                                             aligning data on a map plot.
> 
>                                             https://www.ncl.ucar.edu/Applications/plot_data_on_map.shtml
>                                             <https://www.ncl.ucar.edu/Applications/plot_data_on_map.shtml>
> 
>                                             If the coordinate arrays in
>                                             the file are two
>                                             dimensional, then see
>                                             example 3, "Curvilinear
>                                             grid".  When you have 2-D
>                                             coordinates, they must be
>                                             passed to the NCL plot
>                                             routine with special
>                                             attributes *lat2d* and
>                                             *lon2d*, or alternatively
>                                             *sfXArray* and
>                                             *sfYArray* attached to the
>                                             plot resource variable. 
>                                             Note that 1-D coordinates do
>                                             not need this special
>                                             treatment because they are
>                                             normally attached directly
>                                             to the data variable to plot.
> 
> 
>                                             On Thu, Feb 25, 2021 at 8:24
>                                             AM S Br via ncl-talk
>                                             <ncl-talk at mailman.ucar.edu
>                                             <mailto:ncl-talk at mailman.ucar.edu>>
>                                             wrote:
> 
>                                                 Hi All,
>                                                 I have a set of regional
>                                                 gridded data in the
>                                                 British National Grid
>                                                 (OSGB) spatial
>                                                 coordinate system. I am
>                                                 looking to use this data
>                                                 in NCL but the
>                                                 projection is not
>                                                 correctly displayed?
>                                                 Could it be possible to
>                                                 regrid this data to
>                                                 Latitude-longitude in
>                                                 rotated pole coordinates
>                                                 or to a regular lat/lon
>                                                 grid.
> 
>                                                 I would like to mention
>                                                 that these data sets are
>                                                 generated using the Iris
>                                                 package in Python. The
>                                                 data is correctly
>                                                 displayed in Python but
>                                                 not in NCL.
> 
>                                                 For your convenience I
>                                                 have attached here a
>                                                 sample NetCDF file.
> 
>                                                 Thank you.
>                                                 SBR
> 
> 
> _______________________________________________
> ncl-talk mailing list
> ncl-talk at mailman.ucar.edu
> List instructions, subscriber options, unsubscribe:
> https://mailman.ucar.edu/mailman/listinfo/ncl-talk
> 

-- 
Dipl. Geophys. Karin Meier-Fleischer
Visualization Group - NCL, CDO, Python
Application Support

Deutsches Klimarechenzentrum GmbH (DKRZ)
Bundesstrasse 45a - D20146 Hamburg - Germany

Phone:    +49 (0)40 460094 126
Fax:      +49 (0)40 460094 270
E-Mail:   meier-fleischer at dkrz.de
URL:      www.dkrz.de

Geschäftsführer: Prof. Dr. Thomas Ludwig
Sitz der Gesellschaft: Hamburg
Amtsgericht Hamburg HRB 39784


More information about the ncl-talk mailing list