2017-09-28 16 views
1

私は高解像度のGoogle衛星画像にデータをマップしようとしています。しかし、低解像度の画像を使用することができます(例えば、ズーム13、スケールを制限する - ggmap extended zoom or boundaries)。しかし、結果として得られる画像は私の目的には十分ではありません。だから、基本的に私は1 ggmapに2 14ズームを組み合わせることができるようにしたいと思います:ggmap - 2つの衛星ggmapを1つのggmapにマージする

library(ggmap) 
library(gridExtra) 
g1 <- get_googlemap(center = c(-83.986927, 33.955656), maptype="satellite", zoom=14) 


g2 <- get_googlemap(center = c(-83.938079, 33.955656), maptype="satellite", zoom=14) 


gmap1 <- ggmap(g1) 
gmap2 <- ggmap(g2) 

grid.arrange(gmap1, gmap2, ncol =2) 

が、gmap1とGMap2のを組み合わせて1つのggmapオブジェクトを持っています。

+1

空間クラスとマージラスタのいずれかを使用する必要があります。 –

+0

ggmapをイースターに変換して戻す方法はありますか? –

答えて

2

ラスタオブジェクトに変換することができます(おそらくそうする必要があります)。ピクセルは同じグリッド単位ではないように見えるので、それらをモザイク処理することは完璧ではない可能性があるため、タイルのようにそれを独立して実際に使用する必要があります。許容差を調整することでこれを抑えることができます。

get_googlemapのオブジェクトは、色の値が16進数の行列( "#FF000"など)と、エクステントを定義するいくつかの属性です。次のコードは、右の程度やCRSで、3バンドRGBラスタにそのオブジェクトを変換します。このコードはモザイクを使用して、

library(raster) 

ggmap2raster <- function(g){ 
    rgb = col2rgb(g) 
    bands = apply(rgb, 1, function(band){ 
     raster(t(matrix(band,ncol=ncol(g), nrow=nrow(g)))) 
    }) 
    s = stack(bands) 
    bb = attr(g, "bb") 
    extent(s) = extent(bb$ll.lon,bb$ur.lon, bb$ll.lat, bb$ur.lat) 
    crs(s) <- "+init=epsg:4326" 
    s 
} 

はそれらの束をマージするには、しかし、層が行していないようですので、あなたは寛容と希望アップする必要があります(データがWebメルカトルではなく、WGS84に実際にある可能性があるため)かなり右まで:

mergegg <- function(glist){ 
    m = function(...){ 
     mosaic(...,tolerance=0.5, fun=min) 
    } 
    do.call(m, 
      lapply(glist, function(g){ 
       ggmap2raster(g) 
      }) 
      ) 
} 

> r = mergegg(list(g1, g2)) 
> plotRGB(r) 

enter image description here

私はコーナーを変換する場合の許容問題が消えることが疑われますWeb Mercatorに戻るしかし、それは金曜日の朝にあまりにも大変です。 ggmapとその座標系の扱いは、今私が取り入れたいものではありません。 2つのg1g2の行列オブジェクトを結合してみることもできますが、最初に逆変換を行う必要があります(Googleの衛星画像を使用する場合はがあります)。 悪いもの

ラスタオブジェクトを視覚化するには、ggmapの代わりにtmapパッケージを使用します。

+0

tmapをお寄せいただきありがとうございます!私はそのパッケージについて知らなかった。これまでのところ、ggmapよりも100万倍も良いと思われます。ありがとう! –

+0

ご存知のように、これは技術的にGoogle APIの利用規約に違反しています。 「10.5知的財産の制限を確認する」をポイントします。 https://developers.google.com/maps/terms#section_10。これを明確にするために答えを更新する価値があるかもしれません。 –

関連する問題