Это кросспост со страницы github mapedit
эмитентов здесь . Я пытаюсь создать блестящее приложение, которое позволяет пользователю отображать подмножество данных после выбора полигонов с помощью пакета mapedit
. Хотя я могу успешно построить данные, используя mapedit
, я не могу обработать sh данные $finished
после удаления выбранных полигонов mapedit.
Это приводит к двум ошибкам, которые мне еще предстоит определить обходной путь для: 1) если график разрушается, как показано на рисунке ниже, ошибка the argument is of length zero
, и 2) если график не разрушается, последние выбранные данные $finished
остаются без возможности очистки данных из сюжет.
Можно ли что-нибудь сделать, чтобы решить эти проблемы? В первую очередь это происходит, когда более двух полигонов нарисованы, а затем удалены. Хотя я думал, что это будет реактивный обходной путь, я пока не добился успеха.
Ниже приведен воспроизводимый пример из r -atial blog mapedit - обновления в версии 0.2.0. В моем блестящем приложении я использую пакет mapedit для подмножества различных временных рядов с использованием идентификаторов объектов и построения графика временных рядов в виде графика. Я считаю, что основная проблема может быть решена с помощью воспроизводимого примера ниже.
library(sf)
# make the coordinates a numeric matrix
qk_mx <- data.matrix(quakes[,2:1])
# convert the coordinates to a multipoint feature
qk_mp <- st_multipoint(qk_mx)
# convert the multipoint feature to sf
qk_sf <- st_sf(st_cast(st_sfc(qk_mp), "POINT"), quakes, crs=4326)
# run select demo for the quake data
# we will need the qk_sf
# to test
# plot(qk_sf)
library(mapedit)
library(mapview)
library(shiny)
ui <- fluidPage(
fluidRow(
# edit module ui
column(6, editModUI("editor")),
column(
6,
h3("Boxplot of Depth"),
plotOutput("selectstat")
)
)
)
server <- function(input, output, session) {
# edit module returns sf
edits <- callModule(editMod, "editor", mapview(qk_sf)@map)
output$selectstat <- renderPlot({
req(edits()$finished)
qk_intersect <- st_intersection(edits()$finished, qk_sf)
req(nrow(qk_intersect) > 0)
boxplot(
list(
all = as.numeric(qk_sf$depth),
selected = as.numeric(qk_intersect$depth)
),
xlab = "depth"
)
})
}
shinyApp(ui, server)
Пример ошибки
Несмотря на то, что я опубликовал это, наряду с другими в mapedit github выпускает страницу и r-пространственные, я Я подумал, что стоит посмотреть, есть ли решение, которое не требует исправления пакета. Я нашел два обходных пути для selectMod здесь и здесь , но исходный код editMod гораздо более сложный, поэтому я нашел его вне моей способности адаптировать это решение.
Большое спасибо заранее, я изо всех сил пытался решить эту проблему в течение нескольких недель и хотел бы решить эту проблему и закрыть этот проект.