📜  R中的传单包

📅  最后修改于: 2022-05-13 01:54:31.289000             🧑  作者: Mango

R中的传单包

传单是用于移动友好型交互式地图的最流行的开源 JavaScript 库之一。它被世界上许多顶级组织广泛使用。为了在 R 语言中使用相同的功能,我们有传单包库。 Leaflet R 包是一个易于使用的库,其设计具有简单性、性能和可用性。

特征:

  • 支持提供平移和缩放等功能的交互式地图。
  • 支持用于组成地图的各种元素,例如地图图块、标记、多边形、线条、弹出窗口和 GeoJSON。
  • 支持从 R 控制台本身创建完整的动态地图。
  • 易于在各种降价文件中嵌入地图对象。
  • 还可以在非球形墨卡托投影中显示地图
  • 使用从传单插件库中选择的插件来增强地图功能

安装:

我们可以使用 R 语言安装传单库:

# installs the leaflet package
install.packages("leaflet")

在 R 控制台中运行上述命令并选择所需的 cran 镜像来安装 Leaflet R 包。

使用传单包创建交互式地图

要使用 R 语言中的传单包创建地图小部件,我们使用传单()函数。 Leaflet()函数返回一个地图对象,该对象可以单独查看,也可以通过添加更多图层进行修改。基本的传单小部件显示一个没有瓷砖或标记的空地图小部件。

示例:使用 Leaflet()函数制作的基本地图对象。

R
# load leaflet library
library(leaflet)
  
# create map widget
map <- leaflet()
  
# print map widget
map


R
# load leaflet library
library(leaflet)
  
# create map widget with OpenStreetMap tile
map <- leaflet() %>%
       addTiles()
  
# print map widget
map


R
# load leaflet library
library(leaflet)
  
# create map widget with OpenStreetMap tile
# added marker at Delhi India
map <- leaflet() %>%
       addTiles() %>%
       addMarkers(lng=77.1025, lat=28.7041, 
                  popup="Delhi, India")
  
# print map widget
map


R
# load library leaflet
library(leaflet)
  
# draw map
leaflet() % >%
# add first tile
addTiles(group="One") % >%
# add second tile
addProviderTiles(providers$Esri.WorldImagery,
                 group="Two") % >%
# add first marker
addMarkers(lng=25.505206, lat=65.9767231,
           group="mark1") % >%
# add second marker
addMarkers(lng=-45.445206, lat=45.5327231,
           group="mark2") % >%
# add Layer controls
addLayersControl(baseGroups=c("One", "two"),
                 overlayGroups=c("mark1", "mark2"),
                 options=layersControlOptions(collapsed=FALSE))


R
# load library
library(sf)
library(leaflet)
# read dataset
dataset <- st_read("wqp_sites.shp")
  
# draw plot with markers at dataset point
leaflet() %>%
  addTiles() %>%
  addMarkers(data = dataset)


输出:

向地图添加图块

由于上面的代码创建了一个空的地图小部件。要向其中添加切片以创建所需的地图,我们使用传单包的 addTiles()函数。默认情况下,如果没有传递参数,它会在地图小部件的顶部创建一个 OpenStreetMap 地图图块。对于自定义地图图块,我们将该地图作为参数传递给 addTiles()函数。

示例:带有 OpenStreetMap 瓦片的基本地图。

R

# load leaflet library
library(leaflet)
  
# create map widget with OpenStreetMap tile
map <- leaflet() %>%
       addTiles()
  
# print map widget
map

输出:

在地图上添加标记

现在,由于我们已经创建了一个基本地图,它本身并没有那么有用。我们现在可以使用传单包的 addMarkers()函数在地图上添加标记。只需添加新图层,我们就可以根据需要添加任意数量的标记。

示例:印度德里带有标记的交互式地图。

R

# load leaflet library
library(leaflet)
  
# create map widget with OpenStreetMap tile
# added marker at Delhi India
map <- leaflet() %>%
       addTiles() %>%
       addMarkers(lng=77.1025, lat=28.7041, 
                  popup="Delhi, India")
  
# print map widget
map

输出:

图层控制

我们可以使用 addTiles() 或 addMarker()函数向传单地图添加多个图层。现在,如果我们想让用户选择他/她想要查看的层,我们可以使用层控制来做到这一点。层可以分配给命名组。要在传单中命名一个组,我们将 group 参数添加到该层。现在,用户可以打开和关闭这些组。构成地图基础的基本组(例如图块)是使用单选按钮选择的,这样您一次只能选择一个,而可以同时激活多个图层的叠加组会获得复选框。

要实现图层控制,请使用 group = 参数将组名称添加到各个图层,并使用 addLayersControl() 添加图层控制图层。

示例:基本的传单地图,带有两个瓷砖选项和两个带有复选框的标记。

R

# load library leaflet
library(leaflet)
  
# draw map
leaflet() % >%
# add first tile
addTiles(group="One") % >%
# add second tile
addProviderTiles(providers$Esri.WorldImagery,
                 group="Two") % >%
# add first marker
addMarkers(lng=25.505206, lat=65.9767231,
           group="mark1") % >%
# add second marker
addMarkers(lng=-45.445206, lat=45.5327231,
           group="mark2") % >%
# add Layer controls
addLayersControl(baseGroups=c("One", "two"),
                 overlayGroups=c("mark1", "mark2"),
                 options=layersControlOptions(collapsed=FALSE))

输出:

在地图顶部绘制数据

R 环境中的空间对象也可以添加为地图图层,前提是它们具有使用基准定义的 CRS。根据数据集的类型,我们可以使用 addMarkers() 或 addPloygons()函数在传单地图顶部使用这些数据点。如果数据集是单维的,我们使用标记,而对于多维数据,我们使用多边形。

示例:将数据变量绘制为传单地图顶部的标记。示例中使用的数据集可以在这里下载。

R

# load library
library(sf)
library(leaflet)
# read dataset
dataset <- st_read("wqp_sites.shp")
  
# draw plot with markers at dataset point
leaflet() %>%
  addTiles() %>%
  addMarkers(data = dataset)

输出: