2

だから、私は私と一緒に中心点とズームレベルを持っています。
地図上にいくつかの点をプロットする必要があります。

マップはラスターデータファイルに保存され、Rのウィジェットに表示されます。

問題は、ポイントを受け取ったときに、それがこのラスターファイルのデータ内にあるかどうかを確認する必要があることです。
ポイントがラスターファイルにある場合は、安全にプロットできます。
そうでない場合は、そのポイントを含む別のラスターファイルをロードしてから、ポイントをプロットする必要があります。

Rのrasterパッケージにはas.data.frame、ラスターデータをデータフレームにロードするという名前の関数があります。

では、どの点(広背筋と広背筋)が四隅にあるかを把握することは可能ですか?私は正しい方向に進んでいますか?

4

1 に答える 1

5

データがRasterLayerクラスの場合extent、ラスターの範囲と、xmin'minを提供し、さまざまなスロットにアクセスします。ymaxxmax

例えば

# 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

データがSpatialGridDataFramethenの場合bbox、バウンディングボックスが返されます

.grid <- as(r1,'SpatialGridDataFrame')

bbox(.grid)
##    min max
## s1   0  10
##  2 -90  90

xy座標はラスター境界内にありますか

cellFromXYセルを見つけるために使用でき、extextの外にある場合はid返されますNA

例えば

 # 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

ggmapオブジェクトからRasterStackを作成するヘルパー関数

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)
于 2012-08-30T05:40:14.973 に答える