Robert et al:

I think there may be a small bug in raster reading an NCEP NetCDF file.  I
think the NetCDF file is supplying the upper left coordinates of each cell,
but raster is assuming these coordinates are the center of the cell:

# Given:
require("ncdf")
require("raster")
# Sample global netCDF from NCEP Reanalysis, about a 30mb download:
download.file("
ftp://ftp.cdc.noaa.gov/Datasets/ncep.reanalysis/surface/air.sig995.1948.nc
","air.sig995.1948.nc",mode="wb")
# Create a brick:
myncdf <- brick("air.sig995.1948.nc")
myncdf
# Notice the extent has impossible coordinates:
class       : RasterBrick
dimensions  : 73, 144, 10512, 1464  (nrow, ncol, ncell, nlayers)
resolution  : 2.5, 2.5  (x, y)
extent      : -1.25, 358.75, -91.25, 91.25  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84
data source : /Users/jgrn307/air.sig995.1948.nc
names       : X1948.01.03.00.00.00, X1948.01.03.06.00.00,
X1948.01.03.12.00.00, X1948.01.03.18.00.00, X1948.01.04.00.00.00,
X1948.01.04.06.00.00, X1948.01.04.12.00.00, X1948.01.04.18.00.00,
X1948.01.05.00.00.00, X1948.01.05.06.00.00, X1948.01.05.12.00.00,
X1948.01.05.18.00.00, X1948.01.06.00.00.00, X1948.01.06.06.00.00,
X1948.01.06.12.00.00, ...
Date/time   : 1948-01-03 00:00:00, 1949-01-02 18:00:00 (min, max)
varname     : air

# Opening the NetCDF directly:
myncdf_con <- open.ncdf("air.sig995.1948.nc")
get.var.ncdf(myncdf_con,"lon")

# Output:
  [1]   0.0   2.5   5.0   7.5  10.0  12.5  15.0  17.5  20.0  22.5  25.0
 27.5  30.0  32.5  35.0  37.5  40.0  42.5  45.0  47.5  50.0  52.5
 [23]  55.0  57.5  60.0  62.5  65.0  67.5  70.0  72.5  75.0  77.5  80.0
 82.5  85.0  87.5  90.0  92.5  95.0  97.5 100.0 102.5 105.0 107.5
 [45] 110.0 112.5 115.0 117.5 120.0 122.5 125.0 127.5 130.0 132.5 135.0
137.5 140.0 142.5 145.0 147.5 150.0 152.5 155.0 157.5 160.0 162.5
 [67] 165.0 167.5 170.0 172.5 175.0 177.5 180.0 182.5 185.0 187.5 190.0
192.5 195.0 197.5 200.0 202.5 205.0 207.5 210.0 212.5 215.0 217.5
 [89] 220.0 222.5 225.0 227.5 230.0 232.5 235.0 237.5 240.0 242.5 245.0
247.5 250.0 252.5 255.0 257.5 260.0 262.5 265.0 267.5 270.0 272.5
[111] 275.0 277.5 280.0 282.5 285.0 287.5 290.0 292.5 295.0 297.5 300.0
302.5 305.0 307.5 310.0 312.5 315.0 317.5 320.0 322.5 325.0 327.5
[133] 330.0 332.5 335.0 337.5 340.0 342.5 345.0 347.5 350.0 352.5 355.0
357.5

get.var.ncdf(myncdf_con,"lat")
# Output:
 [1]  90.0  87.5  85.0  82.5  80.0  77.5  75.0  72.5  70.0  67.5  65.0
 62.5  60.0  57.5  55.0  52.5  50.0  47.5  45.0  42.5  40.0  37.5
[23]  35.0  32.5  30.0  27.5  25.0  22.5  20.0  17.5  15.0  12.5  10.0
7.5   5.0   2.5   0.0  -2.5  -5.0  -7.5 -10.0 -12.5 -15.0 -17.5
[45] -20.0 -22.5 -25.0 -27.5 -30.0 -32.5 -35.0 -37.5 -40.0 -42.5 -45.0
-47.5 -50.0 -52.5 -55.0 -57.5 -60.0 -62.5 -65.0 -67.5 -70.0 -72.5
[67] -75.0 -77.5 -80.0 -82.5 -85.0 -87.5 -90.0

# Don't forget to close the connection:
close.ncdf(myncdf_con)

Thoughts?

--j

-- 
Jonathan A. Greenberg, PhD
Assistant Professor
Global Environmental Analysis and Remote Sensing (GEARS) Laboratory
Department of Geography and Geographic Information Science
University of Illinois at Urbana-Champaign
607 South Mathews Avenue, MC 150
Urbana, IL 61801
Phone: 217-300-1924
http://www.geog.illinois.edu/~jgrn/
AIM: jgrn307, MSN: jgrn307@hotmail.com, Gchat: jgrn307, Skype: jgrn3007

	[[alternative HTML version deleted]]

