Thanks very much for the help Sam and Roger.  

 

I ended up using Sam's method which worked great, though seems to
require the offset and scaling factor to be calculated on the output
RasterLayer following creation.  There is probably a method to apply
these directly, but I haven't figured that out just yet.

 

This is working with R2.10.1, Raster 0.9.9-1 and RNetCDF 1.2-1.

 

Cheers,

Kevin

________________________________

From: Samuel Veloz [mailto:sdve...@ucdavis.edu] 
Sent: 7-Jan-10 1:30 PM
To: roger.biv...@nhh.no
Cc: Middel, Kevin (MNR); r-sig-geo@stat.math.ethz.ch
Subject: Re: [R-sig-Geo] Problems reading netcdf with RGDAL



I have had success using the raster package (which requires the RNetCDF
package for netcdf data) after having similar problems. The following
code works for me:

air.rast.1<-raster("air.2m.1979.nc",zvar="air",time=1) #this gives you a
raster of the air variable at time step 1.
plot(air.rast.1)


This was working on raster version 0.9.3 and R 2.9.1 so don't know if
new versions will work or if the problems Roger described with rgdal
will matter. 

Sam



On Thu, Jan 7, 2010 at 9:16 AM, Roger Bivand <roger.biv...@nhh.no>
wrote:

On Thu, 7 Jan 2010, Middel, Kevin (MNR) wrote:

Hi,

I am trying to read a netcdf file and create spatial grid files
compatible with a GIS from the various time arrays, but ran into a
problem right off with rgdal.  The .nc file contains daily air
temperatures across North America for a given year.



Using the command:

GDALinfo("air.2m.1979.nc")



Where is your sessionInfo() information? Does gdalDrivers() include the
NetCDF driver (no, you are on Windows using the standard binary rgdal
package - guesses based on the file path quoted below)? Have you read
file.show(system.file("README.windows", package="rgdal")), which tells
you how to install rgdal from source on Windows to access extra drivers
depending on external software?

The user needing more exotic drivers (those not provided by GDAL itself)
has to provide the external dependencies and install from the source
package on all platforms. If ncdf can import the data, please use that
if you do not want to install rgdal from source.

Hope this helps,

Roger

         

        
        
        I get the error:
        CPL ERROR 4: `air.2m.1979.nc' not recognised as a supported file
format.
        
        
        
        Error in .local(.Object, ...) :
        
         `air.2m.1979.nc' not recognised as a supported file format.
        
        
        
        I am able read the file using the package ncdf, and the utility
ncdump,
        as well as view the data in panoply, so I'm not sure what I'm
doing
        incorrectly.   I've also tried using FWTools to view the data
and in
        this program the image is inverted (N-S).  Finally I've had a
look at
        the data using GDALInfo installed with FWTools and have pasted
