R语言 Leaflet包

R语言 Leaflet包

Leaflet是最流行的开源JavaScript库之一,用于制作移动友好的互动地图。它被世界上许多顶级组织广泛使用。为了在R语言中使用这种相同的功能,我们有leaflet包库。leaflet R包是一个易于使用的库,它的设计充分考虑了简单性、性能和实用性。

特点是

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

安装

我们可以通过以下方式在R语言中安装leaflet库。

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

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

使用leaflet包创建交互式地图

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

语法: map <- leaflet()

例子: 通过使用leaflet()函数制作的基本地图对象。

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

输出

R中的Leaflet包

将瓷砖添加到地图上

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

语法: map <- leaflet() %>%addTiles()

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

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

输出

R中的Leaflet包

在地图上添加标记

现在,由于我们已经创建了一个基本的地图,它本身并不那么有用。我们现在可以使用leaflet包的addMarkers()函数在地图上添加标记。我们可以通过添加新的图层来添加我们需要的标记。

语法: map <- leaflet() %>%addTiles() %>% addMarkers( lng, lat, popup)

参数

  • lng: 决定了标记位置的经度
  • lat: 决定了标记位置的纬度
  • popup: 决定标记弹出时显示的文字。

例子: 在印度德里有一个标记的互动地图。

# 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

输出

R中的Leaflet包

图层控制

我们可以使用addTiles()或addMarker()函数向小册子地图添加多个图层。现在,如果我们想让用户选择他/她想看的图层,我们可以通过使用图层控制来实现。图层可以被分配给命名的组。为了在小册子中命名一个组,我们为该层添加组参数。现在,这些组可以由用户来切换开启和关闭。构成地图基础的基础组,例如瓷砖,用单选按钮选择,这样你一次只能选择一个,而可以同时激活多个图层的叠加组则得到复选框。

为了实现图层控制,用group =参数为各个图层添加组名,并使用addLayersControl()添加图层控制层。

语法: leaflet() %> addTiles(group = "One") %>% addProviderTiles( providers$Esri.WorldImagery, group = "Two") %>% addLayersControl(baseGroups = c("One", "Two") options = layersControlOptions(collapsed = FALSE) )

例子: 基本小册子地图,有两个选项的瓦片和两个带复选框的标记。

# 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

输出

R中的Leaflet包

在地图上绘制数据

你的R环境中的空间对象也可以被添加为地图层,只要它们有一个定义了基准的CRS。我们可以根据数据集的类型,使用addMarkers()或addPloygons()函数在小册子地图上面使用这些数据点。如果数据集是单维的,我们使用标记,对于多维数据,我们使用多边形。

例子: 将数据变量作为标记绘制在小叶地图上面。该例子中使用的数据集可以在这里下载。

# 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)
R

输出

R中的Leaflet包

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册