我正在使用R,我希望在交互式地图上叠加一些栅格数据(例如模型的温度图),这样可以进行平移和缩放。理想情况下,我想覆盖Google地图或OpenStreetMaps。输入数据可以是shapefile,KML,raster
数据或任何派上用场的。
我知道我可以使用googleVis
,ggmap
或RgoogleMaps
轻松地以非交互方式执行此操作。但我不想使用瓷砖,我想要互动!直接从浏览器缩放,平移等。
googleVis
,据我所知,遗憾的是,它只允许以交互方式显示点或地址,而不是区域。
This question非常相似,但我绝对想尝试使用R.我可以从R创建KML或geoJSON,但是如何直接从R覆盖它呢?
OpenStreetMaps也没问题,但是我没有找到任何关于如何在R上叠加数据的参考,尽管事实上OSM似乎有a pretty straightforward API。
< / LI>答案 0 :(得分:6)
mapview 包是为此特定目的而开发的。它还附带了各种背景地图图层。要简要介绍 mapview 的功能,请随时浏览package vignette。例如,这里有一些代码显示法兰克瑞士选定啤酒厂的位置,并由Landsat 8场景(10级)覆盖。查看?breweries91
和?poppendorf
以检索有关下面使用的数据的信息,并?mapview
熟悉众多的成本化选项。
## require package
# install.packages("mapview")
library(mapview)
## visualize breweries and add landsat 8 band 10
mapview(breweries91) +
poppendorf[[10]]
答案 1 :(得分:3)
leaflet
包可能对您有用。您可以轻松添加raster
对象。来自documentation
二维RasterLayer对象(来自栅格包)可以 转换成图像并使用addRasterImage添加到Leaflet地图 功能
以下是documentation:
的示例library(leaflet)
library(raster)
r <- raster("nc/oisst-sst.nc")
pal <- colorNumeric(c("#0C2C84", "#41B6C4", "#FFFFCC"), values(r),
na.color = "transparent")
leaflet() %>% addTiles() %>%
addRasterImage(r, colors = pal, opacity = 0.8) %>%
addLegend(pal = pal, values = values(r),
title = "Surface temp")