Наложение шейп-файлов или растра на интерактивные карты

Я использую R и хочу наложить некоторые растровые данные (например, карту температуры из модели) на интерактивную карту, которая позволяет панорамировать и масштабировать. В идеале я хотел бы накладывать карты Google Maps или OpenStreetMaps. Входные данные могут быть в шейп-файлах, KML, raster данных или в любом другом удобном формате.

  • Я знаю, что могу легко сделать это неинтерактивно, используя googleVis, ggmap или RgoogleMaps. Но я не хочу использовать тайлы, я хочу взаимодействия! Масштабирование, панорамирование и т. д. прямо из браузера.

  • googleVis, насколько я знаю, к сожалению, позволяет интерактивно показывать только точки или адреса, а не области.

  • Этот вопрос очень похож, но я определенно хочу попробовать сделать это с помощью R. Я могу создать KML или geoJSON из R, но как мне напрямую наложить их из R?

  • С OpenStreetMaps тоже все в порядке, однако я не нашел ссылок на то, как накладывать на него данные из R, несмотря на то, что OSM, кажется, имеет довольно простой API.


person AF7    schedule 02.12.2015    source источник


Ответы (2)


Пакет leaflet может вас заинтересовать. Вы можете легко добавить объект raster. Из документации

Двумерные объекты RasterLayer (из растрового пакета) можно превратить в изображения и добавить на карты Leaflet с помощью функции addRasterImage.

А вот пример из документации:

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")
person johannes    schedule 02.12.2015
comment
Это абсолютно отлично! Спасибо. Я действительно понятия не имею, как мне удалось пропустить этот замечательный пакет. - person AF7; 02.12.2015

Пакет mapview был разработан специально для этой цели. Он также поставляется с различными слоями фоновой карты. Для краткого ознакомления с тем, на что способен mapview, не стесняйтесь просматривать виньетка пакета. Вот, например, код, отображающий местоположение выбранных пивоварен во франконской Швейцарии, наложенный на образец сцены 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

person fdetsch    schedule 16.12.2015
comment
Это гениально! К сожалению, я уже реализовал это с помощью leaflet, но мне очень нравится этот пакет. Качество, количество и доступность пакетов R никогда не перестанут меня впечатлять. Молодец с пакетом! - person AF7; 16.12.2015