Загрузите shp в блестящее приложение, что не так с моим кодом? - PullRequest
0 голосов
/ 15 мая 2019

У меня есть кнопка загрузки файла в моем блестящем приложении.Я хотел бы загрузить шейп-файл и отобразить его в моей карте листовки.Я нашел это решение, но оно не работает для меня.Вот мой код.

server.R:


library(shiny)
library(shinydashboard)
library(leaflet)
library(rgdal)
library(utf8)
library(reticulate)


shinyServer(function(input, output){

  data <- reactive({
    req(input$filedata)
  })

  map <- reactive({
    req(input$filemap)

    # shpdf is a data.frame with the name, size, type and datapath of the uploaded files
    shpdf <- input$filemap

    # Name of the temporary directory where files are uploaded
    tempdirname <- dirname(shpdf$datapath[1])

    # Rename files
    for(i in 1:nrow(shpdf)){
      file.rename(shpdf$datapath[i], paste0(tempdirname, "/", shpdf$name[i]))
    }
    # Read shp
    map <- readOGR(paste(tempdirname, shpdf$name[grep(pattern = "*.shp$", shpdf$name)], sep="/"))
    map
  })

  #Création de la carte

  output$map <- renderLeaflet({
    if(is.null(data()) | is.null(map())){
      return(NULL)
    }

    map <- map()
    data <- data()

    # Add data to map
    lesPolygones <- data()
    lespolygones <- match(map@data)
    map@data <- lesPolygones

    leaflet() %>%
      addProviderTiles("Esri.WorldImagery", group = "Esri World Imagery", options = providerTileOptions(minZoom = 2, maxZoom = 17)) %>%
      addTiles(group = "OSM", options = providerTileOptions(minZoom = 2, maxZoom = 17)) %>%
      addPolygons(
        fillColor = "green",
        color = "black",
        dashArray = "3",
        fillOpacity = 0.7
      )
      setView(lng = 96.221,lat = 20.792, zoom = 6 ) %>%
      addLayersControl(baseGroups = c("Esri World Imagery", "OSM"))
  })
})

UI.R:


shinyUI(
  dashboardPage(
    dashboardHeader(title ="Sen2extract"),

    sidebar <- dashboardSidebar(
      sidebarMenu(
        fileInput(inputId = "inputData", label = "Importer un shape :", multiple = TRUE, accept = c('.shp', '.dbf', '.snb', '.sbx', '.shx', '.prj')),
      )
    ),

   dashboardBody(
     tabItems(
     tabItem(tabName ="carte",leafletOutput(outputId = "map", width="100%",height = "1100")),
        )
     )
    )
  )

На данный момент мойлистовка карта не показывает.Когда я запускаю приложение, у меня нет сообщения об ошибке.Я новичок в R, поэтому я прошу вашей помощи.Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...