0

Spatialite データベースに対していくつかのクエリを実行しており、データを R に直接取得したいと考えています。このページでは、次のようなことができることを示唆しています。

library(RSQLite)
sqldrv <- dbDriver("SQLite") 
con <- dbConnect(sqldrv, dbname = "/path/to/db.sqlite",loadable.extensions = TRUE)  
spatialitestatus <- dbGetQuery(con, "SELECT load_extension('libspatialite.dylib')")

しかし、私がそうすると、Rは次のようにsegfaultします:

 *** caught segfault ***
address 0x0, cause 'memory not mapped'

Traceback:
 1: .Call("RS_SQLite_fetch", rsId, nrec = n, PACKAGE = .SQLitePkgName)
 2: sqliteFetch(rs, n = -1, ...)
 3: sqliteQuickSQL(conn, statement, ...)
 4: dbGetQuery(con, "SELECT load_extension('/usr/local/lib/libspatialite.dylib')")
 5: dbGetQuery(con, "SELECT load_extension('/usr/local/lib/libspatialite.dylib')")

私の場合、spatialite は、通常使用する sqlite のバージョンと同様に、Homebrew を使用してソースからビルドされました。libspatialite 自作の定義では、それは sqlite > 3.7.3 に依存していると述べています。sqlite の自作バージョンは 3.7.17 です

デフォルトでどのバージョンの sqlite RSQLite がプルされるかはわかりませんが、RSQLite ソース パッケージに含まれているバージョン 3.7.17 だと思います。私のバージョンの sqlite を単純に使用することを期待して、ソースから RSQLite をビルドしようとしinstall.packages(c("RSQLite"), type="source")ましたが、そうではないようです。または、もしそうなら、それはまだクラッシュしています。

最後に、R の 2 つのバージョンでこれを試したところ、同じ結果が得られたことに言及する必要があります。

  • CRAN からバイナリ形式でダウンロードされた R 3.0.0
  • R 3.0.1 をソース形式でダウンロードし、自作でインストール

アップデート:

Ubuntu FOSS GIS リポジトリが提供する libspatialite5 を使用して、Ubuntu 13.04 でクラッシュが確認されました。

4

1 に答える 1