#r #shiny #shiny-server #lidar
#r #блестящий #блестящий-сервер #лидар
Вопрос:
Я пытаюсь отобразить таблицу на главной панели, но ничего не появляется, и я не получаю никакого сообщения об ошибке, оно просто пустое. Я был бы очень признателен, если бы кто-нибудь мог помочь мне решить эту проблему. Заранее спасибо!
ui.R
shinyUI(fluidPage(
titlePanel(title=h2("Deteccao de arvores individuais de LiDAR em Shiny App - R", align="center")),
headerPanel(title=h4("Defina seus parametros e preferencias")),
sidebarLayout(
sidebarPanel(
fileInput('layer', 'Select the CHM.asc file', multiple=FALSE, accept='asc', width = "350px"),
textInput("hmin", "Select the minimum height for trees (m)", value="", width = "350px"),
selectInput("fws", "Select the size of windows to find trees", choices = c("3x3"= (sws<-3), "5x5"= (sws<-5), "7x7"= (sws<-7)), width = "350px"),
wellPanel(checkboxInput("checkbox", "Would you like to apply the smoothing model for canopy?", value = FALSE, width = "350px"), uiOutput("conditionalInput")),
actionButton("action", "RUN!")
# selectInput("color", "Define the CHM color", "green"), plotOutput("chmcol")),
# wellPanel(checkboxInput("checkp1", "Plot CHM in 3D", value=FALSE, width="350px", uiOutput("chm3D"))),
# wellPanel(checkboxInput("checkp2", "Plot individual trees in 3D", value = "350px", uiOutput("arv3D")))
),
mainPanel(
tabsetPanel(type="tab",
tabPanel("Visualization of CHM", plotOutput("mapPlot")),
tabPanel("Summary of LiDAR metrics", tableOutput("sumy")),
tabPanel("Profile of height model"), #histograma de densidade
tabPanel("Individual trees detected - Model 2D of CHM"),
tabPanel("Individual trees detected - Model 3D of CHM"),
tabPanel("Individual trees detected - Model 3D of Single trees")
)
))
))
server.R
if(Sys.getenv('SHINY_PORT') == "") options(shiny.maxRequestSize=10000*1024^2)
shinyServer(function(input, output) {
output$mapPlot <- renderPlot({
inFile <- input$layer
if (is.null(inFile))
return(NULL)
data <- raster(inFile$datapath)
plot(data)
})
output$conditionalInput <- renderUI({
if(input$checkbox){
selectInput("sws", "Select the size of the smoothing window for trees", choices = c("3x3"= (sws<-3), "5x5"= (sws<-5), "7x7"= (sws<-7)), width = "350px")
}
})
output$sumy <- renderTable({
input$act
if(is.null(input$act))
return(NULL)
else
isolate({
Arv.List <- FindTreesCHM(output$mapPlot, input$sws, input$hmin)
sum <- summary(Arv.List)
head(sum)
})
})
})
Комментарии:
1. это очень хорошо работает в моей настройке
2. Хьюберт, он сгенерировал таблицу?
3. У меня нет файла для проверки
4. Могу я отправить вам электронное письмо? Отправьте мне привет «iasmimlouriiene@gmail.com »
5. Я подозреваю, что проблема связана с вашим файлом:
FindTreesCHM(raster("LiDAR_CONIFERAS_chm.asc"), 3, 3)
производитError in colnames<-(*tmp*, value = c(x, y, height)) : length of dimnames [2] not equal to array extent
. отладка…
Ответ №1:
Похоже, ошибка вызвана вашим файлом:
FindTreesCHM(raster("LiDAR_CONIFERAS_chm.asc"), 3, 3)
Error in `colnames<-`(`*tmp*`, value = c("x", "y", "height")) :
length of 'dimnames' [2] not equal to array extent
Несмотря на то, что ошибка существует и в обычном R, вот как я бы написал реактивную блестящую часть:
data <- observe({raster(inFile$datapath)})
output$mapPlot <- renderPlot({plot(data())})
Arvlist <- eventReactive(input$action, {isolate(FindTreesCHM(data(), input$sws, input$hmin))})
output$sumy <- renderTable({summary(Arvlist())})