web-dev-qa-db-ja.com

指定された境界座標でマップを取得

特定の座標境界を使用して、RからRgoogleMapsで地図を取得したいのですが。

私が呼ぶことができるのはGetMapで、中心を指定し、ズームレベルを追加する必要があります。選択した座標で囲まれたイメージマップが取得されないことを除いて、すべてが正常に機能します。

次に例を示します。

lat <- c(44.49,44.5)                
lon <- c(11.33,11.36)               
center = c(mean(lat), mean(lon))    
zoom <- 14                          
mmap <- GetMap(center = center, zoom=zoom, maptype= "satellite", destfile = "m.png") 

問題は、中心のみがパラメーターとして渡されるため、表示される画像全体がズームレベルに依存することです。だから、私は私が得るイメージの境界が何であるか本当に理解できません。私がやりたいことは、定義している座標に正確にバインドされた画像を取得することです。これは可能ですか(他のマップパッケージでも可能ですか)?

18
lbedogni

これが1つの方法です。まず、特定のズームで地図を取得します。次に、図を描くときに経度と緯度の制限を追加します。これは、scale_x_continuousscale_y_continuousで実行できます。

library(ggmap)
library(ggplot2)

### Set a range
lat <- c(44.49, 44.5)                
lon <- c(11.33, 11.36)   

### Get a map
map <- get_map(location = c(lon = mean(lon), lat = mean(lat)), zoom = 14,
               maptype = "satellite", source = "google")

### When you draw a figure, you limit lon and lat.      
foo <- ggmap(map)+
       scale_x_continuous(limits = c(11.33, 11.36), expand = c(0, 0)) +
       scale_y_continuous(limits = c(44.49, 44.5), expand = c(0, 0))

foo

enter image description here

28
jazzurro

別のオプションは、マップのソースとしてOpenStreetMapを使用することです。 ggmapパッケージのget_map関数を使用すると、OpenStreetMapをソースとして使用するときにマップの境界を指定できます。と:

mmap <- get_map(location = c(11.33,44.49,11.36,44.50), source = "osm")
ggmap(mmap)

あなたが得る:

enter image description here

ただし、このメソッドはGoogleMapsでは機能しません。 GoogleMapsをソースとして境界を指定すると、次の警告が表示されます。

警告:Googleにバウンディングボックスが指定されています-空間範囲は概算です。境界ボックスを中心/ズーム仕様に変換します。 (実験的)

OpenStreetMapを使用することの欠点は、衛星画像にアクセスできないことです。

8
Jaap

実際のインタラクティブなGoogleマップのもう1つの方法は、私のgooglewayパッケージを使用することです

library(googleway)

lat <- c(44.49,44.5)                
lon <- c(11.33,11.36)  
zoom <- 14   

mapKey <- 'your_api_key'

google_map(location = c(mean(lat), mean(lon)), zoom = zoom, key = mapKey)

enter image description here

これは、Googleマップであり、衛星の架空のイメージが標準で付属しています。

enter image description here

3
SymbolixAU

この質問をもっと早く見たかったのですが。 RgoogleMapsパッケージは、マップを取得する2つの方法を提供します。GetMap(center、zoom)およびGetMap.bbox(lonR、latR)は、単に境界ボックスをパラメーターとして受け取ります。ズームレベルは自動的に計算されます。後者の機能はあなたが探しているものかもしれないと思います。マーカス

1
Markus Loecher