1 R + leaflet 互联网制图
1.1 基本用法
- 通过
leaflet()初始化一个地图. - 利用以下函数 (e.g.
addTiles,addMarkers,addPolygons) 来添加图层. - 重复第二步完成你想要的设置.
- 输出地图.
一个简单的例子:
library(leaflet)
# library(magrittr)
m <- leaflet() %>%
addTiles() %>% # Add default OpenStreetMap map tiles
addMarkers(lng=116.67498, lat=40.40652, popup="The University of Chinese Academy of Sciences")
m # Print the map如果你对R中的管道操作(%>%)不熟悉,可以采用以下方式:
m <- leaflet()
m <- addTiles(m)
m <- addMarkers(m, lng=116.67498, lat=40.40652, popup="The University of Chinese Academy of Sciences")
mleaflet中可以接受的输出数据包括以下几种:
From base R:
- From the maps package:
- the data frame from returned from
map()
- the data frame from returned from
1.2 数据输入
第一种:输入数据为经纬度坐标
- lng/lat matrix
- data frame with lng/lat columns
m <- leaflet() %>% addTiles()
df <- data.frame(
lat = rnorm(100),
lng = rnorm(100),
size = runif(100, 5, 20),
color = sample(colors(), 100)
)
m <- leaflet(df) %>% addTiles()
m %>% addCircleMarkers(radius = ~size, color = ~color, fill = FALSE)## Assuming 'lng' and 'lat' are longitude and latitude, respectively
m %>% addCircleMarkers(radius = runif(100, 4, 10), color = c('red'))## Assuming 'lng' and 'lat' are longitude and latitude, respectively
第二种:空间数据格式
SpatialPoints[DataFrame]Line/LinesSpatialLines[DataFrame]Polygon/PolygonsSpatialPolygons[DataFrame]
第三种:maps包中的数据
- the data frame from returned from
map()
# install.packages("maps")
library(maps)
mapStates = map("state", fill = TRUE, plot = FALSE)
leaflet(data = mapStates) %>% addTiles() %>%
addPolygons(fillColor = topo.colors(10, alpha = NULL), stroke = FALSE)1.3 地图选择
1.3.1 第三方地图
leaflet支持多种类型的底图,包括Google Map,Openstreetmap等,默认为OSM的底图。也可以添加第三方的底图。
改变底图的函数:addProviderTiles(), 也可以通过改变leaflet-providers plugin来改变,更全面的例子见这里。
m <- leaflet() %>% setView(lng=116.67498, lat=40.40652, zoom = 12)
m %>% addTiles()m %>% addProviderTiles(providers$Stamen.Toner)m %>% addProviderTiles(providers$CartoDB.Positron)m %>% addProviderTiles(providers$Esri.NatGeoWorldMap)1.3.2 WMS Tiles
可以利用addWMSTiles()来添加WMS (Web Map Service) tiles。
The map below shows the Base Reflectivity (a measure of the intensity of precipitation occurring) using the WMS from the Iowa Environmental Mesonet:
leaflet() %>% addTiles() %>% setView(-93.65, 42.0285, zoom = 4) %>%
addWMSTiles(
"http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r.cgi",
layers = "nexrad-n0r-900913",
options = WMSTileOptions(format = "image/png", transparent = TRUE),
attribution = "Weather data © 2012 IEM Nexrad"
)1.3.3 多种底图叠加
还可以通过设置透明色的方式,将多种底图进行叠加显示
m %>% addProviderTiles(providers$MtbMap) %>%
addProviderTiles(providers$Stamen.TonerLines,
options = providerTileOptions(opacity = 0.35)) %>%
addProviderTiles(providers$Stamen.TonerLabels)