使用来自2个shapefile的数据和R

时间:2018-02-22 10:02:29

标签: r leaflet

问题:我们将一个区域划分为多个区域,这些区域进一步划分为子区域。

我们的任务:创建一个区域的地图,这样当我们将鼠标悬停在一个点上时,它应该高于该区域的边界,工具提示应该显示该子区域和区域的名称。

解决方案1:创建区域的shapefile。现在,当我们将鼠标悬停在一个点上时,它将突出显示该区域的边界,但工具提示将不会显示相应子区域的名称,它将仅显示该区域的名称。

这就是我在R中使用传单的方式:

library(tigris)
library(dplyr)
library(leaflet)

m1 <- states()
m2 <- counties()

head(m1@data)
head(m2@data)

#Map 1

labels <- sprintf("State name : %s",
m1@data$NAME) %>% lapply(htmltools::HTML)

leaflet(data = m1) %>%
addPolygons(
highlight = highlightOptions(
weight = 5,
color = "#666",
dashArray = "",
fillOpacity = 0.7,
bringToFront = TRUE),
label = labels)

解决方案2:创建子区域的shapefile。现在,当我们将鼠标悬停在一个点上时,它将突出显示该子区域的边界而不是该区域的边界,但它将显示相应区域和子区域的名称。

这就是我在R中使用传单的方式:

#Map 2

# Keep statefp and the name of the State.
m3 <- m1@data[,c(3,7)]

names(m3)[2] <- "StateName"

m2@data <- left_join(m2@data,m3,by = c("STATEFP"))

labels <- sprintf("State name : %s<br>County Name : %s",
m2@data$StateName,m2@data$NAME) %>% lapply(htmltools::HTML)


leaflet(data = m2) %>%
addPolygons(
highlight = highlightOptions(
weight = 5,
color = "#666",
dashArray = "",
fillOpacity = 0.7,
bringToFront = TRUE),
label = labels)

查询:我们如何混合1和2?当我们将鼠标悬停在一个点上时,我们如何显示该区域的边界,以及该子区域(和区域)的名称?

感谢Michael Bird建议使用底格里斯河。

0 个答案:

没有答案