Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在RSQLite crasks R(OS X&;Ubuntu)中加载spatialite扩展_R_Sqlite_Spatialite - Fatal编程技术网

在RSQLite crasks R(OS X&;Ubuntu)中加载spatialite扩展

在RSQLite crasks R(OS X&;Ubuntu)中加载spatialite扩展,r,sqlite,spatialite,R,Sqlite,Spatialite,我正在对spatialite数据库运行一些查询,希望将数据直接输入R。建议我可以这样做: library(RSQLite) sqldrv <- dbDriver("SQLite") con <- dbConnect(sqldrv, dbname = "/path/to/db.sqlite",loadable.extensions = TRUE) spatialitestatus <- dbGetQuery(con, "SELECT load_extension('libs

我正在对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')")
在我的例子中,spatialite是使用自制从源代码构建的,我通常使用的sqlite版本也是如此。在libspatialite自制的定义中,它说它依赖于sqlite>3.7.3。我自制的sqlite版本是3.7.17

我不知道默认情况下sqlite RSQLite的版本是什么,但我假设它是RSQLite源代码包中包含的3.7.17版本。我尝试使用
install.packages(c(“RSQLite”),type=“source”)
从源代码构建RSQLite,希望它能简单地使用我的sqlite版本,但看起来不像是这样。或者如果真的发生了,它还在崩溃

最后,我要提到的是,我在两个版本的R下进行了尝试,结果相同:

  • R 3.0.0以二进制形式从CRAN下载
  • R 3.0.1以源代码形式下载并通过自制软件安装
更新:
使用Ubuntu FOSS GIS存储库提供的libspatialite 5在Ubuntu 13.04中确认崩溃。

最近版本的libspatialite(4.x)似乎有问题。此外,加载自制的libspatialite3扩展是可行的,但随后的查询会导致相同的错误


最后,我的(短期的、临时的、黑客式的)解决方案是创建一个R包,编译自己的spatialite并加载它

Mac分支的维护者Simon Urbanek建议不要使用MacPorts、Homebrew或Fink安装外部软件包。您所说的外部软件包是什么意思?非R系统库?在spatialite的例子中,我甚至不知道在哪里可以下载预构建的二进制文件。如果我是从源代码构建,我会像homebrew那样做。是的,如果你喜欢非R系统库。据我所知,出现问题的原因是源代码被构建到了“错误”的目录中。通过发布到Mac-R邮件列表,您可能会得到更多有见识的建议。据我所知,没有任何版本的libspatialite可通过R打包方式获得。
 *** 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')")