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

David Brown dbrown at ucar.edu
Mon Nov 30 15:54:46 MST 2015

```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
>>> 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
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pv_test.000001.png
Type: image/png
Size: 106468 bytes
Desc: not available
Url : http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20151130/c9e08ee3/attachment.png
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pv_test.000002.png
Type: image/png
Size: 98260 bytes
Desc: not available
Url : http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20151130/c9e08ee3/attachment-0001.png
-------------- next part --------------
A non-text attachment was scrubbed...
Name: plot_pv-mod.ncl
Type: application/octet-stream
Size: 2697 bytes
Desc: not available
Url : http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20151130/c9e08ee3/attachment.obj
```