让GeoDjango + Spatialite在Windows上运行

Han*_*ans 5 sqlite django geodjango spatialite

我在设置GeoDjango安装时仍然遇到问题,该安装使用Spatialite作为Windows机器的后端.

我使用了GeoDjango安装程序并从http://www.gaia-gis.it/spatialite/binaries.html下载了预编译库,并将它们转储到我的geodjango/bin目录中.

我将我的pysqlite2安装升级到最新版本,以便可以加载扩展并SPATIALITE_LIBRARY_PATH在我的设置文件中指定.

当我运行时,manage syncdb我得到以下输出

C:\stuff>manage.py syncdb
SpatiaLite version ..: 2.3.1    Supported Extensions:
        - 'VirtualShape'        [direct Shapefile access]
        - 'VirtualText'         [direct CSV/TXT access]
        - 'VirtualNetwork       [Dijkstra shortest path]
        - 'RTree'               [Spatial Index - R*Tree]
        - 'MbrCache'            [Spatial Index - MBR cache]
        - 'VirtualFDO'          [FDO-OGR interoperability]
        - 'SpatiaLite'          [Spatial SQL - OGC]
PROJ.4 Rel. 4.6.1, 21 August 2008
GEOS version 3.0.2-CAPI-1.4.2

但是,在为表设置索引时,我收到以下消息:

...
Installing custom SQL for core.LocationHint model
updateTableTriggers: "no such module: rtree"
...

我试图忽略该消息,但我的模型无法正确保存.

我有点困惑,因为似乎使用了Spatialite库并启用了"RTree"扩展,但我仍然收到错误消息.关于此错误的在线信息不多; 我在sqlite.org/rtree.html找到了RTree文档,但我的印象是它已经包含在spatialite中,因为它是在"支持的扩展"下的监听.

我真的需要编译自己的sqlite库吗?有人可以提供已包含RTree的.dll吗?我做错了什么吗?任何帮助表示赞赏,谢谢!

ism*_*ail 1

Hans,spatialite 是 SQLITE3 的扩展。

SQLite3 需要使用此选项专门编译,但通常不是。例如,mac 上的默认版本不是使用 RTREE 编译的。不过我认为虽然你的Python安装和pysqlite可能使用sqlite3的原始版本或其他版本,但应该包含sqlite3。

你可以尝试 sqlite3.version 来查看 python 使用的是哪个版本。

另请注意,您必须使用正确的配置选项重新安装 pysqlite 模块,即在运行 setup.py install 之前,更改 setup.cfg:

[build_ext]
#define=
include_dirs=PATH_TO_INCLUDE
library_dirs=PATH_TO_LIBS
libraries=sqlite3
#define=SQLITE_OMIT_LOAD_EXTENSION
Run Code Online (Sandbox Code Playgroud)

http://www.gaia-gis.it/spatialite/install-windows.html