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 でクラッシュが確認されました。