2016-07-27 25 views
0

基本上我的問題是如何將PNG或mapview對象放入閃亮的應用程序中,以便在其上放置標記。將非地理mapview對象放入Shiny應用程序中

enter image description here

我喜歡PNG 15非地理布圖規劃的MapView對象上面用下面的代碼與另一SO用戶question here的協助下轉變成MapView類對象:

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) 

只需使用[email protected]取代leaflet()(這是一個小冊子widget對象)。鑑於柵格未經地理參考,添加提供者圖塊沒有意義。

+0

它已經是一個傳單小部件對象。真棒。使用Markers和Shiny不帶地理空間信息的寶貴信息。 – monkeyshines

+0

全部都在** mapview **文檔中描述。 – TimSalabim

+1

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

相關問題