On Wed, 25 Aug 2010, dkod wrote:


I am trying to develop simple tools to download and plot climate data based
on global grid of 2 degrees. Here's a link to the source image
http://data.giss.nasa.gov/work/gistemp/NMAPS/tmp_GHCN_GISS_HR2SST_1200km_Anom07_2010_2010_1951_1980/GHCN_GISS_HR2SST_1200km_Anom07_2010_2010_1951_1980.gif
link

NASA provides a 5 column text file for each image of monthly global
temperature anomalies. I have downloaded a sample data file that can be
viewed  http://processtrends.com/Files/global_lota_map_07_36.txt here .

I have been using Bivand et al's Applied Spatial Data Analysis With R to try
to speed up my learning curve, however, I am stumped and need some help.

Here's my script so far:

#################################################################
### Read GISS global temp anom for month by 2 degree grid
 library(fields);library(mapproj)
 library(sp); library(rgdal)

# Step 1: Read source data file
 link <- "http://processtrends.com/Files/global_lota_map_07_36.txt";
 rdf <- read.table(link, skip = 1, header=T)
 a_rdf <- data.frame(rdf[,c(1,2,5)])
 names(a_rdf) <- c("i", "j","anom")
 a_rdf$anom[a_rdf$anom==9999.0000] <- NA         # convert all 9999.0000 to
NA

## Step 2: Setup sp() classes for GridTopology & SpatialGrid
 grd <- GridTopology(cellcentre.offset=c(-179,-89), cellsize=c(2,2),
  cells.dim=c(180,90))
 gr_sp <- SpatialGrid(grid=grd, proj4string = CRS(as.character(NA)))
 a_rdf_sp <- SpatialGridDataFrame(grd, a_rdf)

## Step 4: Create SpatialGridDataFrame
 fullgrid(a_rdf_sp) <- T
 slot(a_rdf_sp, "grid")

## Step 5: Generate Plot
 image.plot(a_rdf_sp["anom"])

##############################################################

It runs without error mesages until the image.plot() command. here's the
error message I get

 > image.plot(a_rdf_sp["anom"])
    Error in if (del == 0 && to == 0) return(to) :
    missing value where TRUE/FALSE needed
 >

Well, either use the image() method in sp for this class of object, since you have taken trouble to create it, or coerce the object to the input required by image.plot() in the fields package:

library(sp)
data(meuse.grid)
coordinates(meuse.grid) <- c("x", "y")
gridded(meuse.grid) <- TRUE
fullgrid(meuse.grid) <- TRUE
mg1 <- as.image.SpatialGridDataFrame(meuse.grid["dist"])
library(fields)
image.plot(mg1)

This has relevance for another current thread on conversion between classes. If package authors and maintainers do not wish to provide coercion to or from sp, it would not be in the spirit of the R project to jump in boots first. Documentation of possible routes is of essence here, and could happily be done on the R Wiki site under spatial data - for instance, an interested person could post the code above as an answer to the sp -> fields question for this class and that function. Agreed, the routes that exist could also be made a little more consistent, but since not all the targets for conversion are S3 or S4 classes ("image" is not a class, the output is a list with x, y, z components), it is hard to find a consistent definition of consistent!

The relationship between spatstat and sp can serve as an example of how to handle things pragmatically and with respect for the value of different ways to represent data; coercion methods have been added as needed to maptools, and work satisfactorily.

Data representations do differ, and there are often good, substantive reasons for the differences, based on different literatures in different disciplines or traditions. Giving users the impression that this is not the case blinds them to the potential misconceptions involved (in GIScience - ontological mismatch). So exposing users to the discomfort of having to think through which representations may differ does have a real motivation - say in drilling down to say matrix <-> graph representations, as in Adrian Baddeley's post this morning, where thinking through representations yielded fruitful insights.

Roger


I'm not clear how to best establish a SpatialGridDataFrame for global data
series from 2 or 5 degree files. I'd like to be able to plot using mercator
or other projection.

I'd also like to be able to add land forms.

I'd appreciate any help in correcting/improving this script. My goal is a
clear, easy to follow R script that can be used by R users to download and
work with global climate data files from NASA, NOAA and other agencies.

D Kelly O'Day
http://chartsgraphs.wordpress.com
http://processtrends.com






--
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

Reply via email to