2

ROracle パッケージを使用して R の Oracle データベースから georaster テーブルを処理する際に問題が発生しています。

dbReadTable(con,'MS_PICS')

エラーメッセージが表示されます:

Error in .oci.GetQuery(con, qry) : unsupported column type

これは私の接続で、正常に動作します:

library('DBI')
library('ROracle')
library('sp')
library('raster')
drv <- dbDriver('Oracle')
host <- 'XXX.XX.XX.XX'
port <- 1521
sid <- 'TestDB'
connect.string <- paste(
  "(DESCRIPTION=",
  "(ADDRESS=(PROTOCOL=tcp)(HOST=", host, ")(PORT=", port, "))",
  "(CONNECT_DATA=(SID=", sid, ")))", sep = "")
con <- dbConnect(drv, username = "XXXXX", password = "XXXXX",
                 dbname = connect.string)

これは、サーバー側のすべてのピクセルのセル値を読み取り、それを数値として R に送信し、新しいラスターに配置する、現時点での私の回避策です。

red <- raster(nrows=25, ncols=25)
timeSTART<-Sys.time()

for (i in 1:25) {
  for (j in 1:25) {
    red[j,i] <- dbGetQuery(con, paste('SELECT sdo_geor.getCellValue(image,0,',(j-1),',',(i-1),',0) 
      Value FROM ms_pics WHERE rasterid=3',sep=''))[1,1]
  }
}

time<-Sys.time()-timeSTART

これは 25x25 ピクセルのテストスターで機能し、約 30 秒続きます。したがって、これは適切なラスターの解決策ではなく、何年も続くため、空間情報も失われています。

ROracle が Oracle データベースのラスターを処理できるかどうか、およびこれがどのように機能するかを知っている人はいますか?

そうでない場合、私よりも賢い回避策はありますか?

4

0 に答える 0