[ncl-talk] change dimensions to lat/lon

Su, Jian (GSFC-610.2)[ADNET SYSTEMS INC] jian.su at nasa.gov
Fri May 5 07:24:28 MDT 2017


Thank you Mary,

An easy way to tell if it’s a Geo2D is, to open the file with panoply and plot a variable with Geo2D, you will see the global grid as well. Otherwise, just a rectangle region.

From: Mary Haley <haley at ucar.edu>
Date: Thursday, May 4, 2017 at 7:05 PM
To: "Su, Jian (GSFC-610.2)[ADNET SYSTEMS INC]" <jian.su at nasa.gov>
Cc: Rick Brownrigg <brownrig at ucar.edu>, "ncl-talk at ucar.edu" <ncl-talk at ucar.edu>
Subject: Re: [ncl-talk] change dimensions to lat/lon

Jian,

The first issue is that you cannot assign a missing value using a different type. For example, the following will produce the same error, because "x" is an integer array, and you are trying to assign a floating point _FillValue:


  x = (/1,2,3,4,5,-999/)    ; x is an array of integers

  x at _FillValue = -999.      ; -999. is a float, which is a "higher" type than an integer

The fix in your case would be to use "totype":

  x at _FillValue = totype(x at CodeMissingValue,typeof(x))

You have to be careful with this kind of assignment, however, because you could lose precision when going from a higher type to a lower type.

As for the second question, I'm not sure what you mean by "Geo2D".

--Mary


On Tue, May 2, 2017 at 8:44 AM, Su, Jian (GSFC-610.2)[ADNET SYSTEMS INC] <jian.su at nasa.gov<mailto:jian.su at nasa.gov>> wrote:
Thank you again Rick, and thank you Dennis.

There are still two issues:

1.      x at _FillValue = x at CodeMissingValue

fatal:Type Mismatch: The type of missing value could not be converted to type of variable (x)



2.      It’s 2D but not Geo2D if you open it with eg, panoply.

From: Rick Brownrigg <brownrig at ucar.edu<mailto:brownrig at ucar.edu>>
Date: Tuesday, May 2, 2017 at 10:23 AM

To: "Su, Jian (GSFC-610.2)[ADNET SYSTEMS INC]" <jian.su at nasa.gov<mailto:jian.su at nasa.gov>>
Cc: "ncl-talk at ucar.edu<mailto:ncl-talk at ucar.edu>" <ncl-talk at ucar.edu<mailto:ncl-talk at ucar.edu>>
Subject: Re: [ncl-talk] change dimensions to lat/lon

Hi Jian,

This is from my colleague Dennis Shea;  it presumes you need to generate the actual lat/lon values:

Re: the hdf5 question ... a (720,1440) is a 'classic' 0.25 degree grid. This is offset from the poles an dateline by 0.125. The grisd point is the cented of the local grid.

nlat = 720

lat  = latGlobeFo(nlat, "lat", "latitude", "degrees_north")
lat  = lat(::-1)   ; lat: [89.875..-89.875]

print(lat)

mlon = 1440
lon  = lonGlobeFo(mlon, "lon", "longitude", "degrees_east")
lon  = (/ lon - 180. /)  ; subtract 180 from all values

lon&lon = lon            ; update coordinate

print<http://www.ncl.ucar.edu/Document/Functions/Built-in/print.shtml>(lon)               ; lon: [-179.875..179.875]

   x    = f->pixTot
   x!0 = "lat"
   x!1 = "lon"
   x at _FillValue = x at CodeMissingValue
   fout->pixTot = x



On Tue, May 2, 2017 at 7:59 AM, Su, Jian (GSFC-610.2)[ADNET SYSTEMS INC] <jian.su at nasa.gov<mailto:jian.su at nasa.gov>> wrote:
Thank you Rick,

Filedimdef successfully added lat/lon, but how can we remove DIM_001/ DIM_002 and assign lat/lon to the variable pixTot?


   file global attributes:
   dimensions:
      DIM_001 = 1440
      DIM_002 = 720
      lat = 1440
      lon = 720
   variables:
      integer pixTot ( DIM_001, DIM_002 )
         CodeMissingValue :       -9999
         DimensionNames :         nlon,nlat



From: Rick Brownrigg <brownrig at ucar.edu<mailto:brownrig at ucar.edu>>
Date: Monday, May 1, 2017 at 4:15 PM
To: "Su, Jian (GSFC-610.2)[ADNET SYSTEMS INC]" <jian.su at nasa.gov<mailto:jian.su at nasa.gov>>
Cc: "ncl-talk at ucar.edu<mailto:ncl-talk at ucar.edu>" <ncl-talk at ucar.edu<mailto:ncl-talk at ucar.edu>>
Subject: Re: [ncl-talk] change dimensions to lat/lon

Hi Jay,
There are probably several ways to do this. One that occurs to me is to create the dimensions in the new file with the "filedimdef" procedure:

    http://ncl.ucar.edu/Document/Functions/Built-in/filedimdef.shtml
So in your case, that might look something like:

    filedimdef(f,(/"lat","lon"/),(/1440, 720/), (/False,False/))
You can add the other information directly as global attributes of the file:
    f->LatitudeResolution=0.25
    f->LongitudeResolution=0.25
    ...etc...
Hope that helps...
Rick

On Mon, May 1, 2017 at 12:28 PM, Su, Jian (GSFC-610.2)[ADNET SYSTEMS INC] <jian.su at nasa.gov<mailto:jian.su at nasa.gov>> wrote:
Hello,

I am using ncl to convert HDF5 files to netCDF, and one of them looks like this:

Variable: f
Type: file
filename:         out
path:    out.nc4
   file global attributes:
   dimensions:
      DIM_001 = 1440
      DIM_002 = 720
   variables:
      integer pixTot ( DIM_001, DIM_002 )
         CodeMissingValue :       -9999
         DimensionNames :         nlon,nlat


How can I change DIM_001 and DIM_002 to lat/lon, and add the grid information eg,

LatitudeResolution=0.25;
LongitudeResolution=0.25;
NorthBoundingCoordinate=90;
SouthBoundingCoordinate=-90;
EastBoundingCoordinate=180;
WestBoundingCoordinate=-180;

Thanks,
Jay



_______________________________________________
ncl-talk mailing list
ncl-talk at ucar.edu<mailto: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<mailto: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/20170505/a80fb43e/attachment.html 


More information about the ncl-talk mailing list