[ncl-talk] Contour plot with rotated grid shifted to the west

David Brown dbrown at ucar.edu
Mon Nov 30 16:43:52 MST 2015


Hi Rabah,

It sounds like you want to regrid this data and you are not interested
in visualizing it as it is on the rotated grid. NCL provides the 2D
coordinates for the grid. They are given as:

float g10_lat_0 ( g10_x_0, g10_y_1 )
         corners : ( 48.49821, 42.45286, 63.37725, 75.19543 )
         long_name : latitude
         GridType : Rotated Latitude/Longitude Grid
         units : degrees_north
         Dj : 0.1
         Di : 0.1
         Lo2 : 24.1
         La2 : 15.2
         Lo1 : -0.4
         La1 : -11.5
         Angle_of_rotation : 0
         Longitude_of_southern_pole : -10
         Latitude_of_southern_pole : -30

      float g10_lon_1 ( g10_x_0, g10_y_1 )
         corners : ( -10.59153, 22.84093, 51.56313, -11.51082 )
         long_name : longitude
         GridType : Rotated Latitude/Longitude Grid
         units : degrees_east
         Dj : 0.1
         Di : 0.1
         Lo2 : 24.1
         La2 : 15.2
         Lo1 : -0.4
         La1 : -11.5
         Angle_of_rotation : 0
         Longitude_of_southern_pole : -10
         Latitude_of_southern_pole : -30

Given the 2D coordinate values you can regrid using the NCL ESMF
regridding routines. See
https://www.ncl.ucar.edu/Applications/ESMF.shtml for many examples of
ESMF regridding. You are looking for
a curvilinear to rectangular regridding example. One possibility to
use as a template:

https://www.ncl.ucar.edu/Applications/Templates/ESMF_curv_to_1deg.ncl

 -dave





