2016-04-08 43 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),然后将这些数据集传递给插件。希望这有帮助