使用 R for Leaflet 生成彩色地图图层

Generate colored map layers with R for Leaflet

我从事个人项目, 负责收集天气数据(温度、二氧化碳、湿度...)并将其存储在 MySQL 数据库中(我尝试使用 PostgreSQL post PostGIS)来自一些工作中的气象站。

在前端,我使用基于 Laravel 的 Web 应用程序和 Leaflet 来显示映射数据(Laravel 请求数据库和 return GeoJSON 文件到 Leaflet)。

为了获得更好的可视化效果,我决定进行一些插值以覆盖缺失的数据,然后生成一个彩色图层供传单显示。

在第一步中,我使用 IDW 和 Kriging 插值算法编写了一些 R 脚本,在 R 中绘制结果看起来不错,但问题是我需要生成形状或 geoJSON 文件以将其传递给 Leaflet 而不是图像.

经过一些研究,我意识到我需要使用像 geoserver(WMS) 这样的层服务器和 Postgres 而不是 MySQL ...

在这一点上,我仍然很困惑。

注意:我需要让我的地图看起来像本网站中的地图:http://www.irceline.be/

请帮忙,在此先感谢。

您可以像这样在 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(m@map, file = "/path/to/file.html")

meuse 将是您的积分,meuse.grid 您的插值网格化数据。

另一种选择是使用传单本身使用我编写的 IDW 插件来实现所有内容:https://github.com/JoranBeaufort/Leaflet.idw 使用该插件,您仍然可以使用对数据库的 Laravel 请求和 return GeoJSON 文件,您将这些文件输入插件以在 Leaflet 中生成 IDW 层。注意:该插件仅适用于有限数量的点,因此如果您有大量点,您可以先对这些点进行聚类(我建议使用 DBSCAN),然后将聚类传递给插件。希望这有帮助