[R-sig-Geo] imprecise location extraction

Robert J. Hijmans r.hijmans at gmail.com
Thu Jun 25 18:46:04 CEST 2015


Dominik,

The last part of your example does not run. If I understand you well,
this is what you are after (but it all looks good to me):

library(raster)
# raster data with long and lat values
r <- raster(xmn=-112.25, xmx=-104.125, ymn=33, ymx=43.75, res=1/240)
lat <- init(r, v='y')
lon <- init(r, v='x')
s <- stack(lon, lat)

# two points
pt <- rbind(c(-111.6506, 35.34160), c(-110.9177, 33.81242))

# extract the lon/lat for the points
e <- extract(s, pt)

# test if the coordinates of pt indeed are over the cell with those values
mn <- e - (0.5 * res(r) )
mx <- e + (0.5 * res(r))

pt > mn & pt < mx
#      layer.1 layer.2
# [1,]    TRUE    TRUE
# [2,]    TRUE    TRUE

# or look at it this way:

cbind(min=as.vector(mn), p=as.vector(e), max=as.vector(mx))

Robert

On Thu, Jun 25, 2015 at 7:52 AM, Dominik Schneider
<Dominik.Schneider at colorado.edu> wrote:
> Hi,
> I'm working on interpolating spatial point data to a grid and as I was
> troubleshooting I found that the gridded locations I am predicting to are
> not what I expected. In particularly, when I extracted the locations from
> the raster grid to get the cell coordinates in which the locations lay, the
> latitudes differed by more than 1/2 the cell resolution.
> >From some visual inspection, it appears that the station points are at the
> edge of two cells (although visually definitely in neighboring cells).  So
> is this difference a function of floating point precision? or is something
> else going?
> Thanks for reading!
>
>
> library(raster)
> library(ggplot2)
>
> res=15/3600
> lat=seq(43.75-res/2,33+res/2,-15/3600)
> long=seq(-112.25+res/2,-104.125-res/2,15/3600)
> ll=expand.grid(long,lat)
> rlong=raster(matrix(ll$Var1,byrow=T,nrow=2580))
> rlat=raster(matrix(ll$Var2,byrow=T,nrow=2580))
> coords=stack(rlong,rlat)
> projection(coords)='+init=epsg:4326'
> extent(coords)=c(-112.25,-104.125,33,43.75)
> coords
>
>
>> dput(snotellocs.sub)
> new("SpatialPointsDataFrame"
>     , data = structure(list(network = c("SNTL", "SNTL"), State = c("AZ",
> "AZ"
> ), Station_ID = c("11P08S", "10S01S"), Site_ID = c(927L, 877L
> ), Site_Name = c("SNOWSLIDE CANYON", "WORKMAN CREEK"), Elevation_ft =
> c(9730L,
> 6900L), Elevation_m = c(2966L, 2103L)), .Names = c("network",
> "State", "Station_ID", "Site_ID", "Site_Name", "Elevation_ft",
> "Elevation_m"), row.names = c(80L, 83L), class = "data.frame")
>     , coords.nrs = c(7L, 6L)
>     , coords = structure(c(-111.65058, -110.91773, 35.3416, 33.81242), .Dim
> = c(2L,
> 2L), .Dimnames = list(NULL, c("Longitude", "Latitude")))
>     , bbox = structure(c(-111.65058, 33.81242, -110.91773, 35.3416), .Dim =
> c(2L,
> 2L), .Dimnames = list(c("Longitude", "Latitude"), c("min", "max"
> )))
>     , proj4string = new("CRS"
>     , projargs = "+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0"
> )
> )
>
> tmp=data.frame(coordinates(snotellocs.sub),extract(coords,snotellocs.sub))
>
> ggplot()+
> geom_raster(data=coord.df,aes(x=Long,y=Lat,fill=rnorm(nrow(coord.df))))+
> geom_point(data=tmp,aes(x=Longitude,y=Latitude),shape=1)+
> geom_point(data=tmp,aes(x=layer.1,y=layer.2),shape=3)+
> # coord_cartesian(ylim=c(35.32,35.35),xlim=c(-111.6490,-111.653))
> coord_cartesian(ylim=c(33.8,33.82),xlim=c(-110.925,-110.91))
> ## each coord_cartesian is for a different point
>
>
>> sessionInfo()
> R version 3.2.0 (2015-04-16)
> Platform: x86_64-apple-darwin13.4.0 (64-bit)
> Running under: OS X 10.9.5 (Mavericks)
>
> locale:
> [1] en_US/en_US/en_US/C/en_US/en_US
>
> attached base packages:
> [1] stats     graphics  grDevices utils     datasets  methods   base
>
> other attached packages:
> [1] ggplot2_1.0.1 raster_2.3-40 sp_1.1-0
>
> loaded via a namespace (and not attached):
>  [1] Rcpp_0.11.6      lattice_0.20-31  digest_0.6.8     MASS_7.3-40
>  [5] grid_3.2.0       plyr_1.8.2       gtable_0.1.2     magrittr_1.5
>  [9] scales_0.2.4     stringi_0.4-1    reshape2_1.4.1   proto_0.3-10
> [13] tools_3.2.0      stringr_1.0.0    munsell_0.4.2    colorspace_1.2-6
>
>         [[alternative HTML version deleted]]
>
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo at r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo



More information about the R-sig-Geo mailing list