在交互地图上叠加矢量文件或栅格文件

5

我正在使用R,想将一些栅格数据(例如模型中的温度地图)叠加在一个可缩放和平移的交互式地图上。最好是覆盖在Google Maps或OpenStreetMaps之上。输入数据可以是形状文件、KML、栅格数据或任何其他方便的格式。

  • 我知道我可以很容易地使用googleVisggmapRgoogleMaps进行非交互式处理。但我不想使用瓷砖,我想要交互性! 直接从浏览器缩放、平移等操作。

  • 据我所知,googleVis只能交互显示点或地址,无法区域显示。

  • 这个问题非常相似,但我肯定想尝试使用R来完成。我可以从R创建KML或geoJSON,但如何直接从R叠加呢?

  • OpenStreetMaps也可以,但我尚未找到任何关于如何从R叠加数据的参考资料,尽管OSM似乎有一个非常简单的API

2个回答

6

mapview包是为此特定目的开发的。它还配备了各种背景地图图层。如果您想简短了解mapview的功能,请随时查看软件包手册。这里,例如,是一些代码,显示Frankonia Switzerland选定啤酒厂的位置,并叠加了样本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]]

mapview_viewer


这太棒了!不幸的是,我已经使用 leaflet 实现了这个功能,但我真的很喜欢这个包。R 包的质量、数量和可用性永远不会停止给我留下深刻印象。这个包做得很好! - AF7

3

您可能会对leaflet软件包感兴趣。您可以轻松地添加raster对象。从文档中获取。

使用addRasterImage函数,可以将二维RasterLayer对象(来自raster软件包)转换为图像,并将其添加到Leaflet地图中。

这里还有一个例子,也来自于文档:

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")

1
太棒了!谢谢。我真的不知道我怎么会错过这个好东西。 - AF7

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接