在交互式地图上叠加shapefile或栅格

时间:2015-12-02 10:39:02

标签: r google-maps openstreetmap shapefile googlevis

我正在使用R,我希望在交互式地图上叠加一些栅格数据(例如模型的温度图),这样可以进行平移和缩放。理想情况下,我想覆盖Google地图或OpenStreetMaps。输入数据可以是shapefile,KML,raster数据或任何派上用场的。

  • 我知道我可以使用googleVisggmapRgoogleMaps轻松地以非交互方式执行此操作。但我不想使用瓷砖,我想要互动!直接从浏览器缩放,平移等。

  • googleVis,据我所知,遗憾的是,它只允许以交互方式显示点或地址,而不是区域。

  • This question非常相似,但我绝对想尝试使用R.我可以从R创建KML或geoJSON,但是如何直接从R覆盖它呢?

  • OpenStreetMaps也没问题,但是我没有找到任何关于如何在R上叠加数据的参考,尽管事实上OSM似乎有a pretty straightforward API

    < / LI>

2 个答案:

答案 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]]

mapview_viewer

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