[gradsusr] Saving NetCDF lon parameter in geographic
Jennifer Adams
jma at cola.iges.org
Wed Apr 18 20:28:27 EDT 2012
Mark,
GrADS is not going to be able to do what you want effortlessly. The data do not have linear X or Y axes, so GrADS will never consider it to be 'wrapping' the globe and won't convert longitudes for you. You will have to do some manipulation of the coordinate vaues yourself, outside of GrADS.
I would try to write out the data that you want with the original longitudes using sdfwrite, then create a 2nd netcdf file with a new variable that is lon-360 (or whatever conversion is necessary to get the range of values you require), then use ncdump/ncgen or one of the NCO tools to overwrite the coordinate data in your output file and create a 3rd netcdf file that meets your needs.
Another thing to try is to use lterp to regrid the data to a regular, linear, wrapping grid that is similar to the native grid. Defined grids will never 'wrap', but you might be able to sdfwrite the regridded data, then bring that back in, make it wrap and write it out again with your desired longitudes. Kludgey, but it might work. I think plan A in the previous paragraph will be simpler.
--Jennifer
On Apr 18, 2012, at 11:36 AM, Mark Hess wrote:
> I should clarify. These are ocean current data retrieved as U & V vector components from the HYCOM oceanographic model. I am now getting the data directly from their server and then sub setting using the sdfwrite command. The script for the U component is below. The longitude parameter in the original data is 0-360 and opposed to -180 to 180, so if I 'set lon -121 -116' to extract an area off of Southern California, it will not work. Ultimately, what I need is an .nc file covering 32N-35N x 116W-121W for both the U and V vector components with the longitude in geographic or world format (i.e. -180 to 180). Just not sure how to convert from the original format. I can get the numbers I need by subtracting 360 from the lon value, but not sure how to do this in GrADS. The ncdump output from the file created by the .gs script below is attached. Any ideas you can offer are much appreciated.
>
> 'reinit'
> 'sdfopen http://tds.hycom.org/thredds/dodsC/datasets/global/GLBa0.08_rect/data/uvel/rarchv.2012_106_00_3zu.nc'
> *
> * Save sub-sectioned NetCDF files
> *
> * Create Southern California .nc file
> 'q file'
> 'set gxout shaded'
> 'set lat 32 35'
> 'set lon 239 244'
> 'set lev 0'
> 'd u'
> 'define u = u'
> 'set sdfwrite hycom_u_socal.nc'
> 'sdfwrite u'
> 'quit'
>
> Thanks.
>
> Mark
>
>
>
> ----- Original Message -----
> From: Jennifer Adams
> To: GrADS Users Forum
> Sent: Wednesday, April 18, 2012 8:20 AM
> Subject: Re: [gradsusr] Saving NetCDF lon parameter in geographic
>
> Mark,
> If your original data set "wraps" the globe, then it should work fine:
>
> 'sdfopen foo.nc
> 'set lon -180 180'
> 'define var'
> 'sdfwrite var'
>
> If not, please send the output from ncdump -c on your original file, your script to generate a new netcdf file using sdfwrite, and the output from ncdump -c on your new netcdf file. Your GrADS version would be helpful too.
>
> --Jennifer
>
> On Apr 13, 2012, at 7:36 PM, Mark Hess wrote:
>
>> Thanks Chuck - Looks like that validates my suspicion that I cannot change
>> the lon coordinates from the 0-360 to world coordinates 180 to -180 when
>> extracting a subset of the original file to a smaller .nc file. I'll
>> consider different options. Thanks. Mark.
>>
>>
>> ----- Original Message -----
>> From: "Charles Seman" <charles.seman at noaa.gov>
>> To: "GrADS Users Forum" <gradsusr at gradsusr.org>
>> Sent: Thursday, April 12, 2012 3:44 PM
>> Subject: Re: [gradsusr] Saving NetCDF lon parameter in geographic
>>
>>
>>> Mark,
>>>
>>> The documentation at
>>> http://grads.iges.org/grads/gadoc/gradcomdsdfwrite.html states:
>>> "By default, the output file will have a coordinate variable only for
>>> varying dimensions in the defined variable; non-varying dimensions will
>>> not appear as a coordinate variable with a size of 1. However, as of
>>> version 2.0.a5, options have been added to the set sdfwrite command to
>>> force the variable in the output file to have at least 4 or all 5
>>> dimensions. When either of these options to set sdfwrite are used, the
>>> output file will retain information about the values of the dimensions
>>> that were fixed when the variable was defined; non-varying dimensions
>>> will appear as a coordinate variable of size 1. For example, if your
>>> defined variable is 500mb height on14may2002 (a 2D variable that varies
>>> only in lon and lat), and you use the -4d option, the output file with
>>> show height as a 4D variable with a Z dimension of size 1 called 'lev'
>>> with a value "500 mb", and a T dimension of size 1 called 'time' with a
>>> value of "0 minutes since 2002-05-14 00:00".
>>>
>>> Seems the key phrase seems to be "the output file will retain
>>> information about the values of the dimensions that were fixed when the
>>> variable was defined"... I confirmed what I thought this meant on a file
>>> which has grid longitudes in the -180 to 180 range and found the
>>> following results:
>>> --------------------------------------------------------------------
>>> ...using "native" longitude range:
>>> ga-> sdfopen 3B42.1002.V6.nc
>>> Scanning self-describing file: 3B42.1002.V6.nc
>>> SDF file 3B42.1002.V6.nc is open as file 1
>>> LON set to 0 360
>>> LAT set to -49.875 49.875
>>> LEV set to 0 0
>>> Time values set: 2010:2:14:22 2010:2:14:22
>>> E set to 1 1
>>> ga-> q file
>>> File 1 : NASA TRMM 3B42 3-Hourly 0.25 degree TRMM and Other Satellites
>>> Precipitation Product (Version 6)
>>> Descriptor: 3B42.1002.V6.nc
>>> Binary: 3B42.1002.V6.nc
>>> Type = Gridded
>>> Xsize = 1440 Ysize = 400 Zsize = 1 Tsize = 1 Esize = 1
>>> Number of Variables = 2
>>> precipitation 0 t,y,x precipitation
>>> relativeerror 0 t,y,x relativeError
>>> ga-> set lon -180 180
>>> LON set to -180 180
>>> ga-> set lat -90 90
>>> LAT set to -90 90
>>> ga-> set sdfwrite precipitation.3B42.1002.V6.nc
>>> SDFWrite file name = precipitation.3B42.1002.V6.nc
>>> SDFWrite will replace an existing file
>>> ga-> sdfwrite precipitation
>>> SDFWRITE error: no defined variables
>>> ga-> define precipitation = precipitation
>>> Define memory allocation size = 8328992 bytes
>>> ga-> sdfwrite precipitation
>>> Wrote variable precipitation to precipitation.3B42.1002.V6.nc
>>> ...
>>> cjs: /tmp/data/precip/trmm/3B42.V6/pp/0.25x0.25/av/monthly/update/ -->
>>> \ncdump -c precipitation.3B42.1002.V6.nc
>>> netcdf precipitation.3B42.1002.V6 {
>>> dimensions:
>>> longitude = 1442 ;
>>> latitude = 722 ;
>>> ...
>>> longitude = -180.125,...,180.125
>>> latitude = -90.125,...,90.125
>>> ...
>>> ...so the output file runs from longitude = -180.125 to 180.125 and from
>>> latitude = -90.125 to 90.125 (a couple extra points added in each
>>> direction, so be careful)
>>> --------------------------------------------------------------------
>>>
>>> --------------------------------------------------------------------
>>> ...using a "global" longitude range, using x,y coordinates to define
>>> exact boundaries:
>>> ga-> sdfopen 3B42.1002.V6.nc
>>> Scanning self-describing file: 3B42.1002.V6.nc
>>> SDF file 3B42.1002.V6.nc is open as file 1
>>> LON set to 0 360
>>> LAT set to -49.875 49.875
>>> LEV set to 0 0
>>> Time values set: 2010:2:14:22 2010:2:14:22
>>> E set to 1 1
>>> ...
>>> ga-> set y 1 400
>>> LAT set to -49.875 49.875
>>> ga-> set x 721 2160
>>> LON set to 0.125 359.875
>>> ga-> set sdfwrite precipitation.3B42.1002.V6.nc
>>> SDFWrite file name = precipitation.3B42.1002.V6.nc
>>> SDFWrite will replace an existing file
>>> ga-> define precipitation = precipitation
>>> Define memory allocation size = 4608000 bytes
>>> ga-> sdfwrite precipitation
>>> Wrote variable precipitation to precipitation.3B42.1002.V6.nc
>>> cjs: /tmp/data/precip/trmm/3B42.V6/pp/0.25x0.25/av/monthly/update/ -->
>>> \ncdump -c precipitation.3B42.1002.V6.nc
>>> netcdf precipitation.3B42.1002.V6 {
>>> dimensions:
>>> longitude = 1440 ;
>>> latitude = 400 ;
>>> longitude = 0.125,...,359.875
>>> latitude = -49.875,...,49.875
>>> ...
>>> ...so the output file runs from longitude = 0.125,...,359.8755 and from
>>> latitude = -49.875,...,49.875
>>> --------------------------------------------------------------------
>>>
>>> Could you try defining the variable to sdfwrite using parameters
>>> appropriate to the netCDF file's original grid?
>>>
>>> Hope this helps,
>>> Chuck
>>>
>>> On 04/12/2012 03:57 PM, Mark Hess wrote:
>>>> I have a NetCDF file which I can ingest and display in GrADS with out a
>>>> problem. The LON parameter is set to a 0-360 grid as opposed to 0-180W &
>>>> 0-180E (or 0 to 180 for east and 0 to -180 for west). If I "set lon 239
>>>> 244" and then display my variable of interest (in this case U), the data
>>>> display properly showing the data between 116W-121W (116W equaling
>>>> -116=244-360 and 121W equaling -121=360-239). That all is fine until I
>>>> try to save my geographically subsetted area to a new .nc file using the
>>>> sdfwrite function. The file saves fine, but it saves the LON information
>>>> in the 0-360 format instead of the 0 to -180 format which I need for
>>>> another application. Is there a way to either 1) save the new, subsetted
>>>> .nc file with the lons converting to the in 0 to -180 format as part of
>>>> the process or 2) convert the lon format within GrADS first and then
>>>> save the new .nc file with the lon values in the format I want? Can I
>>>> subtract 360 from my "lon" variable to create a 'new' lon variable?
>>>> Thanks,
>>>> Mark
>>>>
>>>>
>>>> _______________________________________________
>>>> gradsusr mailing list
>>>> gradsusr at gradsusr.org
>>>> http://gradsusr.org/mailman/listinfo/gradsusr
>>>
>>> --
>>>
>>> Please note that Charles.Seman at noaa.gov should be considered my NOAA
>>> email address, not cjs at gfdl.noaa.gov.
>>>
>>> ********************************************************************
>>> Charles Seman Charles.Seman at noaa.gov
>>> U.S. Department of Commerce / NOAA / OAR
>>> Geophysical Fluid Dynamics Laboratory voice: (609) 452-6547
>>> 201 Forrestal Road fax: (609) 987-5063
>>> Princeton, NJ 08540-6649 http://www.gfdl.noaa.gov/~cjs/
>>> ********************************************************************
>>>
>>> "The contents of this message are mine personally and do not reflect any
>>> official or unofficial position of the United States Federal Government,
>>> the United States Department of Commerce, or NOAA."
>>> _______________________________________________
>>> gradsusr mailing list
>>> gradsusr at gradsusr.org
>>> http://gradsusr.org/mailman/listinfo/gradsusr
>>
>> _______________________________________________
>> gradsusr mailing list
>> gradsusr at gradsusr.org
>> http://gradsusr.org/mailman/listinfo/gradsusr
>
> --
> Jennifer M. Adams
> IGES/COLA
> 4041 Powder Mill Road, Suite 302
> Calverton, MD 20705
> jma at cola.iges.org
>
>
>
>
>
> _______________________________________________
> gradsusr mailing list
> gradsusr at gradsusr.org
> http://gradsusr.org/mailman/listinfo/gradsusr
> <hycom_u_socal.ncdump>_______________________________________________
> gradsusr mailing list
> gradsusr at gradsusr.org
> http://gradsusr.org/mailman/listinfo/gradsusr
--
Jennifer M. Adams
IGES/COLA
4041 Powder Mill Road, Suite 302
Calverton, MD 20705
jma at cola.iges.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://gradsusr.org/pipermail/gradsusr/attachments/20120418/90523687/attachment-0003.html
More information about the gradsusr
mailing list