[ncl-talk] Plotting netCDF

Dave Allured - NOAA Affiliate dave.allured at noaa.gov
Thu Mar 15 14:09:27 MDT 2018


Stuart,

When reading the whole array, subscripts are not needed.  Just use whole
array syntax:

    x = f->ppt

You did not fix the mismatched _FillVallue problem that I mentioned
before.  You will need to either fix the file, or else add this kludge to
make NCL properly recognize the missing values after they are read in:

    x at _FillValue := todouble (x at missing_value)

With that fix, it looks like your ppt.nc data file is pre-masked for a
predetermined spatial area.  To calculate a simple spatial average time
series for all grid points within that predetermined area, just use a
simple unweighted array averaging function:

    dim_select = (/ 1, 2 /)        ; select lat and lon dims to average over
    spatial_aves = dim_avg_n_Wrap (x, dim_select)     ; makes a 1-D time
series

Please read the function documentation for dim_avg_n and dim_avg_n_Wrap,
for more details.

If you need latitude weighting, or you need to select a smaller spatial
area within the existing domain, then more code will be needed.

--Dave


On Wed, Mar 14, 2018 at 8:06 AM, Smith, Stuart <smit1770 at purdue.edu> wrote:

> Dave,
>
>
>
> Thanks for the feedback. I was able to get more data. The runoff data
> didn’t look useful, so I have attached another variable (precipitation)
> which had more data over the spatial area, but still missing data (-9999).
> The variables are:
>
>
>
> 0)      PPT=Precipitation
>
> 1)      T = Time
>
> 2)      X= Longitude
>
> 3)      Y = Latitude
>
>
>
> In order to calculate spatial averages over time would I read in all
> dimensions, similar to what you have described below and calculate the
> average using a function? Thank you for your time.
>
>
>
>     x = f->runoff(:,:,:)        ; x will be read as a 3-D array
>
>
>
> Regards,
>
>
>
> -Stuart
>
>
>
>
>
>
>
> *From:* Dave Allured - NOAA Affiliate [mailto:dave.allured at noaa.gov]
> *Sent:* Tuesday, March 13, 2018 5:12 PM
> *To:* Smith, Stuart <smit1770 at purdue.edu>
> *Cc:* Ncl-talk <ncl-talk at ucar.edu>
> *Subject:* Re: [ncl-talk] Plotting netCDF
>
>
>
> Stuart,
>
>
>
> That is a strange Netcdf file.  It is a time series of 45 x 29 grids, but
> all grid points are missing values, except for one corner point at
> (*,0,0).  You can extract the corner point as a 1-D time series, and make a
> line plot and other 1-D analysis.
>
>
>
>     x = f->runoff(:,0,0)        ; x will be read as a 1-D array
>
>
>
> However, you requested how to calculate spatial averages.  That does not
> make sense if you do not have valid data over multiple grid points.  So
> either you can just do 1-D plots and analysis, or you need to go back to
> your data source and get a file with valid data over your desired spatial
> area.
>
>
>
> If you get another data file, also please ask the provider to make the
> _FillValue match the array data type, which is "double" in this case.
>
>
>
> --Dave
>
>
>
>
>
> On Tue, Mar 13, 2018 at 2:20 PM, Smith, Stuart <smit1770 at purdue.edu>
> wrote:
>
> Good afternoon,
>
>
>
> I received a netCDF file that has a format I am unfamiliar with and wanted
> guidance on calculating spatial averages over time. Attached is a copy of
> the .nc file. The variables are:
>
> 0)      Runoff
>
> 1)      T=Time
>
> 2)      X= Longitude
>
> 3)      Y = Latitude
>
> When defining variables for runoff (ex. Var = fi->runoff ), the output
> format is the following:
>
> (0,0,0)    0
>
> (0,0,1) -9999
>
> (0,0,2) -9999
>
> (0,0,3) -9999
>
> (0,0,4) -9999
>
> ……..
>
> (1,0,0)    0
>
> (1,0,1) -9999
>
> (1,0,2) -9999
>
>
>
> The next value will not appear until (1,0,0). I wanted to ask how I would
> plot such data, and calculate averages over the area with the given
> format?  Thank you for your time.
>
>
>
> Regards,
>
>
>
> -Stuart
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20180315/625a2408/attachment.html>


More information about the ncl-talk mailing list