2016-04-08 92 views
1

我在一個個人項目上工作,女巫站在一個MySQL數據庫中收集和存儲天氣數據(溫度,二氧化碳,溼度...)(我已經使用postgresql試過PostgreSQL)來自一些工作的氣象站。生成彩色地圖圖層,用R爲單張

在前端,我使用基於Laravel的Web應用程序和Leaflet來顯示映射數據(Laravel請求數據庫並將GeoJSON文件返回給Leaflet)。

爲了提供更好的可視化效果,我決定做一些插值來彌補缺失的數據,然後生成一個彩色層以供小冊子顯示。

在第一步,我做了一些使用IDW和Kriging插值算法的R腳本,在R中繪製結果看起來不錯,但問題是我需要生成shape或geoJSON文件以將其傳遞到Leaflet而不是圖像。

經過一番研究,我意識到,我需要與像的GeoServer(WMS)層服務器和Postgres的,而不是MySQL的...

在這一點上,我仍然很困惑該怎麼做。

注:我需要我的地圖看起來像那些在這個網站:http://www.irceline.be/

請大家幫忙,並在此先感謝。

+0

有一個[單張R包](http://rstudio.github.io/leaflet/),它可以讓你直接使用R的數據。 – alistaire

回答

2

可以這樣實現在R側一切:

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將你的觀點,你的meuse.grid從插值得到的格點資料。

+0

謝謝,這是我第一次用mapview,用我自己的數據(lat和long代替x和y)和我的ESPG = 26191,結果是一張空白的地圖! – Serhan

+0

EPSG不應該是一個問題,因爲mapview在內部處理重投影。你用空的地圖表示什麼?沒有數據?還是沒有背景地圖?有沒有機會提供你的數據(或其子集)? – TimSalabim

1

另一種選擇是使用使用IDW插件我已經寫了傳單本身的一切來實現:https://github.com/JoranBeaufort/Leaflet.idw 使用插件,你仍然可以使用你的Laravel請求您的數據庫,並返回GeoJSON的文件,你送入插件生成Leaflet中的IDW圖層。要注意的是:插件只適用於有限的點數,所以如果你有大量的點數,你可以先將點數聚類(我推薦使用DBSCAN),然後將這些數據集傳遞給插件。希望這有幫助