2016-07-27 2 views
0

В основном, мой вопрос заключается в том, как поместить PNG или объект mapview в блестящее приложение, чтобы включить размещение над ним маркеров.Место негеографического объекта mapview в Shiny app

enter image description here

У меня есть 15 негеографические планировка MAPview объекты, такие как PNG выше, которые были преобразованы в объекты MAPview, используя этот код с помощью другого SO пользователя question here:

library(raster) 
library(png) 
library(mapview) 

ohs<-data.frame(OHS_no=c(1001:1010), x=runif(10, 0, 1), y = runif(10, 0, 0.8), AGE = c(4, 15, 15, 43, 5, 50, 67, 77, 77, 28)) 
web_img <- "http://i.stack.imgur.com/8aSe9.png" 

png <- readPNG(readBin(web_img, "raw", 1e6)) 

rst_blue <- raster(png[, , 1]) 
rst_green <- raster(png[, , 2]) 
rst_red <- raster(png[, , 3]) 

img <- brick(rst_red, rst_green, rst_blue) 

m <- viewRGB(img) 
abs(cbind(rnorm(40), rnorm(40))) 
[email protected] %>% addMarkers(lng = ohs$x, lat = ohs$y) 

Я пытаюсь для создания приложения Shiny, чтобы собрать все это вместе, но я застрял в команде renderLeaflet и не уверен, как разместить объект m @ map в приложении. В основном ниже функциональность с объектом карты в качестве листовки.

library(shiny) 
library(leaflet) 
ohs<-data.frame(OHS_no=c(1001:1010), x=runif(10, 0, 1), y = runif(10, 0, 0.8)) 
r_colors <- rgb(t(col2rgb(colors())/255)) 
names(r_colors) <- colors() 

ui <- fluidPage(
leafletOutput("mymap"), 
p(), 

) 

server <- function(input, output, session) { 



    output$mymap <- renderLeaflet({ 
    leaflet() %>% 
     addProviderTiles("Stamen.TonerLite", 
         options = providerTileOptions(noWrap = TRUE) 
    ) %>% 
     addMarkers(lng = ohs$x, lat = ohs$y) 
    }) 
} 

shinyApp(ui, server) 

ответ

2

Это работает для меня:

library(shiny) 
library(mapview) 
library(png) 
library(raster) 

ohs<-data.frame(OHS_no=c(1001:1010), x=runif(10, 0, 1), y = runif(10, 0, 0.8)) 
r_colors <- rgb(t(col2rgb(colors())/255)) 
names(r_colors) <- colors() 

ui <- fluidPage(
    leafletOutput("mymap"), 
    p() 

) 

server <- function(input, output, session) { 
    web_img <- "http://i.stack.imgur.com/8aSe9.png" 

    png <- readPNG(readBin(web_img, "raw", 1e6)) 

    rst_blue <- raster(png[, , 1]) 
    rst_green <- raster(png[, , 2]) 
    rst_red <- raster(png[, , 3]) 

    img <- brick(rst_red, rst_green, rst_blue) 

    m <- viewRGB(img) 

    output$mymap <- renderLeaflet({ 
    [email protected] %>% 
     addMarkers(lng = ohs$x, lat = ohs$y) 
    }) 
} 

shinyApp(ui, server) 

Просто замените leaflet() с [email protected] (который является листовка объект виджета). Учитывая, что растр не привязан к привязке, нет смысла добавлять плитки провайдера.

+0

Это уже объект виджета листовки. Потрясающие. Бесценная информация для получения географической пространственной информации с использованием маркеров и блестящих. – monkeyshines

+0

Все это описано в документации ** mapview **. – TimSalabim

+1

http://environmentalinformatics-marburg.github.io/mapview/introduction.html – TimSalabim

Смежные вопросы