On Mon, Nov 30, 2015 at 4:20 PM, Rabah Hachelaf <hachelaf at sca.uqam.ca> wrote:
> Hello,
>
> I am joining to this discussion because i have roughly the same problem, i
> am trying to convert grib data of HIRLAM (a sample is attached) model in
> rotated grid to regular grid.
> I tried many ways like cdo, copygb but without success to return a grib
> output in regular lat-lon grid.
>
> Any suggestions about this issue.
>
> Rabah
>
> 2015-11-30 17:54 GMT-05:00 David Brown <dbrown at ucar.edu>:
>>
>> Hi Guido,
>> Here's my take on this so far. You enclosed an image labelled "Bolam
>> Model". Is that plot supposed to represent the actual grid of your
>> data? I am asking because it does not seem possible to reconcile the
>> coordinate information that you have provided with this plot. I am
>> attaching a couple of plots and a modified version of your script (it
>> just draws the map, since we do not have the data). I can
>> approximately duplicate the map projection of the Bolam plot by eye,
>> but I have to use different numbers than those you have supplied. The
>> script first draws a map based on the rotated lat/lon extent that you
>> supplied, after conversion into "real" lat/lon values. Then it draws
>> an approximation of the Bolam map.
>>
>> Mary supplied you with the NCL script from Karin that converts from
>> rotated coordinates to regular lat/lon. I used a C code that does the
>> same thing. You could use either method to create your own 2d lat/lon
>> coordinates for this grid. If you would like the C code let me know.
>>
>> I am curious how you obtained the "real" corner values you used:
>>
>>  Res1 at tfDoNDCOverlay=True
>>  Res1 at mpLimitMode = "Corners"
>>  Res1 at mpLeftCornerLatF = 30.35458
>>  Res1 at mpLeftCornerLonF = -75.14440
>>  Res1 at mpRightCornerLatF = 65.1125
>>  Res1 at mpRightCornerLonF = 13.87071
>>
>> These do not seem to me to be correct either.
>>
>> It would help if you listed the complete set of rotated lat/lon
>> values. You could do it using ncl_filedump:
>>
>> ncl_filedump -v rlat,rlon   complete.nc
>>
>>  -dave
>>
>>
>>
>>
>>
>>
>> On Mon, Nov 30, 2015 at 2:18 PM, Mary Haley <haley at ucar.edu> wrote:
>> > Correct, NCL can't automatically "unrotate" the coordinates for you
>> > based on
>> > the rotated coordinates.
>> >
>> > Karin Meier-Fleischer of DKRZ wrote a couple of functions that
>> > "unrotate"
>> > the coordinates for you, and I've taken this example and her data file
>> > to
>> > show how this might work for your data.
>> >
>> > See the attached script. The data file can be downloaded from:
>> >
>> > wget
>> > ftp.ucar.edu:/pub/scd/haley/tas_mon_1961-1990_rectilinear_grid_2D.nc
>> >
>> > The rotated grid actually doesn't look that "rotated", because the
>> > center
>> > lat/lon actually ends up being 0.0.  But, hopefully you can use the
>> > "unrot_lat" and "unrot_lon" functions to generate your own 2D lat/lon
>> > arrays.
>> >
>> > --Mary
>> >
>> >
>> > On Mon, Nov 30, 2015 at 1:31 PM, Guido Cioni <guidocioni at gmail.com>
>> > wrote:
>> >>
>> >> I don't have the original 2D lat/lon values, that's the problem.
>> >> However,
>> >> your script won't take into consideration the fact that coordinates are
>> >> rotated, right? My rlon spans from approximately 340 to 392 degrees,
>> >> while
>> >> rlat from - 10 to +22.. Of course these are not the real coordinates to
>> >> be
>> >> used for plotting the map, since they are expressed in  the rotated
>> >> framework. Do you see what I mean?
>> >> I would like to provide you with the data file but is fairly big (gigs)
>> >>
>> >> Guido,
>> >>
>> >> I looked at your script further, and I think the issue is with the map
>> >> corners you've selected.  You are using the 1D rotated coordinate
>> >> arrays to
>> >> choose the corners, but this is likely not correct. What you really
>> >> need are
>> >> the original 2D lat/lon values, as the two examples illustrated, but I
>> >> don't
>> >> see that you have this information on the file.
>> >>
>> >> Did you try plotting the data using the coordinate arrays? I've created
>> >> a
>> >> script for you to try, although it's untested because I don't have your
>> >> data
>> >> file.
>> >>
>> >> Thanks,
>> >>
>> >> --Mary
>> >>
>> >>
>> >> On Mon, Nov 30, 2015 at 11:45 AM, Guido Cioni <guidocioni at gmail.com>
>> >> wrote:
>> >>>
>> >>> Sure, here it is. I think that the problem is that ncl is expecting
>> >>> 2-D
>> >>> latitudes and longitudes while I have 1-D rlon and rlat..
>> >>>
>> >>> Yes I tried commenting the centers.
>> >>>
>> >>> m300382 at mlogin103% ncl_filedump complete.nc
>> >>> Copyright (C) 1995-2015 - All Rights Reserved
>> >>> University Corporation for Atmospheric Research
>> >>> NCAR Command Language Version 6.3.0
>> >>> The use of this software is governed by a License Agreement.
>> >>> See http://www.ncl.ucar.edu/ for more details.
>> >>>
>> >>> Variable: f
>> >>> Type: file
>> >>> filename:       complete
>> >>> path:   complete.nc
>> >>>    file global attributes:
>> >>>       CDI : Climate Data Interface version 1.4.7
>> >>> (http://code.zmaw.de/projects/cdi)
>> >>>       Conventions : CF-1.0
>> >>>       history : Fri Nov 27 13:33:35 2015: cdo -f nc copy
>> >>> 2014011700_000.grib2 2014011700_001.grib2 2014011700_002.grib2
>> >>> 2014011700_003.grib2 2014011700_004.grib2 2014011700_005.grib2
>> >>> 2014011700_006.grib2 2014011700_007.grib2 2014011700_008.grib2
>> >>> 2014011700_009.grib2 2014011700_010.grib2 2014011700_011.grib2
>> >>> 2014011700_012.grib2 2014011700_013.grib2 2014011700_014.grib2
>> >>> 2014011700_015.grib2 2014011700_016.grib2 2014011700_017.grib2
>> >>> 2014011700_018.grib2 2014011700_019.grib2 2014011700_020.grib2
>> >>> 2014011700_021.grib2 2014011700_022.grib2 2014011700_023.grib2
>> >>> 2014011700_024.grib2 2014011700_025.grib2 2014011700_026.grib2
>> >>> 2014011700_027.grib2 2014011700_028.grib2 2014011700_029.grib2
>> >>> 2014011700_030.grib2 2014011700_031.grib2 2014011700_032.grib2
>> >>> 2014011700_033.grib2 2014011700_034.grib2 2014011700_035.grib2
>> >>> 2014011700_036.grib2 2014011700_037.grib2 2014011700_038.grib2
>> >>> 2014011700_039.grib2 2014011700_040.grib2 2014011700_041.grib2
>> >>> 2014011700_042.grib2 2014011700_043.grib2 2014011700_044.grib2
>> >>> 2014011700_045.grib2 2014011700_046.grib2 2014011700_047.grib2
>> >>>       CDO : Climate Data Operators version 1.4.7
>> >>> (http://code.zmaw.de/projects/cdo)
>> >>>    dimensions:
>> >>>       ncl_scalar = 1
>> >>>       rlon = 706
>> >>>       rlat = 434
>> >>>       lev = 20
>> >>>       time = 73  // unlimited
>> >>>    variables:
>> >>>       double rlon ( rlon )
>> >>>          long_name :    longitude in rotated pole grid
>> >>>          units :        degrees
>> >>>          standard_name :        grid_longitude
>> >>>          axis : X
>> >>>
>> >>>       double rlat ( rlat )
>> >>>          long_name :    latitude in rotated pole grid
>> >>>          units :        degrees
>> >>>          standard_name :        grid_latitude
>> >>>          axis : Y
>> >>>
>> >>>       character rotated_pole ( ncl_scalar )
>> >>>          grid_mapping_name :    rotated_latitude_longitude
>> >>>          grid_north_pole_latitude :     44.999996
>> >>>          grid_north_pole_longitude :     144
>> >>>
>> >>>       double lev ( lev )
>> >>>          long_name :    pressure
>> >>>          units :        Pa
>> >>>          axis : Z
>> >>>
>> >>>       double time ( time )
>> >>>          units :        hours since 2014-01-17 00:00:00
>> >>>          calendar :     proleptic_gregorian
>> >>>
>> >>>       float gh ( time, lev, rlat, rlon )
>> >>>          long_name :    Geopotential Height
>> >>>          units :        gpm
>> >>>          code : 5
>> >>>          grid_mapping : rotated_pole
>> >>>
>> >>>       float t ( time, lev, rlat, rlon )
>> >>>          long_name :    Temperature
>> >>>          units :        K
>> >>>          grid_mapping : rotated_pole
>> >>>
>> >>>       float u ( time, lev, rlat, rlon )
>> >>>          long_name :    U velocity
>> >>>          units :        m s**-1
>> >>>          code : 2
>> >>>          grid_mapping : rotated_pole
>> >>>
>> >>>       float v ( time, lev, rlat, rlon )
>> >>>          long_name :    V velocity
>> >>>          units :        m s**-1
>> >>>          code : 3
>> >>>          grid_mapping : rotated_pole
>> >>>
>> >>>       float w ( time, lev, rlat, rlon )
>> >>>          long_name :    Vertical velocity
>> >>>          units :        Pa s**-1
>> >>>          code : 8
>> >>>          grid_mapping : rotated_pole
>> >>>
>> >>>       float pv ( time, lev, rlat, rlon )
>> >>>          long_name :    Potential vorticity
>> >>>          units :        K m**2 kg**-1 s**-1
>> >>>          code : 14
>> >>>          grid_mapping : rotated_pole
>> >>>
>> >>>       float mterh ( time, rlat, rlon )
>> >>>          long_name :    Model terrain height
>> >>>          units :        m
>> >>>          code : 7
>> >>>          grid_mapping : rotated_pole
>> >>>
>> >>> Il 30 nov 2015 6:28 PM, "Mary Haley" <haley at ucar.edu> ha scritto:
>> >>>>
>> >>>> Guido,
>> >>>>
>> >>>> I'm hoping Dave will weigh in here, but it would help if we could at
>> >>>> least see the output from:
>> >>>>
>> >>>> ncl_filedump pv.nc
>> >>>>
>> >>>> Sometimes the global attributes of the file will give some valuable
>> >>>> information about the correct map projection parameters.
>> >>>>
>> >>>> Did you actually try commenting out the mpCenterLatF and mpCenterLonF
>> >>>> settings?  In the script you included, these two resources are still
>> >>>> being
>> >>>> set.
>> >>>>
>> >>>> It's possible that the data has already been rotated for you.
>> >>>>
>> >>>> --Mary
>> >>>>
>> >>>>
>> >>>>
>> >>>>
>> >>>> On Mon, Nov 30, 2015 at 1:33 AM, Guido Cioni <guidocioni at gmail.com>
>> >>>> wrote:
>> >>>>>
>> >>>>> Hi all,
>> >>>>> I’m trying to produce a contour plot with data on a rotated grid.
>> >>>>> The
>> >>>>> original data look like that
>> >>>>>
>> >>>>>
>> >>>>> Since I have the rotated north pole latitude (44.999996) and
>> >>>>> longitude
>> >>>>> (144.0) in my data file I used the second example of the support
>> >>>>> page on
>> >>>>> rotated grid.
>> >>>>>
>> >>>>>  Res1 at tfDoNDCOverlay=True
>> >>>>>  Res1 at mpLimitMode = "Corners"
>> >>>>>  Res1 at mpLeftCornerLatF = lat(0)
>> >>>>>  Res1 at mpLeftCornerLonF = lon(0)
>> >>>>>  Res1 at mpRightCornerLatF = lat(nlat-1)
>> >>>>>  Res1 at mpRightCornerLonF = lon(nlon-1)
>> >>>>>  Res1 at mpCenterLatF           = 90 - north_pole_lat
>> >>>>>  Res1 at mpCenterLonF           = 180 + north_pole_lon
>> >>>>>
>> >>>>> However I get this result ( I believe this is Australia):
>> >>>>>
>> >>>>>
>> >>>>> After several attempts I was able to plot the data using as bounds
>> >>>>> the
>> >>>>> “real” coordinates of the rotated projection, without specifying the
>> >>>>> center,
>> >>>>> e.g. :
>> >>>>>
>> >>>>>  Res1 at tfDoNDCOverlay=True
>> >>>>>  Res1 at mpLimitMode = "Corners"
>> >>>>>  Res1 at mpLeftCornerLatF = 30.35458
>> >>>>>  Res1 at mpLeftCornerLonF = -75.14440
>> >>>>>  Res1 at mpRightCornerLatF = 65.1125
>> >>>>>  Res1 at mpRightCornerLonF = 13.87071
>> >>>>>
>> >>>>> But the contour plot is still slightly shifted to the west as you
>> >>>>> can
>> >>>>> see in this image:
>> >>>>>
>> >>>>>
>> >>>>> I know that in the data file my coordinates span from
>> >>>>> rlon={340,392.875} and rlat={-9.962499,22.512501}.
>> >>>>>
>> >>>>> What am I missing?
>> >>>>> Is there any additional documentation on rotated grid?
>> >>>>>
>> >>>>> Attached is my NCL script (data are too big).
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>> Guido Cioni
>> >>>>> http://guidocioni.altervista.org
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>> _______________________________________________
>> >>>>> ncl-talk mailing list
>> >>>>> ncl-talk at ucar.edu
>> >>>>> List instructions, subscriber options, unsubscribe:
>> >>>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>> >>>>>
>> >>>>
>> >>
>> >
>> >
>> > _______________________________________________
>> > ncl-talk mailing list
>> > ncl-talk at ucar.edu
>> > List instructions, subscriber options, unsubscribe:
>> > http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>> >
>>
>> _______________________________________________
>> ncl-talk mailing list
>> ncl-talk at ucar.edu
>> List instructions, subscriber options, unsubscribe:
>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>
>
>
>
> --
> ------------------------------
> Cordialement,
> Best regards,
> Rabah Hachelaf


More information about the ncl-talk mailing list