Если ваши данные относятся к классу RasterLayer, то extent
даст вам экстент растра, а xmin
, 'min
, ymax
и xmax
— доступ к различным слотам.
eg
# create a dummy raster
r1 <- raster(nrows=108, ncols=21, xmn=0, xmx=10)
r1[] <-1
extent(r1)
## class : Extent
## xmin : 0
## xmax : 10
## ymin : -90
## ymax : 90
Вы можете получить доступ к различным слотам, используя
xmin(r1)
## [1] 0
xmax(r1)
##[1] 10
ymin(r1)
## [1] -90
ymax(r1)
## [1] 90
Если ваши данные SpatialGridDataFrame
, то bbox
вернет ограничивающую рамку
.grid <- as(r1,'SpatialGridDataFrame')
bbox(.grid)
## min max
## s1 0 10
## 2 -90 90
Находится ли моя координата xy в пределах растровой границы
вы можете использовать cellFromXY
, чтобы найти ячейку id
, и она вернет NA
, если она находится за пределами экстекста
eg
# some data
.points <- rbind(c(1,1),c(-4,1))
# the first point lies within the raster, the second not
# cell from XY will tell you this.
cellFromXY(r1,.points)
## [1] 1116 NA
РЕДАКТИРОВАТЬ для ggmap
если у вас есть карта, полученная get_map
, это объект ggmap
, и он не будет работать с пакетом raster
без вашей помощи .
вы можете получить ограничительную рамку как атрибут bb
.
hdf <- get_map()
attr(hdf,'bb')
## ll.lat ll.lon ur.lat ur.lon
## 1 29.38048 -95.80204 30.14344 -94.92313
Вспомогательная функция, которая создаст RasterStack из объекта ggmap.
ggmap_rasterlayer <- function(map){
map_bbox <- attr(map, 'bb')
.extent <- extent(as.numeric(map_bbox[c(2,4,1,3)]))
my_map <- raster(.extent, nrow= nrow(map), ncol = ncol(map))
rgb_cols <- setNames(as.data.frame(t(col2rgb(map))), c('red','green','blue'))
red <- my_map
values(red) <- rgb_cols[['red']]
green <- my_map
values(green) <- rgb_cols[['green']]
blue <- my_map
values(blue) <- rgb_cols[['blue']]
stack(red,green,blue)
}
my_map <- ggmap_rasterlayer(hdf)
person
mnel
schedule
30.08.2012
ggmap()
, и в этом случае экстент устанавливается автоматически. например,hdf <- get_map(); .points <- data.frame(lon = 0, lat = 0); ggmap(hdf, extent = 'device') + geom_point(data = .points,aes(x=lon,y=lat))
-- Точка0,0
находится вне экстента растра и не нанесена на график (как указано в предупреждении). - person mnel   schedule 30.08.2012