R Блестящий: использование большого SpatialPolygonsDataFrame в моем блестящем приложении

#r #shiny

#r #блестящий

Вопрос:

Я пытаюсь использовать подготовленный мной большой SpatialPolygonsDataFrame в моем приложении Shiny Leaflet. Чего я не понимаю, так это как использовать мой большой SpatialPolygonsDataFrame на моем сервере.R. Когда я запускаю load_data.R script и после этого server.R script, тогда блестящее приложение работает отлично. Мой вопрос к вам:

Как я могу заставить блестящее приложение работать, не запуская отдельно load_data.R, а просто запустив server.r?

load_data.R:

     library(RSQLite)
    library(rgdal)
    library(dplyr)

    # Use the SQLite database
    my_sqdb = src_sqlite("NL_Household_Penetration/Data/dataset.sqlite")

    # Extract the main dataset out of the SQLite database
    df = data.frame(tbl(my_sqdb, sql("SELECT * FROM df")))

    # Extract the stores with their locations out of the SQLite database
    Winkels = data.frame(tbl(my_sqdb, sql("SELECT * FROM Winkels")))

    # Read the shape-data(polygons) into R
    shape <-readOGR("NL_Household_Penetration/PMA_Shape/Polygonen NL Postcodes 4PP.kml", "Polygonen NL Postcodes 4PP")

    # Combine the main dataset with the shape data to plot data into zipcode areas
    SalesMap <- merge(shape, df, by.x='Description', by.y='POSTCODE')
  

server.R:

 #shiny
library(shiny)
library(shinydashboard)

#define color
library(RColorBrewer)
library(colorspace)

# leaflet map
library(leaflet)
library(htmlwidgets)
library(htmltools)


## Creating leaflet map
pal <- colorNumeric("Reds",SalesMap@data$SALES)

polygon_popup <- paste0("<strong>Postcode: </strong>", SalesMap$Description, "<br>",
                        "<strong>Waarden: </strong>", SalesMap$SALES)

pop = as.character(Winkels$WINKEL)

Icon <- makeIcon(
  iconUrl = "NL_Household_Penetration/Images/image.png",
  iconWidth = 100, iconHeight = 78
)

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

  output$mymap <- renderLeaflet({

    leaflet() %>% 
      addTiles(
        urlTemplate = "//{s}.tiles.mapbox.com/v3/jcheng.map-5ebohr46/{z}/{x}/{y}.png",
        attribution = 'Maps by <a href="http://www.mapbox.com/">Mapbox</a>'
      )  %>%


      addPolygons(data = SalesMap,
                  fillColor = ~pal(SalesMap@data$SALES),         
                  fillOpacity = 0.6,  ## how transparent do you want the polygon to be? 
                  popup = polygon_popup,
                  color = "black",       ## color of borders between districts
                  weight = 2.0) %>%

      addMarkers(Winkels$Lon, Winkels$Lat, popup=pop, icon=IKEAIcon)

  })
}
  

ui.R

  library(shiny)
 library(shinydashboard)
 library(leaflet)


    ui <- bootstrapPage(
      tags$style(type = "text/css", "html, body {width:100%;height:100%}"),
      leafletOutput("mymap", width = "100%", height = "100%")
    )
  

Заранее спасибо!

Yoorizz

Ответ №1:

Когда запускается блестящее приложение, оно ищет только server.R и ui.R (см. ?shiny::runApp ). load_data.R таким образом, не является источником.

Попробуйте добавить source("load_data.R") в server.R .

Комментарии:

1. Спасибо за ваш вклад. Я уже пробовал это с ошибкой в результате:

2. Предупреждение в файле (filename, «r», encoding = encoding): не удается открыть файл ‘load_data.R’: Нет такого файла или каталога Предупреждение: Ошибка в файле: не удается открыть трассировку стека соединений (самую внутреннюю первую): 41: файл 40: источник 1: shiny:: Ошибка runApp вфайл (имя файла, «r», encoding = encoding): не удается открыть соединение

3. …И когда я запускаю исходный код («load_data.R») в качестве выбора на сервере. R это работает. Я получаю сообщение об ошибке при нажатии кнопки запуска приложения.

4. Ваш рабочий каталог может быть неправильным. Проверьте это в интерактивном режиме с getwd() помощью . При запуске приложения убедитесь load_data.R , что оно находится в том же каталоге, или укажите правильный относительный путь к нему.

5. getwd() говорит, что я в «T:/GitHub/shiny-server/NL_Household_Penetration »