2016-04-08 13 views
1

ich an einem persönlichen Projekt arbeiten, steht Hexe zu sammeln und zu speichern Wetterdaten (Temperatur, CO2, Feuchtigkeit ...) in einer MySQL-Datenbank (Ich habe PostgreSQL mit Post PostGIS versucht) von einigen funktionierenden Wetterstationen.generieren farbige Kartenlayer mit R für Leaflet

Im Front-End verwende ich eine Laravel-basierte Webanwendung mit Leaflet, um zugeordnete Daten anzuzeigen (Laravel fordert die Datenbank an und gibt GeoJSON-Dateien an Leaflet zurück).

Um eine bessere Visualisierung zu machen ich entscheide, etwas Interpolation zu tun fehlende Daten decken dann eine colorated Schicht Faltblatt zu zeigen, für erzeugen.

Im ersten Schritt habe ich einige Scripting mit IDW und Kriging Interpolationsalgorithmen gemacht, das Ergebnis in R sah gut aus, aber das Problem ist, dass ich Form oder geoJSON-Datei generieren muss, um es an Leaflet anstelle von Bildern zu übergeben.

Nach einigen Recherchen stellte ich fest, dass ich brauche mit einer Schicht-Server wie geoserver (WMS) und Postgres statt MySQL zu arbeiten ...

In diesem Punkt, den ich immer noch so verwirrt, was zu tun ist.

Hinweis: Ich muss meine Karten, wie sie in dieser Seite erscheint: http://www.irceline.be/

bitte helfen, und Dank im Voraus.

+0

Es gibt ein [Prospekt R-Paket] (http://rstudio.github.io/leaflet/), mit dem Sie Daten direkt aus R verwenden können. – alistaire

Antwort

2

Sie können alles auf der R-Seite wie folgt implementieren:

library(mapview) 
library(sp) 
library(htmlwidgets) 

## point data 
data(meuse) 
coordinates(meuse) <- ~x+y 
proj4string(meuse) <- CRS("+init=epsg:28992") 

## grid data 
data(meuse.grid) 
coordinates(meuse.grid) <- ~x+y 
proj4string(meuse.grid) <- CRS("+init=epsg:28992") 
gridded(meuse.grid) <- TRUE 

## map it 
m <- mapview(meuse.grid, zcol = "dist") + meuse 
m 

## save it 
saveWidget([email protected], file = "/path/to/file.html") 

meuse Ihre Punkte würde, meuse.grid Ihre gerasterten Daten aus Interpolation führt.

+0

Danke, das ist mein erstes Mal mit mapview, mit meinem eigenen Daten (lat & lang statt x & y) und mein ESPG = 26191, das Ergebnis ist eine leere Karte! – Serhan

+0

Die EPSG sollte kein Problem sein, da mapview die interne Reprojektion behandelt. Was meinst du mit einer leeren Karte? Keine Daten? Oder keine Hintergrundkarten? Gibt es eine Chance, Ihre Daten (oder eine Teilmenge davon) zur Verfügung zu stellen? – TimSalabim

1

wäre eine weitere Option sein, alles mit Faltblatt selbst mit dem IDW-Plugin habe ich geschrieben zu implementieren: https://github.com/JoranBeaufort/Leaflet.idw das Plugin verwenden Sie konnte immer noch Ihre Laravel Anfrage zu Ihrer Datenbank verwenden und GeoJSON Dateien zurückgeben, die Sie in das Plugin-Feed zu erzeugen, eine IDW-Schicht in Leaflet. Zu beachten: Nur das Plugin funktioniert gut mit einer begrenzten Anzahl von Punkten, so dass, wenn Sie eine große Anzahl an Punkten haben Sie zunächst die Punkte Cluster könnte (ich würde empfehlen DBSCAN verwenden) und dann die Cluster an das Plugin übergeben. Hoffe, das hilft