在Windows上运行GeoDjango + Spatialite

6

我一直在尝试在Windows机器上设置使用Spatialite作为后端的GeoDjango安装,但遇到了问题。

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

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

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

C:\stuff>manage.py syncdb SpatiaLite版本..: 2.3.1 支持的扩展: - 'VirtualShape' [直接访问Shapefile] - 'VirtualText' [直接访问CSV/TXT文件] - 'VirtualNetwork [Dijkstra最短路径] - 'RTree' [空间索引-R*Tree] - 'MbrCache' [空间索引-MBR缓存] - 'VirtualFDO' [FDO-OGR互操作性] - 'SpatiaLite' [Spatial SQL-OGC] PROJ.4 Rel. 4.6.1,2008年8月21日 GEOS版本3.0.2-CAPI-1.4.2
但是,在为表设置索引时,我收到了以下消息:
... 为核心.LocationHint模型安装自定义SQL updateTableTriggers: "no such module: rtree" ...
我试图忽略这条消息,但我的模型无法正确保存。
我有点困惑,因为Spatialite库似乎已被使用并启用了“RTree”扩展,但我仍然收到错误消息。关于此错误的信息不多,在线上找到了sqlite.org/rtree.html上的RTree文档,但我认为它已经包含在Spatialite中,因为它在“支持的扩展”中列出了。

我真的需要编译自己的sqlite库吗?有人可以提供已包含RTree的.dll文件吗?我是否完全做错了什么?任何帮助都将不胜感激,谢谢!


忘记版本:Python 2.6.4 在 Windows7 32 上 Django Trunk Spatialite 2.3.1 - Hans
2个回答

1

Hans,spatialite是SQLITE3的扩展。

SQLite3需要使用特定选项进行编译,但通常不会这样做。例如,在Mac上默认版本没有使用RTREE进行编译。但是我认为sqlite3应该包含在您的Python安装和pysqlite中,可能使用原始版本的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

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


谢谢澄清。由于某种原因,我认为spatialite还包含标准的sqlite库。我下载了最新版本的pysqlite,按照您的建议更改了setup.cfg文件,并尝试运行setup.py build_static install(根据pysqlite自述文件的说明),但是我得到了以下输出:<pre> running build_static running build_py running build_ext Downloading amalgation. Extracting sqlite3.c Extracting sqlite3.h building 'pysqlite2._sqlite' extension error: Unable to find vcvarsall.bat </pre> - Hans
据我所知,vcvarsall.bat是Microsoft Visual Studio的一部分。我没有拥有这个软件,也没有使用它的经验,所以现在我正在寻找预编译版本的Sqlite,其中包括rtree扩展。如果您有这样的文件,或者可以提供任何帮助找到这样的文件,将不胜感激。 - Hans
嗨,汉斯,是的,我认为pysqlite设置尝试编译sqlite3...并且它必须需要Visual Studio。我已经有一段时间没有使用Windows机器了,所以在这方面我无法真正帮助你。我成功地在Ubuntu上轻松地安装了spatialite + geodjango(比在Mac上容易得多)。 - ismail
我已经添加了一个链接,其中包含有关在Windows上安装的一些详细信息。 - ismail

1

感谢Issy指引我正确的方向。

问题确实是,pysqlite创建了一个没有启用R*TREE扩展的sqlite二进制文件。

我联系了pysqlite的开发人员(参见link text),他们非常迅速地回复我,让我知道从版本2.5.6开始,“未来的Windows二进制文件和使用--build-static编译将默认支持RTree。”

问题解决了。谢谢大家。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接