Редактировать существующую функцию в Shiny и Mapedit - PullRequest
0 голосов
/ 14 октября 2019

Я пытаюсь создать блестящее приложение с mapedit, которое позволит мне загрузить функцию (в данном примере это nc.shp из пакета sf), а затем отредактировать эту же функцию с помощью mapedit. В настоящее время я не могу редактировать исходную функцию, но я могу редактировать новые функции, которые я создаю. Может ли mapedit редактировать оригинальную функцию? Это может показаться прискорбным, если не удастся, и если да, есть ли способ обойти это, используя mapedit?

Воспроизводимый код, приведенный ниже в качестве примера. Большое спасибо!

library(shiny)
library(leaflet)
library(mapedit)
library(sf)

# Load the sf object
nc <- st_read(
  system.file(
    "shape/nc.shp", 
    package = "sf"
  )
)

# Project transformation
nc <- st_transform(
  nc, 
  crs = 4326
)

map <- leaflet() %>% 
  leaflet::addPolylines(
    data = nc,
    weight = 3,
    opacity = 1,
    fill = FALSE,
    color = 'black',
    fillOpacity = 1,
    smoothFactor = 0.01
  )

ui <- fluidPage(

  # Application title
  titlePanel("Test Shiny Leaflet Mapedit"),

  sidebarLayout(
    sidebarPanel(
      actionButton('save', 'Save edits')
    ),

    mainPanel(
      editModUI("map")
    )
  )
)

server <- function(input, output) {

  edits <- callModule(
    editMod,
    leafmap = map,
    id = "map"
  )

  observeEvent(input$save, {

    geom <- edits()$finished

    if (!is.null(geom)) {
      assign('new_geom', geom, envir = .GlobalEnv)
      sf::write_sf(
        geom, 
        'new_geom.geojson', 
        delete_layer = FALSE, 
        delete_dsn = TRUE
      )
    }

  })
}

# Run the application 
shinyApp(ui = ui, server = server)
...