the
        output below, as well as the output from NCDump.
        
        
        
        It's probably pretty obvious that I'm new to this format, so any
        help/guidance anyone can provide would be greatly appreciated.
        
        
        
        Thanks in advance,
        
        Kevin
        
        
        
        GDALInfo Output:
        
        
        
        Driver: netCDF/Network Common Data Format
        
        Files: d:\databases\climate\narr\air.2m.1979.nc
        
        Size is 512, 512
        
        Coordinate System is `'
        
        Metadata:
        
         NC_GLOBAL#standardpar1=50
        
         NC_GLOBAL#standardpar2=50
        
         NC_GLOBAL#centerlon=-107
        
         NC_GLOBAL#centerlat=50
        
         NC_GLOBAL#latcorners=1.000001e+000, 8.979450e-001,
4.635440e+001,
        4.663433e+001
        
         NC_GLOBAL#loncorners=-1.455000e+002, -6.832005e+001,
-2.569891e+000,
        1.486418e+002
        
         NC_GLOBAL#stream=s1
        
         NC_GLOBAL#title=Daily NARR
        
         NC_GLOBAL#Conventions=CF-1.0
        
         NC_GLOBAL#history=On Thu Feb  9 16:48:19 2006 single precision
time
        renamed oldtime,
        
        values transferred to double precision new time variable.
        
        created 2005 by Jeff Whitaker
        
         NC_GLOBAL#institution=National Centers for Environmental
Prediction
        
         NC_GLOBAL#platform=Model
        
        
        
NC_GLOBAL#references=http://wwwt.emc.ncep.noaa.gov/mmb/rreanl/index.html
        
        http://www.cdc.noaa.gov/cdc/data.narr.html
        
        Subdatasets:
        
        
        
SUBDATASET_1_NAME=NETCDF:"d:\databases\climate\narr\air.2m.1979.nc":lat
        
         SUBDATASET_1_DESC=[277x349] latitude (32-bit floating-point)
        
        
        
SUBDATASET_2_NAME=NETCDF:"d:\databases\climate\narr\air.2m.1979.nc":lon
        
         SUBDATASET_2_DESC=[277x349] longitude (32-bit floating-point)
        
        
        
SUBDATASET_3_NAME=NETCDF:"d:\databases\climate\narr\air.2m.1979.nc":time
        _bnds
        
         SUBDATASET_3_DESC=[365x2] time_bnds (64-bit floating-point)
        
        
        
SUBDATASET_4_NAME=NETCDF:"d:\databases\climate\narr\air.2m.1979.nc":air
        
         SUBDATASET_4_DESC=[365x277x349] air_temperature (8-bit integer)
        
        Corner Coordinates:
        
        Upper Left  (    0.0,    0.0)
        
        Lower Left  (    0.0,  512.0)
        
        Upper Right (  512.0,    0.0)
        
        Lower Right (  512.0,  512.0)
        
        Center      (  256.0,  256.0)
        
        
        
        
        
        NCDump Output:
        
        
        
        netcdf air.2m.1979 {
        
        dimensions:
        
              time = UNLIMITED ; // (365 currently)
        
              y = 277 ;
        
              x = 349 ;
        
              nbnds = 2 ;
        
        variables:
        
              float lat(y, x) ;
        
                      lat:long_name = "latitude coordinate" ;
        
                      lat:units = "degrees_north" ;
        
                      lat:axis = "Y" ;
        
                      lat:coordinate_defines = "point" ;
        
                      lat:standard_name = "latitude" ;
        
              float lon(y, x) ;
        
                      lon:units = "degrees_east" ;
        
                      lon:long_name = "longitude coordinate" ;
        
                      lon:axis = "X" ;
        
                      lon:coordinate_defines = "point" ;
        
                      lon:standard_name = "longitude" ;
        
              float x(x) ;
        
                      x:long_name = "eastward distance from southwest
corner
        of domain in projection coordinates" ;
        
                      x:units = "m" ;
        
                      x:standard_name = "projection_x_coordinate" ;
        
              float y(y) ;
        
                      y:long_name = "northward distance from southwest
corner
        of domain in projection coordinates" ;
        
                      y:units = "m" ;
        
                      y:standard_name = "projection_y_coordinate" ;
        
              int Lambert_Conformal ;
        
                      Lambert_Conformal:grid_mapping_name =
        "lambert_conformal_conic" ;
        
                      Lambert_Conformal:standard_parallel = 50., 50. ;
        
                      Lambert_Conformal:longitude_of_central_meridian =
-107.
        ;
        
                      Lambert_Conformal:latitude_of_projection_origin =
50. ;
        
                      Lambert_Conformal:false_easting = 5632642.22547 ;
        
                      Lambert_Conformal:false_northing = 4612545.65137 ;
        
              double time(time) ;
        
                      time:units = "hours since 1800-1-1 00:00:0.0" ;
        
                      time:long_name = "analysis time" ;
        
                      time:axis = "T" ;
        
                      time:standard_name = "time" ;
        
                      time:coordinate_defines = "start" ;
        
                      time:delta_t = "0000-00-01 00:00:00" ;
        
                      time:actual_range = 1569072., 1577808. ;
        
                      time:avg_period = "0000-00-01 00:00:00" ;
        
              double time_bnds(time, nbnds) ;
        
                      time_bnds:long_name = "Time Boundaries" ;
        
              short air(time, y, x) ;
        
                      air:units = "K" ;
        
                      air:long_name = "Daily Air Temperature at 2 m" ;
        
                      air:unpacked_valid_range = 151.f, 400.f ;
        
                      air:precision = 0.003799786f ;
        
                      air:actual_range = 219.7989f, 312.3237f ;
        
                      air:missing_value = 32767s ;
        
                      air:valid_range = -32765s, 32765s ;
        
                      air:_FillValue = -32767s ;
        
                      air:GRIB_name = "TMP" ;
        
                      air:GRIB_id = 11 ;
        
                      air:var_desc = "Air temperature" ;
        
                      air:standard_name = "air_temperature" ;
        
                      air:level_desc = "2 m" ;
        
                      air:dataset = "NARR Daily Averages" ;
        
                      air:statistic = "Mean" ;
        
                      air:parent_stat = "Individual Obs" ;
        
                      air:grid_mapping = "Lambert_Conformal" ;
        
                      air:coordinates = "lat lon" ;
        
                      air:add_offset = 275.5f ;
        
                      air:scale_factor = 0.003799786f ;
        
                      air:cell_methods = "time: mean (of 8 3-hourly
values in
        one day)" ;
        
        
        
        // global attributes:
        
                      :standardpar1 = 50. ;
        
                      :standardpar2 = 50.000001 ;
        
                      :centerlon = -107. ;
        
                      :centerlat = 50. ;
        
                      :latcorners = 1.000001f, 0.897945f, 46.3544f,
46.63433f
        ;
        
                      :loncorners = -145.5f, -68.32005f, -2.569891f,
148.6418f
        ;
        
                      :stream = "s1" ;
        
                      :title = "Daily NARR" ;
        
                      :Conventions = "CF-1.0" ;
        
                      :history = "On Thu Feb  9 16:48:19 2006 single
precision
        time renamed oldtime,\n",
        
                              "values transferred to double precision
new time
        variable.\n",
        
                              "created 2005 by Jeff Whitaker" ;
        
                      :institution = "National Centers for Environmental
        Prediction" ;
        
                      :platform = "Model" ;
        
                      :references =
        "http://wwwt.emc.ncep.noaa.gov/mmb/rreanl/index.html\n";,
        
        
"http://www.cdc.noaa.gov/cdc/data.narr.html"; ;
        
        }
        
        
        
        
        
        
        
        
               [[alternative HTML version deleted]]
        
        _______________________________________________
        R-sig-Geo mailing list
        R-sig-Geo@stat.math.ethz.ch
        https://stat.ethz.ch/mailman/listinfo/r-sig-geo



-- 
Roger Bivand
Economic Geography Section, Department of Economics, Norwegian School of
Economics and Business Administration, Helleveien 30, N-5045 Bergen,
Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
e-mail: roger.biv...@nhh.no



_______________________________________________
R-sig-Geo mailing list
R-sig-Geo@stat.math.ethz.ch
https://stat.ethz.ch/mailman/listinfo/r-sig-geo




        [[alternative HTML version deleted]]

_______________________________________________
R-sig-Geo mailing list
R-sig-Geo@stat.math.ethz.ch
https://stat.ethz.ch/mailman/listinfo/r-sig-geo

Reply via email to