Message-ID: <490EB5E6.7000400@uni-muenster.de>
Date: 2008-11-03T08:27:18Z
From: Edzer Pebesma
Subject: extracting information from a raster file
In-Reply-To: <91b8161f0811022343p3099f0f1ydaf936453708a29e@mail.gmail.com>
We (the developers from sp) tried hard to relieve you from writing such
code. Please try the following code, which requires you to click on the
grid map after locator(1):
library(sp)
data(meuse.grid)
coordinates(meuse.grid)=~x+y
gridded(meuse.grid)=TRUE
fullgrid(meuse.grid) = TRUE
image(meuse.grid["dist"])
pt = locator(1)
pt
pt.sp = SpatialPoints(matrix(c(pt[[1]], pt[[2]]), 1, 2))
pt.sp
overlay(meuse.grid, pt.sp)
Besides being equally efficient, this code should remain working even if
some internal representations of the sp classes were to change.
While looking at your code below, I have the feeling you forget that R
arrays start with index 1, whereas C arrays start with index 0. You can
check the sp sources to be 100% certain, but I also believe that the sp
organization lets vary x first, then y.
--
Edzer
Harry Kim wrote:
> Dear R-sig-geo users,
>
> I have a question about extracting information from a raster file
> after I read it in using rgdal package, and I would be infinitely
> grateful if someone could help me.
> The summary of raster file looks like this:
>
> #summary of raster file
>
>> summary(xxx)
>>
> Object of class SpatialGridDataFrame
> Coordinates:
> min max
> x -180 180
> y -90 90
> Is projected: FALSE
> proj4string :
> [+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs +towgs84=0,0,0]
> Number of points: 2
> Grid attributes:
> cellcentre.offset cellsize cells.dim
> x -179.10 1.8 200
> y -89.55 0.9 200
> Data attributes:
> Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
> 0.000 0.000 0.000 47.010 3.264 13540.000 26563.000
>
> I would like to write a code that extracts the value of associated
> cell given a specific location in latitude and longitude. I've noticed
> that xxx at data contains the values as 40000 x 1 matrix. I've wrote the
> following code assuming that the values are stored as in C programing
> (column wise seperation):
>
>
> #initiate values
> x_inc=xxx at grid@cellsize[1]
> y_inc=xxx at grid@cellsize[2]
>
> x_start=xxx at grid@cellcentre.offset[1]
> y_start=xxx at grid@cellcentre.offset[2]
>
> x_dim=xxx at grid@cells.dim[1]
> y_dim=xxx at grid@cells.dim[2]
>
> #given coordinate
> x=26
> y=45
>
> #find the index
> index=floor((x-x_start)/x_inc)*y_dim + floor( (y-y_start)/y_inc )
> xxx at data[index,1]
>
> The result does not seem to match what I should get. Could anybody
> explain to me how the data is stored in SpatialGridDataFrame? Your
> help would be much much appreciated.
>
> Thank you and have a good night
> Harry
>
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo at stat.math.ethz.ch
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>
--
Edzer Pebesma
Institute for Geoinformatics (ifgi), University of M?nster
Weseler Stra?e 253, 48151 M?nster, Germany. Phone: +49 251
8333081, Fax: +49 251 8339763 http://ifgi.uni-muenster.de/
http://www.springer.com/978-0-387-78170-9 e.pebesma at wwu.de