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 データベースのラスターを処理できるかどうか、およびこれがどのように機能するかを知っている人はいますか?
そうでない場合、私よりも賢い回避策はありますか?