[ncl-talk] Data projected in a Wrong Location on Map

Dennis Shea shea at ucar.edu
Mon Dec 3 14:35:47 MST 2018

```The most important rule of data processing is to *look at your data*.
In your case 'u' has the following structure and contents.

Variable: u
Dimensions and sizes:   [time | 97] x [lat | 1202] x [lon | 1202]
Coordinates:
time: [ 0.. 0]

*            lat: [   1..1202]     <=== This is wrong*

*            lon: [   1..1202]    <=== This is wrong*

*These are sequential integer values not latitudes and longitudes.*

If you want a basic contour map with no georeferencing, then use:

plot = *gsn_csm_contour*
<http://test.www.ncl.ucar.edu/Document/Graphics/Interfaces/gsn_csm_contour.shtml>
(wks,u(3,:,:),res)
=========================================

Since, you are plotting over a map

plot = *gsn_csm_contour_map*
<http://test.www.ncl.ucar.edu/Document/Graphics/Interfaces/gsn_csm_contour_map.shtml>
(wks,u(3,:,:),res)

The *function is looking for lat/lon coordinate variables with appropriate
units.*

============================================
Try something like:
++++++++++++++++++++++++++++++++++++++++
;;u   = f1->u10   ;g different variables 97 x 1202 x 1202

ntim = 97
nlat = 1202
mlon = 1202
u    = random_normal(-10,50,(/ntim,nlat,mlon/))
lat  = fspan(13,47,nlat)
lon  = fspan(-95,-48,mlon)

lat!0= "lat"                   ; name dimension
lat at units = "degrees_north"    ; associate units attribute
lat&lat   = lat                ; coordinate variable

lon!0= "lon"
lon at units = "degrees_east"
lon&lon   = lon

u!0 = "time"
u!1 = "lat"
u!2 = "lon"

u&lat = lat
u&lon = lon

printVarSummary(lat)
print("-----")
printVarSummary(lon)
print("-----")
printVarSummary(u)
print("-----")
++++++++++++++++++++++++
+++++++++++++++++++++++++
Variable: lat
Type: float
Total Size: 4808 bytes
1202 values
Number of Dimensions: 1
Dimensions and sizes:    [lat | 1202]

*Coordinates:             lat: [13..47]*
Number Of Attributes: 1
*units :    degrees_north*
(0)    -----

Variable: lon
Type: float
Total Size: 4808 bytes
1202 values
Number of Dimensions: 1
Dimensions and sizes:    [lon | 1202]

*Coordinates:             lon: [-95..-48]*
Number Of Attributes: 1
units :    degrees_east
(0)    -----

*Variable: u*
Type: float
Total Size: 560583952 bytes
140145988 values
Number of Dimensions: 3
Dimensions and sizes:    [time | 97] x [lat | 1202] x [lon | 1202]

*Coordinates:             lat: [13..47]            lon: [-95..-48]*
(0)    -----

On Mon, Dec 3, 2018 at 1:30 PM Mansur Ali Jisan <jisan.mansur at gmail.com>
wrote:

> Dear Mary,
>
> Thank you for the suggestions. I made modifications according to the
> suggestion but now the storm center is not showing in the domain (figure
> attached). It looks to me that the lat long values are still not attached
> with the variable u that I'm trying to plot. I also looked at the example
> plots in the NCL website but couldn't able to figure it out.
>
> The *PrintVarSummary* for *u *variable is:
>
> Variable: u
> Type: float
> Total Size: 560583952 bytes
>             140145988 values
> Number of Dimensions: 3
> Dimensions and sizes:   [time | 97] x [lat | 1202] x [lon | 1202]
> Coordinates:
>             time: [ 0.. 0]
>             lat: [   1..1202]
>             lon: [   1..1202]
> Number Of Attributes: 1
>   units :       m/s
>
> The *PrintVarSummary *for *lat *is:
>
> Variable: lat
> Type: float
> Total Size: 4808 bytes
>             1202 values
> Number of Dimensions: 1
> Dimensions and sizes:   [1202]
> Coordinates:
>
> The *PrintVarSummary *for *lon *is:
>
> Variable: lon
> Type: float
> Total Size: 4808 bytes
>             1202 values
> Number of Dimensions: 1
> Dimensions and sizes:   [1202]
> Coordinates:
>
>
>
> And here's the *modified code*:
>
> begin
>   u     = f1->u10   ; 97 x 1202 x 1202
>   lat   = fspan(13,47,1202)
>   lon  = fspan(-95,-48,1202)
>
>  printVarSummary(lat)
>  printVarSummary(lon)
>
>   u!1="lat"
>   u!2="lon"
>
>   u&lat at units = "degrees_north"
>   u&lon at units = "degrees_east"
>
>  printVarSummary(u)
>
> ;---Start the graphics
>   wks = gsn_open_wks("png","irma-u10")
>   gsn_define_colormap(wks,"matlab_jet")
>
> ;---Set some resources
>   res                = True
>   res at gsnMaximize    = True     ; maximize plot in frame
>   res at gsnAddCyclic   = False
>   res at cnFillOn       = True     ; turn on contour fill
>   res at cnLinesOn      = False    ; turn off contour lines
>   res at cnLineLabelsOn = False    ; turn off contour line labels
>   res at gsnScalarContour            = True          ; contours desired
>   res at tiMainString   = "Hurricane Irma"
>   res at trGridType           = "TriangularMesh"
>   res at gsnScalarContour = True
>   res at cnLevelSelectionMode = "ManualLevels"
>   res at cnMinLevelValF       = 0
>   res at cnMaxLevelValF       = 40
>   res at cnLevelSpacingF      = 5
>
>   res at mpProjection                = "CylindricalEquidistant"      ;
> projection
>   res at mpDataBaseVersion           = "MediumRes"
>
>
>   res at mpLimitMode = "LatLon"
>   res at mpMinLatF = 13.0
>   res at mpMaxLatF = 47.0
>   res at mpMinLonF = -95.0
>   res at mpMaxLonF = -48.0
>
>
>   plot = gsn_csm_contour_map(wks,u(3,:,:),res)
>
> end
>
>
> On Mon, Dec 3, 2018 at 11:10 AM Mary Haley <haley at ucar.edu> wrote:
>
>> Dear Mansur,
>>
>> There are a couple of issues with your script.
>>
>> The first is that you are setting:
>>
>>   res at tfDoNDCOverlay              = True                 ; do not
>> transform data
>>
>> This tells NCL to ignore any lat/lon information attached to your data,
>> and to instead assume that the map resources (res at mpXXXX) have been set
>> up exactly to match the projection of your data.  Remove that line.
>>
>> The second is that you are providing conflicting information to the
>> plotting program by adding too much lat/lon information to your data
>> variable.  You have:
>>
>>  lat2d   = fspan(13,47,1202)
>>   lon2d   = fspan(-95,-58,1202)
>>  printVarSummary(u)
>>  printVarSummary(lat2d)
>>  printVarSummary(lon2d)
>>   u!1="lat2d"
>>   u!2="lon2d"
>>
>>   u at lat2d=lat2d
>>   u at lon2d=lon2d
>>
>>   u&lat2d at units = "degrees_north"
>>   u&lon2d at units = "degrees_east"'
>>
>> The first issue is that these two lines should NOT be set at all:
>>
>>   u at lat2d=lat2d
>>   u at lon2d=lon2d
>>
>> They are only to be used in the case where you have curvilinear data,
>> which is data represented by two-dimensional lat/lon arrays. The way you
>> are setting up your lat/lon arrays is for rectilinear data, which means you
>> have one-dimensional latitudes for all your Y locations, and
>> one-dimensional longitudes for your X locations.
>>
>> While it's not wrong, I suggest not using "lat2d" and "lon2d" for your
>> lat / lon variable names, because this is misleading.  Instead, I suggest:
>>
>>  lat   = fspan(13,47,1202)
>>  lon   = fspan(-95,-58,1202)
>>  printVarSummary(u)
>>  printVarSummary(lat)
>>  printVarSummary(lon)
>>  u!1="lat"
>>  u!2="lon"
>>
>>   u&lat at units = "degrees_north"
>>   u&lon at units = "degrees_east"'
>>
>> the "plotting data on a map" examples page:
>>
>> http://www.ncl.ucar.edu/Applications/plot_data_on_map.shtml
>>
>> Regards,
>>
>> --Mary
>>
>>
>> On Sun, Dec 2, 2018 at 9:28 PM Mansur Ali Jisan <jisan.mansur at gmail.com>
>> wrote:
>>
>>> Dear NCL Community,
>>>
>>> I'm facing some problems in projecting my data properly on a map. I'm
>>> working with a NetCDF file from a parametric wind model for the case of
>>> Hurricane Irma. The variable that I'm trying to plot is u10. The problem is
>>> that it doesn't have any coordinate values attached to it. But from the
>>> input data, I know the extent of latitude and longitude. So, I defined that
>>> in the NCL script but from the visualization, the location of the center
>>> position was shown in a wrong position.
>>>
>>> Following is the script that I tried:
>>>
>>> begin
>>>   u = f1->u10   ; 97 x 1202 x 1202
>>>   lat2d   = fspan(13,47,1202)
>>>   lon2d   = fspan(-95,-58,1202)
>>>  printVarSummary(u)
>>>  printVarSummary(lat2d)
>>>  printVarSummary(lon2d)
>>>   u!1="lat2d"
>>>   u!2="lon2d"
>>>
>>>   u at lat2d=lat2d
>>>   u at lon2d=lon2d
>>>
>>>   u&lat2d at units = "degrees_north"
>>>   u&lon2d at units = "degrees_east"
>>>
>>>   printVarSummary(u)
>>>
>>>
>>> ;---Start the graphics
>>>   wks = gsn_open_wks("png","irma-u10")
>>>   gsn_define_colormap(wks,"matlab_jet")
>>> ;---Set some resources
>>>   res                = True
>>>   res at gsnMaximize    = True     ; maximize plot in frame
>>>   res at gsnAddCyclic   = False
>>>   res at cnFillOn       = True     ; turn on contour fill
>>>   res at cnLinesOn      = False    ; turn off contour lines
>>>   res at cnLineLabelsOn = False    ; turn off contour line labels
>>>   res at gsnScalarContour            = True          ; contours desired
>>>   res at tiMainString   = "Hurricane Irma"
>>>   res at trGridType           = "TriangularMesh"
>>>   res at gsnScalarContour = True
>>>   res at cnLevelSelectionMode = "AutomaticLevels"
>>>   res at mpProjection                = "CylindricalEquidistant"      ;
>>> projection
>>>   res at mpDataBaseVersion           = "MediumRes"          ; use more
>>> detailed maps
>>>   res at mpLimitMode = "LatLon"
>>>   res at mpMinLatF = 13.0
>>>   res at mpMaxLatF = 47.0
>>>   res at mpMinLonF = -95.0
>>>   res at mpMaxLonF = -58.0
>>>   res at tfDoNDCOverlay              = True                 ; do not
>>> transform data
>>>
>>>   plot = gsn_csm_contour_map(wks,u(3,:,:),res)
>>>
>>> end
>>>
>>> *NCL_Filedump* for the input file is the following:
>>>
>>> Variable: f
>>> Type: file
>>> filename:       boundary_parametric
>>> path:   boundary_parametric.nc
>>>    file global attributes:
>>>       time-units : start time: 2017-09-10 00:06:00 +00:00
>>>    dimensions:
>>>       y_axis = 1202
>>>       x_axis = 1202
>>>       time = 97  // unlimited
>>>    variables:
>>>       double y_axis ( y_axis )
>>>          units :        unit-less
>>>
>>>       double x_axis ( x_axis )
>>>          units :        unit-less
>>>
>>>       float time ( time )
>>>          units :        hours
>>>
>>>         float utx ( time )
>>>          units :
>>>
>>>       float uty ( time )
>>>          units :
>>>
>>>       float rmax ( time )
>>>          units :
>>>
>>>       float wsmax ( time )
>>>          units :
>>>
>>>       float u10 ( time, y_axis, x_axis )
>>>          units :        m/s
>>>
>>>       float v10 ( time, y_axis, x_axis )
>>>          units :        m/s
>>>
>>>       float utop ( time, y_axis, x_axis )
>>>          units :        m/s
>>>
>>>       float vtop ( time, y_axis, x_axis )
>>>          units :        m/s
>>>
>>>
>>>
>>> Mansur
>>>
>>> --
>>> *Mansur Ali Jisan*
>>> Ph.D. Student
>>> URI Graduate School of Oceanography, RI 02882
>>>
>>> <hasancee at iut-dhaka.edu>
>>> _______________________________________________
>>> ncl-talk mailing list
>>> ncl-talk at ucar.edu
>>> List instructions, subscriber options, unsubscribe:
>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>
>>
>
> --
> *Mansur Ali Jisan*
> Ph.D. Student
> URI Graduate School of Oceanography, RI 02882
> http://jisan-mansur.com/
>
> <hasancee at iut-dhaka.edu>
> _______________________________________________
> ncl-talk mailing list
> ncl-talk at ucar.edu
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20181203/71bf125b/attachment.html>
```