Построение изображения в блестящем R - PullRequest
0 голосов
/ 19 декабря 2018

Я начинаю играть с приложениями Shinny и получаю следующую ошибку при попытке запустить код.Переменные output$myrgb и output$mynrg не отображаются.

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

Есть идеи?

library(shiny)
library(leaflet)
library(dbplyr)
library(raster)
library(rgdal)

ui<-fluidPage(

  titlePanel("Calculation"),

  "SHORT DESCRIPTION ---- ",
  "Study area location",

  textInput(inputId = "mypath", label = "Path to Sentinel images"),
  leafletOutput("mymap",height = 1000),
  imageOutput(outputId = "myrgb"),
  imageOutput(outputId = "mynrg"),
  imageOutput(outputId = "ndvi")


)

server<-function(input, output) {

  output$mymap <- renderLeaflet({
    m <- leaflet() %>%
      addTiles() %>%
      setView(lng=-60.143, lat=-19.9052, zoom=7)
    m

    # Load  images
    bands<-c("B((0[2348]_10m)).jp2$")
    S2<-list.files(input$mypath, full.names = TRUE, pattern = ".SAFE")
    S2<-list.files(S2, recursive = TRUE, full.names = TRUE, pattern=bands)
    S2<-lapply(1:length(S2), function (x) {raster(S2[x])})
    S2<-stack(S2) 

    utmcoor<-SpatialPoints(cbind(xmin(S2[[1]]),ymax(S2[[1]])), proj4string=CRS(proj4string(S2[[1]]))) # prepare UTM coordinates matrix 
    longlatcoor<-spTransform(utmcoor,CRS("+proj=longlat +datum=WGS84")) # converting
    utmcoor2<-SpatialPoints(cbind(xmax(S2[[1]]),ymin(S2[[1]])), proj4string=CRS(proj4string(S2[[1]]))) # prepare UTM coordinates matrix abajo derecha
    longlatcoor2<-spTransform(utmcoor2,CRS("+proj=longlat +datum=WGS84")) # converting

    lng1<-xmin(longlatcoor) # extract coordinates to variable
    lng2<-xmin(longlatcoor2)
    lat1<-ymin(longlatcoor)
    lat2<-ymin(longlatcoor2)

    leaflet() %>% addTiles() %>% # Add coordinates to map
      addRectangles(
        lng1=lng1, lat1=lat1,
        lng2=lng2, lat2=lat2,
        fillColor = "transparent")
  }) 
  output$myrgb <- renderPlot({plotRGB(S2, r=3, g=2, b=1, scale=maxValue(S2[[1]]), stretch="lin")})
  output$mynrg <- renderPlot({plotRGB(S2, r=4, g=3, b=2, scale=maxValue(S2[[1]]), stretch="lin")})

  }

shinyApp( ui=ui, server=server)

enter image description here

РЕДАКТИРОВАТЬ --- ОШИБКА: объект типа 'замыкание' не может быть подмножеством

enter image description here

enter image description here

1 Ответ

0 голосов
/ 19 декабря 2018

Трудно помочь без ваших файлов.Но вы должны сделать что-то подобное.Используйте реактивный проводник для прохождения растрового объекта.

server<-function(input, output) {

  Raster <- reactive({
    bands <- c("B((0[2348]_10m)).jp2$")
    S2 <- list.files(input$mypath, full.names = TRUE, pattern = ".SAFE")
    S2 <- list.files(S2, recursive = TRUE, full.names = TRUE, pattern=bands)
    S2 <- lapply(1:length(S2), function (x) {raster(S2[x])})
    stack(S2) 
  })

  output$mymap <- renderLeaflet({
    m <- leaflet() %>%
      addTiles() %>%
      setView(lng=-60.143, lat=-19.9052, zoom=7)

    S2 <- Raster()

    utmcoor<-SpatialPoints(cbind(xmin(S2[[1]]),ymax(S2[[1]])), proj4string=CRS(proj4string(S2[[1]]))) # prepare UTM coordinates matrix 
    longlatcoor<-spTransform(utmcoor,CRS("+proj=longlat +datum=WGS84")) # converting
    utmcoor2<-SpatialPoints(cbind(xmax(S2[[1]]),ymin(S2[[1]])), proj4string=CRS(proj4string(S2[[1]]))) # prepare UTM coordinates matrix abajo derecha
    longlatcoor2<-spTransform(utmcoor2,CRS("+proj=longlat +datum=WGS84")) # converting

    lng1<-xmin(longlatcoor) # extract coordinates to variable
    lng2<-xmin(longlatcoor2)
    lat1<-ymin(longlatcoor)
    lat2<-ymin(longlatcoor2)

    m %>% # Add coordinates to map
      addRectangles(
        lng1=lng1, lat1=lat1,
        lng2=lng2, lat2=lat2,
        fillColor = "transparent")
  }) 

  output$myrgb <- renderPlot({
    S2 <- Raster()
    plotRGB(S2, r=3, g=2, b=1, scale=maxValue(S2[[1]]), stretch="lin")
  })

  output$mynrg <- renderPlot({
    S2 <- Raster()
    plotRGB(S2, r=4, g=3, b=2, scale=maxValue(S2[[1]]), stretch="lin")
  })

}
...