2015-02-27 22 views
11

Używam ggmap pakietu R.ggmap :: get_map nie pozwala na dokładne określenie narożników mapy?

?get_map mówi:

lokalizacja: adres, długość para/szerokość (w tej kolejności), lub lewy dolny/prawo/top box/ograniczający

Mój kod:

library(ggmap) 
library(mapproj) 

lat_bottom = 52.33 # bottom latitude of Berlin 
lat_top = 52.5 # top latitude of Berlin 
lon_left = 13.0 # left longitude of Berlin 
lon_rigth = 13.95 # right longitude of Berlin 

mymap <- get_map(location = c(lon_left,lat_bottom,lon_rigth,lat_top), 
source="google") 
ggmap(mymap) 

Dlaczego daje mi ostrzeżenie:

Ostrzeżenie: pole ograniczające podane dla google - zakres przestrzenny tylko w przybliżeniu. konwersja obwiedni na specyfikację środka/zoomu. (doświadczalnie)

Czy to znaczy, że nie ma dla mnie sposób, aby stworzyć mapę z tych dokładnych kątach?

Na podstawie opinii poniżej Próbowałem to:

lat_bottom = 52.33 # bottom latitude of Berlin 
lat_top = 52.68 # top latitude of Berlin 
lon_left = 13.08 # left longitude of Berlin 
lon_rigth = 13.77 # right longitude of Berlin 

mylon = c(lon_left,lon_rigth) 
mylat = c(lat_bottom,lat_top) 

mymap <- get_map(location = c(lon = mean(mylon), lat = mean(mylat)), 
       maptype = "roadmap", source = "google", zoom=11) # using zoom 
ggmap(mymap) 
foo<-ggmap(mymap)+ 
    scale_x_continuous(limits = c(lon_left,lon_right), expand = c(0, 0)) + 
    scale_y_continuous(limits = c(lat_bottom,lat_top), expand = c(0, 0)) 
foo 

Wygląda OK. Ale kiedy podjąć inne współrzędne (te bliżej siebie), na przykład, jak te poniżej - wówczas mapa wygląda dziwnie - to trochę przesuwa się w lewo na szarym tle ...

lat_bottom = 52.35 # new bottom 
lat_top = 52.50 # new top 
lon_left = 13.2 # new left 
lon_rigth = 13.5 # new right 
+1

można dostać mapę z pewnym zoom. Jeśli użyjesz 'ggplot2', możesz przyciąć mapę używając' scale_x_continous' oraz 'scale_y_continous'. Zobacz to [link] (http://stackoverflow.com/questions/25636897/get-map-with-specified-boundary-coordinates/25639124#25639124). To może być to, o co prosisz. – jazzurro

+0

Po prostu wyjaśnić mój cel: staram się unikać "powiększania". Nie wiem z góry (kiedy piszę kod) jaki obszar mapy chcę zobaczyć. Czasami jest większy, czasem mniejszy. Właśnie dlatego muszę pobrać 4 rogi z danych, a następnie spróbować narysować mapę z tymi rogami. – user2323534

Odpowiedz

11

Jeśli chcesz do pracy z granicami, lepiej używać OpenStreetMap niż GoogleMaps. Ustawienie granic dla GoogleMaps w ggmap nie działa. Zamiast tego oszacuje punkt środkowy.

Możesz podać źródło, dołączając source = "osm" do swojego połączenia get_map.

Z:

mymap <- get_map(location = c(13.2,52.35,13.5,52.50), source = "osm") 

ggmap(mymap) 

otrzymasz:

enter image description here