2017-01-30 15 views
1

シェイプファイルを読み込むには、次のコマンドを使用します。readOGR(infile $ datapath、input $ text1)ここで、input $ text1はuiで定義されたShiny textInput .R。これどうやってするの?shinyを使用してreadORGでtextInputを使用する方法

Minimal Code: 
library(shiny) 
library(caret) 
library(sp)    
library(rgdal)   
library(raster) 
library(rgeos) 
library(ggplot2) 
library(RStoolbox) 

setwd("C:/Users/User1/MyTestData") 

shinyApp(
    ui = fluidPage(
    navbarPage(
     "Example", 
     tabPanel("Option1", 

       sidebarPanel(
       textInput("testfile1", "Input Test File","test_file"), 
       verbatimTextOutput("value1") 
       ) 
    ) 
    ) 
), 
    server <- function (input, output, session){ 
    # Load specified file 
    filedata1 <- reactive({ 
     infile1 <- input$FileInput 
     if (is.null(infile1)) { 
     # No upload 
     return(NULL) 
     } 
     myfile <- readOGR(infile1$datapath, infile1$name) # <-this doesn't work?? 
     #myfile <- readOGR(dirname(infile1$datapath), infile1$name) 
    }) 

エラーメッセージ:.localの(X、Y、...)で エラー:引数yからエクステントオブジェクトを取得できません

+0

を私はエラーを取得:タイプ強制することはできません 『閉鎖』をしますベクトル "タイプ"の文字 " – jmg

+0

私はコードを改善しようとしましたが、別のエラーメッセージが表示されます: – jmg

+0

ここに最小コードです: – jmg

答えて

1

これはあなたの "でシェイプファイルをプロットし、最小限の例ですMyTestData」フォルダ名前にtextInputで( 『.shpの』拡張子を除く)を入力するとき:

library(shiny) 
library(rgdal) 
library(ggplot2) 
library(sp)    

shinyApp(
    ui = fluidPage(
    textInput("FileInput", "Input Test File"), 
    plotOutput("map")), 
    server <- function (input, output, session){ 
    # Load specified file 
    filedata <- reactive({ 
     infile <- input$FileInput 
     if (!is.null(infile) && infile!="") 
     readOGR("C:/Users/User1/MyTestData", infile) 
    }) 
    output$map <- renderPlot({ 
     data <- filedata(); 
     if(!is.null(data)) 
     plot(data)}) 
    }) 

enter image description here

+0

ありがとうHubertL。データパスを使用してディレクトリを指定することはできませんか?ディレクトリが変更されるたびに手動でパスを変更しないようにしたい。最後に、readORGの出力を変数に代入することはできませんか?その理由は、readORG出力を使ってクロップなどの操作をしたいからです。これらの2つの問題を解決できれば、問題は解決されます。 – jmg

+0

変数に代入して、反応内のreadOGRの結果を変更するか、またはrenderPlot内でデータオブジェクトを使用することができます。シェイプファイルは光沢のあるサーバーに置かれますので、アプリケーションのサブフォルダ、たとえば 'shapes'に配置し、readOGRのサブフォルダを使用します。 – HubertL

+0

ソリューションをありがとう!私は変更を行います。 – jmg

関連する問題