Mehr

Ggmap: Erstellen Sie ein Kreissymbol, bei dem der Radius die Entfernung darstellt (Meilen oder km)

Ggmap: Erstellen Sie ein Kreissymbol, bei dem der Radius die Entfernung darstellt (Meilen oder km)


Ich versuche, einen Kreis um einen bestimmten Breiten- und Längengrad hinzuzufügen, wobei die Kreisgröße (Radius) die Entfernung in Meilen oder km widerspiegelt.

Dieses Beispiel ist mir mit ggmap gelungen, wo ich einen Kreis hinzufügen kann. aber was muss ich tun, damit es die entfernung darstellt. Ich möchte letztendlich, dass die Grenzen des Kreises 20 Meilen vom Zentrum entfernt sind.

Code unten:

library(ggmap) library(ggplot2) d <- data.frame(lat=c(33.79245), lon=c(-84.32130)) emory <- get_map("Atlanta,Georgia", zoom=12) p <- ggmap( emory) p <- p + geom_point(data=d, aes(x=lon, y=lat), color="red", size=20, alpha=0.5) p

Das eigentliche Problem besteht darin, einen Kreis mit einem Durchmesser von 40 Meilen auf einer Karte mit einer Lat/Lon-Projektion (normalerweise EPSG:4326) zu zeichnen, da native Karteneinheiten Grad sind. Daher scheint es mir die einfachste Lösung zu sein, mit einer anderen Projektion zu arbeiten, die auf Metern (die leicht in Meilen umgerechnet werden können) und nicht auf Grad basiert.
Als Alternative zuget_map, du könntest damit arbeitengmapvon dem entmutigen Paket, das auch den Abruf von Google Maps-Daten ermöglicht. das muss ich gestehenget_mapführt zu einer höheren räumlichen Auflösung und ist einfacher zu handhaben beim Arbeiten mitggplot, aber zu Demonstrationszwecken,gmapsollte es auch tun. Wie auch immer, das Abrufen der Daten von Google Maps funktioniert ziemlich ähnlich…

# Google Map of Atlanta library(dismo) emory <- gmap("Atlanta,Georgia", zoom = 10, scale = 2)

Als nächstes sollten Sie Ihren zentralen Standort in ein echtes räumliches Objekt verwandeln, indem SieKoordinatenundProjektion. Zum späteren Puffern und Plotten müssen Sie es auf das Koordinatenreferenzsystem (CRS) des Google Maps-Objekts "RasterLayer" neu projizieren.

d <- data.frame(lat = c(33.79245), lon = c(-84.32130)) Koordinaten(d) <- ~ lon + lat Projektion(d) <- "+init=epsg:4326" d_mrc <- spTransform (d, CRS = CRS (Projektion (emory)))

Nachdem Sie Ihren Lat/Lon-Standort in die Mercator-Projektion von Google umgewandelt haben, die in Metern angezeigt wird, können Sie eine kleine Hilfsfunktion definieren, die Meilen in Meter umwandelt (oder Sie verwenden einfach ein Online-Konvertierungstool). Aus der so abgeleiteten Entfernung in Metern ergibt sichgPuffervon dem rgeos Paket erstellt ein kreisförmiges 'SpatialPolygons'-Objekt .

# Umrechnung von Meilen in Meter mile2meter <- function(x) { x * 1609.344 } # Puffererstellung d_mrc_bff <- gBuffer(d_mrc, width = mile2meter(20))

Nachdem Sie nun alles Notwendige zusammengestellt haben, ist es endlich Zeit zum Plotten.

library(scales) # für 'alpha()' Funktion plot(emory) plot(d_mrc_bff, col = alpha("blue", .35), add = TRUE) points(d_mrc, cex = 2, pch = 20)


Schau das Video: Souhvězdí Lyry - Díl 1: Aktivace Strážce brány