2016-04-15 10 views
3

BEARBEITEN Nach drei Tagen von wenig Interesse, füge ich ein vollständig reproduzierbares Beispiel hinzu ... Der folgende Code macht 1400 Standorte. Die ersten 700 Punkte sind um das erste Gebiet zentriert, das zweite 700 Punkte sind um ein zweites Gebiet im Nordwesten zentriert.Gibt es eine maximale Anzahl von Punkten, die mit gvisMap geplottet werden können? oder gvisMap wird nicht alle Punkte plotten

datOne <- data.frame(
    Long = runif(700, -111.180000, -110.950000), 
    Lat = runif(700, 43.180000, 43.440000), 
    Area = "First") 

datTwo <- data.frame(
    Long = runif(700, -111.850000, -110.900000), 
    Lat = runif(700, 43.910000, 44.000000), 
    Area = "Second") 

dat <- rbind(datOne, datTwo) 
dat$LatLong <- paste(dat$Lat, dat$Long, sep = ":") 

head(dat) 
     Long  Lat Area       LatLong 
1 -110.9701 43.19509 First 43.1950901590148:-110.970063584852 
2 -111.0258 43.25338 First 43.2533758980362:-111.025837010061 
3 -111.1737 43.18016 First 43.180157370572:-111.173737878765 
4 -111.1130 43.41193 First 43.4119294773275:-111.112970910808 
5 -110.9909 43.34044 First 43.3404393909033:-110.990947539737 
6 -110.9800 43.33428 First 43.3342766285082:-110.979969937215 

Wenn ich versuche, um die Punkte zu plotten mit gvisMap dann nur die um den ersten Bereich zentriert Standorte in der Karte apear wie mit dem folgenden Code

library(googleVis) 
M2 <- gvisMap(dat, "LatLong", 
       options=list(showLine=TRUE, enableScrollWheel=TRUE, 
          mapType='satlite', useMapTypeControl=TRUE, 
          width="800", height="800", 
          colors = "['#0000ff']", 
          icons=paste0("{","'default': {'normal': 
             'http://maps.google.com/mapfiles/kml/shapes/placemark_circle.png',\n", 
             "'selected':'http://maps.google.com/mapfiles/kml/shapes/placemark_circle.png'", 
             "}}") 
      )) 
plot(M2) 

alle Um zu bestätigen, wiedergegeben wird, dass die Standorte sind richtig formatiert, kann ich den Datenrahmen auf die Punkte 500: 1000 setzen, die die Orte in beiden Bereichen enthalten. Ändern der ersten Zeile des Codes zu

werden die Standorte in beiden Bereichen korrekt angezeigt. Also, das Problem scheint nicht zu formatieren, aber vielleicht gibt es eine maximale Anzahl von Punkten, die geplottet werden können.

Ist es möglich, alle Orte in den hierin enthaltenen reproduzierbaren Daten zu plotten?

Irgendwelche Vorschläge oder Code, um alle Punkte im dat Datenfeld oben zu zeichnen, würden sehr geschätzt. Ich bin froh, vorgeschlagenen Code aus anderen Paketen wie leaflet in den Kommentaren erwähnt zu nehmen.

+1

Broschüre könnte eine bessere Option sein. – MLavoie

+0

cool. Prospekt sieht auch wie eine gute Option aus. Abgesehen davon sollte der bestehende Code mit 'gvisMap' auch für meine Bedürfnisse gut funktionieren, außer für das ein oder andere Problem im OP ... –

Antwort

1

Schauen Sie sich das Beispiel unten an. Dies verwendet das Paket R-Broschüre und bindet ein Popup an die Markierungen aus der Bereichspalte.

library(leaflet) 

datOne <- data.frame(
    lng = runif(700, -111.180000, -110.950000), 
    lat = runif(700, 43.180000, 43.440000), 
    Area = "First") 

datTwo <- data.frame(
    lng = runif(700, -111.850000, -110.900000), 
    lat = runif(700, 43.910000, 44.000000), 
    Area = "Second") 

dat <- rbind(datOne, datTwo) 
dat$latLng <- paste(dat$lat, dat$lng, sep = ":") 

map<-leaflet(dat) 
map<-addTiles(map) 
map<-addMarkers(map,~lng,~lat,popup = ~as.character(Area)) 
map 
1

Ja, es gibt eine maximale Anzahl von Punkten, die Google Maps API angezeigt werden können, durch googleVis

Wie hier bemerkt: [https://developers.google.com/chart/interactive/docs/gallery/map#data-format]

Hinweis: Die Lat-Long-Paare Option lädt Karten viel schneller, besonders bei großen Datenmengen. Wir empfehlen, diese Option für große Datenmengen zu verwenden. Bitte besuchen Sie die Google Maps-API, um herauszufinden, wie Sie Ihre Adressen in lateinische Punkte umwandeln können. Die Karte kann maximal 400 Einträge anzeigen. Wenn Ihre Daten mehr als 400 Zeilen enthalten, werden nur die ersten 400 angezeigt.

Das obige leaflet funktioniert gut für Datensätze größer als 400 Punkte.

1

Nur um dies hier in die Mischung zu werfen, da die Frage ist maximale Anzahl der Punkte. Für den Fall, finden Sie jemals selbst in der Notwendigkeit von Plotten Punkte (oder Polygone oder Linien) in der Größenordnung von Zehntausenden oder Millionen, mapview wäre eine Option:

library(mapview) 
library(sp) 

datOne <- data.frame(
    lng = runif(70000, -111.180000, -110.950000), 
    lat = runif(70000, 43.180000, 43.440000), 
    Area = "First") 

coordinates(datOne) <- ~ lng + lat 
proj4string(datOne) <- "+init=epsg:4326" 

mapview(datOne) 

Beachten Sie, dass mapview nur Werke mit räumlichen Klassen benötigt daher eine gültige proj4string()