Ошибка отображения карт при размещении flexdashboard на shinyapps.io - PullRequest
0 голосов
/ 24 марта 2020

Я создал flexdashboard с интерактивными блестящими компонентами, включая карту.

---
title: "Coronavirus Dashboard"
output: 
  flexdashboard::flex_dashboard:
    orientation: rows
    vertical_layout: scroll
    theme: readable
runtime: shiny
---

```{r setup, include=FALSE, echo=FALSE, warning=FALSE}
library(flexdashboard)
library(leaflet)
library(rgdal)
library(readr)
library(dplyr)
library(sf)
library(ggplot2)
library(tmap)

На карте отображаются данные, полученные из онлайнового CSV-файла и созданные с использованием файла формы, полученного из ZIP-файла, загруженного и сохраненного локально в каталоге с именем data:

renderLeaflet({
covid_cases <- read_csv("https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_19-covid-Confirmed.csv")

# .zip downloaded from: https://www.naturalearthdata.com/downloads/50m-cultural-vectors/50m-admin-0-countries-2/
countries <- st_read("data/ne_50m_admin_0_countries/ne_50m_admin_0_countries.shp", stringsAsFactors=FALSE, quiet=TRUE)

После некоторой обработки данных для создания одного кадра данных, объединяющего кадры данных covid_cases и countries, приложение отображает случаи для каждой страны:

map <- tm_shape(map_and_cases) + tm_polygons("Percent of Population", id="country_name")
tmap_leaflet(map)
})

Это прекрасно работает в RStudio всякий раз, когда я запускаю документ. Однако всякий раз, когда я пытаюсь разместить панель мониторинга на shinyapps.io, я сталкиваюсь со следующим сообщением об ошибке:

«Ошибка: произошла ошибка. Проверьте ваши журналы или обратитесь за разъяснениями к автору приложения.»

Проверка журналов У меня есть следующее:

2020-03-24T14:41:08.709221+00:00 shinyapps[1985429]: List of 3
2020-03-24T14:41:08.709701+00:00 shinyapps[1985429]:  $ echo   : logi FALSE
2020-03-24T14:41:08.862558+00:00 shinyapps[1985429]: 
  |                                                                       
  |.........................................                        |  64%
2020-03-24T14:41:08.710474+00:00 shinyapps[1985429]:  $ message: logi FALSE
2020-03-24T14:41:08.710489+00:00 shinyapps[1985429]: 
2020-03-24T14:41:08.862596+00:00 shinyapps[1985429]:   ordinary text without R code
2020-03-24T14:41:08.862597+00:00 shinyapps[1985429]: 
2020-03-24T14:41:08.862698+00:00 shinyapps[1985429]: 
  |                                                                       
  |...............................................                  |  73%
2020-03-24T14:41:08.863090+00:00 shinyapps[1985429]: label: unnamed-chunk-3
2020-03-24T14:41:08.876049+00:00 shinyapps[1985429]: 
  |                                                                       
  |.....................................................            |  82%
2020-03-24T14:41:08.876064+00:00 shinyapps[1985429]:   ordinary text without R code
2020-03-24T14:41:08.876064+00:00 shinyapps[1985429]: 
2020-03-24T14:41:08.876168+00:00 shinyapps[1985429]: 
  |                                                                       
  |...........................................................      |  91%
2020-03-24T14:41:08.876547+00:00 shinyapps[1985429]: label: unnamed-chunk-4
2020-03-24T14:41:08.888545+00:00 shinyapps[1985429]:   ordinary text without R code
2020-03-24T14:41:08.889867+00:00 shinyapps[1985429]: output file: /tmp/RtmpJQ4ULR/covid_dashboard.knit.md
2020-03-24T14:41:08.889868+00:00 shinyapps[1985429]: 
2020-03-24T14:41:08.888693+00:00 shinyapps[1985429]: 
2020-03-24T14:41:08.899598+00:00 shinyapps[1985429]: /opt/connect/ext/pandoc2/pandoc +RTS -K512m -RTS /tmp/RtmpJQ4ULR/covid_dashboard.utf8.md --to html4 --from markdown+autolink_bare_uris+tex_math_single_backslash --output /tmp/RtmpJQ4ULR/file1a850267e7e.html --email-obfuscation none --standalone --section-divs --template /opt/R/3.6.1/lib/R/library/flexdashboard/rmarkdown/templates/flex_dashboard/resources/default.html --id-prefix section- --variable 'theme:readable' --mathjax --variable 'mathjax-url:https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML' --lua-filter /opt/R/3.6.1/lib/R/library/rmarkdown/rmd/lua/pagebreak.lua --lua-filter /opt/R/3.6.1/lib/R/library/rmarkdown/rmd/lua/latex-div.lua --include-in-header /tmp/RtmpJQ4ULR/file1a873f90aahtml --highlight-style pygments --include-before-body /tmp/RtmpJQ4ULR/file1a831797393.html --include-after-body /tmp/RtmpJQ4ULR/file1a857f3714c.html 
2020-03-24T14:41:09.009122+00:00 shinyapps[1985429]: 
2020-03-24T14:41:09.009124+00:00 shinyapps[1985429]: Output created: /tmp/RtmpJQ4ULR/file1a850267e7e.html
2020-03-24T14:41:08.888512+00:00 shinyapps[1985429]: 
  |                                                                       
  |.................................................................| 100%
2020-03-24T14:41:08.888546+00:00 shinyapps[1985429]: 
2020-03-24T14:41:09.758017+00:00 shinyapps[1985429]: Parsed with column specification:
2020-03-24T14:41:09.758019+00:00 shinyapps[1985429]: cols(
2020-03-24T14:41:09.758022+00:00 shinyapps[1985429]: )
2020-03-24T14:41:09.758021+00:00 shinyapps[1985429]:   .default = col_double(),
2020-03-24T14:41:09.758021+00:00 shinyapps[1985429]:   `Province/State` = col_character(),
2020-03-24T14:41:09.786949+00:00 shinyapps[1985429]:   `Province/State` = col_character(),
2020-03-24T14:41:09.786947+00:00 shinyapps[1985429]: Parsed with column specification:
2020-03-24T14:41:09.758021+00:00 shinyapps[1985429]:   `Country/Region` = col_character()
2020-03-24T14:41:09.786948+00:00 shinyapps[1985429]: cols(
2020-03-24T14:41:09.758672+00:00 shinyapps[1985429]: See spec(...) for full column specifications.
2020-03-24T14:41:09.786949+00:00 shinyapps[1985429]:   .default = col_double(),
2020-03-24T14:41:09.786949+00:00 shinyapps[1985429]:   `Country/Region` = col_character()
2020-03-24T14:41:09.786949+00:00 shinyapps[1985429]: )
2020-03-24T14:41:09.787306+00:00 shinyapps[1985429]: See spec(...) for full column specifications.
2020-03-24T14:41:09.826539+00:00 shinyapps[1985429]: Warning in CPL_read_ogr(dsn, layer, query, as.character(options), quiet,  :
2020-03-24T14:41:09.826541+00:00 shinyapps[1985429]:   GDAL Error 4: Unable to open /srv/connect/apps/covid_dashboard/data/ne_50m_admin_0_countries/ne_50m_admin_0_countries.shx or /srv/connect/apps/covid_dashboard/data/ne_50m_admin_0_countries/ne_50m_admin_0_countries.SHX.Try --config SHAPE_RESTORE_SHX true to restore or create it
2020-03-24T14:41:09.829788+00:00 shinyapps[1985429]: Warning: Error in : Cannot open "/srv/connect/apps/covid_dashboard/data/ne_50m_admin_0_countries/ne_50m_admin_0_countries.shp"; The source could be corrupt or not supported. See `st_drivers()` for a list of supported formats.
2020-03-24T14:41:09.837934+00:00 shinyapps[1985429]:   114: <Anonymous>
2020-03-24T14:41:09.874249+00:00 shinyapps[1985429]: 

Я пытался решить эту проблему следующим образом, но не нашел решения:

  1. Использование различных функций для прочитайте в файле формы: readOGR() вместо st_read() - без изменений.
  2. Размещение файла .Rmd в том же каталоге, что и файл формы, и размещение на нем - без изменений.
  3. Изменяя код для загрузки, разархивируйте и откройте файл формы независимо - столкнулся с проблемами при доступе к правильному каталогу.

Есть ли что-нибудь еще, что я могу попробовать? Есть что-то простое, что мне не хватает. Дайте мне знать, если я должен добавить больше деталей к коду, или я могу уточнить что-нибудь.

1 Ответ

0 голосов
/ 25 марта 2020

Я обнаружил, что st_read() может не всегда хорошо работать в среде shiny:

Добавление строки в st_read в Shiny / Leaflet

Блестящая листовка click-event возвращает NULL при повторном нажатии

Чтобы решить мою проблему, я прочитал файл формы локально, используя st_read(), сохранил его как файл .RData и затем загрузил это Файл .RData в приложение для использования. Ниже приведен пример:

countries <-st_read("data/ne_50m_admin_0_countries/ne_50m_admin_0_countries.shp", stringsAsFactors=FALSE, quiet=TRUE)
save(countries, file="./shapeFile.RData")
load("shapeFile.RData")

Я загрузил файл .RData в shinyapps.io при размещении панели мониторинга, и теперь он, похоже, работает без этой ошибки.

...