web-dev-qa-db-de.com

Karte mit angegebenen Grenzkoordinaten abrufen

Ich möchte eine Karte mit RgoogleMaps von R mit einer bestimmten Koordinatengrenze erhalten.

Was ich anrufen kann, ist GetMap, und geben Sie einen Mittelpunkt an. Ich muss eine Zoomstufe hinzufügen. Alles funktioniert gut, außer dass ich keine Bildkarte mit den von mir gewählten Koordinaten bekomme.

Hier ist ein Beispiel:

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") 

Das Problem ist, dass nur die Mitte als Parameter übergeben wird und somit das gesamte Bild, das ich sehe, von der Zoomstufe abhängt. Also kann ich nicht wirklich verstehen, was die Grenzen des Bildes sind, das ich bekomme. Ich möchte, dass ein Bild genau an die von mir definierten Koordinaten gebunden wird. Ist das möglich (auch mit anderen Kartenpaketen)?

17
lbedogni

Hier ist ein Weg. Zunächst erhalten Sie eine Karte mit einem bestimmten Zoom. Dann fügen Sie das Lon- und Lat-Limit hinzu, wenn Sie eine Figur zeichnen, was Sie mit scale_x_continuous und scale_y_continuous tun können. 

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

26
jazzurro

Eine andere Option ist die Verwendung von OpenStreetMap als Quelle für Ihre Karte. Mit der Funktion get_map aus dem Paket ggmap können Sie die Grenzen Ihrer Map festlegen, wenn Sie OpenStreetMap als Quelle verwenden. Mit:

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

du kriegst:

 enter image description here

Diese Methode funktioniert jedoch nicht mit GoogleMaps. Wenn Sie die Grenzen mit GoogleMaps als Quelle angeben, erhalten Sie die folgende Warnung:

Warnung: Begrenzungsrahmen nur für Google - räumliche Ausdehnung ungefähr Konvertieren des Begrenzungsrahmens in die Mitte/Zoom-Spezifikation . (Experimental)

Die Verwendung von OpenStreetMap hat den Nachteil, dass Sie keinen Zugriff auf Satellitenbilder haben.

7
Jaap

Eine andere Möglichkeit für eine tatsächliche interaktive Google Map ist das Paket 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

Als Google Map-Karte ist der Satellit standardmäßig mit Satellitenbildern ausgestattet

 enter image description here

3
SymbolixAU

Ich wünschte, ich hätte diese Frage früher gesehen ... Das RgoogleMaps-Paket bietet zwei Möglichkeiten, eine Karte abzurufen: GetMap (Mitte, Zoom) und GetMap.bbox (lonR, latR) die einfach die Begrenzungsrahmen als Parameter. Die Zoomstufe wird automatisch berechnet. Ich denke, die letztere Funktion könnte das sein, wonach Sie suchen

1
Markus Loecher