使用 R 为 Leaflet 生成彩色地图图层
Posted
技术标签:
【中文标题】使用 R 为 Leaflet 生成彩色地图图层【英文标题】:Generate colored map layers with R for Leaflet 【发布时间】:2016-04-08 18:07:27 【问题描述】:我从事个人项目,女巫站在 mysql 数据库中收集和存储一些工作气象站的天气数据(温度、二氧化碳、湿度......)(我已经尝试使用 PostGIS 后的 PostgreSQL)。
在前端,我使用基于 Laravel 的 Web 应用程序和 Leaflet 来显示映射数据(Laravel 请求数据库并将 GeoJSON 文件返回给 Leaflet)。
为了获得更好的可视化效果,我决定进行一些插值以覆盖缺失的数据,然后生成一个彩色图层供传单显示。
在第一步中,我使用 IDW 和克里金插值算法编写了一些 R 脚本,在 R 中绘制结果看起来不错,但问题是我需要生成 shape 或 geoJSON 文件以将其传递给 Leaflet 而不是图像。
经过一些研究,我意识到我需要使用像 geoserver(WMS) 这样的层服务器和 Postgres 而不是 MySQL ...
在这一点上,我仍然很困惑该怎么做。
注意:我需要让我的地图出现在这个网站上:http://www.irceline.be/
请帮忙,提前致谢。
【问题讨论】:
有一个 leaflet R package 可以让您直接使用来自 R 的数据。 【参考方案1】:您可以像这样在 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
将是您的插值产生的网格数据。
【讨论】:
谢谢,这是我第一次使用 mapview,使用我自己的数据(lat&long 而不是 x & y)和我的 ESPG = 26191,结果是一张空地图! EPSG 应该不是问题,因为 mapview 在内部处理重投影。空地图是什么意思?没有数据?还是没有背景图?是否有机会提供您的数据(或其子集)?【参考方案2】:另一种选择是使用传单本身使用我编写的 IDW 插件来实现所有内容:https://github.com/JoranBeaufort/Leaflet.idw 使用该插件,您仍然可以使用您的 Laravel 请求到您的数据库并返回 GeoJSON 文件,您将这些文件输入到插件中以在 Leaflet 中生成一个 IDW 层。注意:该插件仅适用于有限数量的点,因此如果您有大量点,您可以首先对点进行聚类(我建议使用 DBSCAN),然后将聚类传递给插件。希望这会有所帮助
【讨论】:
以上是关于使用 R 为 Leaflet 生成彩色地图图层的主要内容,如果未能解决你的问题,请参考以下文章