如何使用 R 中的 Leaflet 将 csv 数据绑定到 geojson
How to bind csv-data to geojson with Leaflet in R
在 R(闪亮)中,我使用的是 Leaflet。我想使用带有多边形的 geojson 文件;每个多边形都有一个 id。我还想对 geojson 中的每个 id 使用带有测量值的 csv 文件。
我的问题是:我是否必须先合并这些文件才能将它们与传单一起使用,或者我可以在传单中单独使用来自 csv 的数据吗?
如果我必须先合并它们,我该如何合并这些文件并在结果中保留多边形,因为如果我使用函数合并,结果将不是 SpatialPlolygonsDataframe。
我的代码
library(viridis)
library(geojsonio)
library(leaflet)
setwd('H:/Mijn documenten/R')
Neighborhoods <- geojsonio::geojson_read("Buurten/BuurtGrHTB2017_2.geojson",
what = "sp")
deData <- read.csv(file="Buurten/Gegevens.csv", header=TRUE, sep=";")
MapData <- merge(Neighborhoods,deData,by='BU_CODE')
pal <- colorNumeric("viridis", domain = NULL, reverse=TRUE)
leaflet(MapData) %>%
addTiles() %>%
addPolygons(stroke = FALSE, smoothFactor = 0.3, fillOpacity = 1, fillColor=~pal(ifelse(P_GEHUWD<0,NaN,P_GEHUWD))) %>%
addLegend(pal = pal, values = ~(ifelse(P_GEHUWD<0,NaN,P_GEHUWD)), title="Aantal Inwoners", opacity = 1.0)
我推荐使用 sf
-package。它是 R 中最新一代的空间数据操作,更易于处理。
library(sf)
library(tidyverse)
library(geojsonsf)
Neighborhoods <- geojson_sf('H:/Mijn documenten/R/Buurten/BuurtGrHTB2017_2.geojson')
deData <- read.csv(file='H:/Mijn documenten/R/Buurten/Gegevens.csv', header=TRUE, sep=";")
inner_join(Neighbourhoods, deData, by = 'BU_CODE') -> MapData
或没有dplyr
MapData <- merge(Neighbourhoods, deData, by = 'BU_CODE')
从那里你可以用leaflet
做任何你想做的事
在 R(闪亮)中,我使用的是 Leaflet。我想使用带有多边形的 geojson 文件;每个多边形都有一个 id。我还想对 geojson 中的每个 id 使用带有测量值的 csv 文件。 我的问题是:我是否必须先合并这些文件才能将它们与传单一起使用,或者我可以在传单中单独使用来自 csv 的数据吗? 如果我必须先合并它们,我该如何合并这些文件并在结果中保留多边形,因为如果我使用函数合并,结果将不是 SpatialPlolygonsDataframe。
我的代码
library(viridis)
library(geojsonio)
library(leaflet)
setwd('H:/Mijn documenten/R')
Neighborhoods <- geojsonio::geojson_read("Buurten/BuurtGrHTB2017_2.geojson",
what = "sp")
deData <- read.csv(file="Buurten/Gegevens.csv", header=TRUE, sep=";")
MapData <- merge(Neighborhoods,deData,by='BU_CODE')
pal <- colorNumeric("viridis", domain = NULL, reverse=TRUE)
leaflet(MapData) %>%
addTiles() %>%
addPolygons(stroke = FALSE, smoothFactor = 0.3, fillOpacity = 1, fillColor=~pal(ifelse(P_GEHUWD<0,NaN,P_GEHUWD))) %>%
addLegend(pal = pal, values = ~(ifelse(P_GEHUWD<0,NaN,P_GEHUWD)), title="Aantal Inwoners", opacity = 1.0)
我推荐使用 sf
-package。它是 R 中最新一代的空间数据操作,更易于处理。
library(sf)
library(tidyverse)
library(geojsonsf)
Neighborhoods <- geojson_sf('H:/Mijn documenten/R/Buurten/BuurtGrHTB2017_2.geojson')
deData <- read.csv(file='H:/Mijn documenten/R/Buurten/Gegevens.csv', header=TRUE, sep=";")
inner_join(Neighbourhoods, deData, by = 'BU_CODE') -> MapData
或没有dplyr
MapData <- merge(Neighbourhoods, deData, by = 'BU_CODE')
从那里你可以用leaflet