【问题标题】:Getting GeoDjango + Spatialite running on Windows让 GeoDjango + Spatialite 在 Windows 上运行
【发布时间】:2010-12-20 12:16:36
【问题描述】:

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

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

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

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

C:\stuff>manage.py 同步数据库 SpatiaLite 版本 ..:2.3.1 支持的扩展: - 'VirtualShape' [直接 Shapefile 访问] - 'VirtualText' [直接 CSV/TXT 访问] - 'VirtualNetwork [Dijkstra 最短路径] - 'RTree' [空间索引 - R*Tree] - 'MbrCache' [空间索引 - MBR 缓存] - 'VirtualFDO' [FDO-OGR 互操作性] - 'SpatiaLite' [空间 SQL - OGC] PROJ.4 版本。 4.6.1,2008 年 8 月 21 日 GEOS 版本 3.0.2-CAPI-1.4.2

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

... 为 core.LocationHint 模型安装自定义 SQL updateTableTriggers:“没有这样的模块:rtree” ...

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

我有点困惑,因为似乎使用了 Spatialite 库并启用了“RTree”扩展,但我仍然收到错误消息。 网上没有太多关于这个错误的信息;我在 sqlite.org/rtree.html 找到了 RTree 文档,但我的印象是它已经包含在 spatialite 中,因为它是“支持的扩展”下的列表。

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

【问题讨论】:

  • 忘记版本:Windows7 32 上的 Python 2.6.4 Django Trunk Spatialite 2.3.1

标签: django sqlite geodjango spatialite


【解决方案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 自述文件的说明),我得到以下输出:
     running build_static running build_py running build_ext下载合并。提取 sqlite3.c 提取 sqlite3.h 构建 'pysqlite2._sqlite' 扩展错误:无法找到 vcvarsall.bat 
  • 据我所知,这个 vcvarsall.bat 是微软 Visual Studio 的一部分。我不拥有这个软件,也没有使用它的经验,所以现在我正在寻找包含 rtree 扩展的 Sqlite 的预编译版本。如果您有这样的文件,或者可以提供任何帮助找到一个,我们将不胜感激。
  • 嗨,汉斯,是的,我认为 pysqlite 设置试图编译 sqlite3... 它必须需要 Visual Studio。我有一段时间没有使用 Windows 机器了,所以在这方面我真的不能帮助你。我设法很容易地在 ubuntu 上设置了 spatialite + geodjango(比在 mac 上容易得多)
  • 我已经添加了一个链接,指向有关在 windows 上安装的一些详细信息。
【解决方案2】:

感谢 Issy 为我指明了正确的方向。

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

我联系了 pysqlite 的开发人员(请参阅 link text),他们很快回复并告诉我,从 2.5.6 版本开始,“未来的 Windows 二进制文件和编译将默认支持 RTree 。”

问题解决了。谢谢大家。

【讨论】:

    猜你喜欢
    • 2013-12-28
    • 2011-08-28
    • 2017-04-18
    • 2018-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    • 2014-04-16
    相关资源
    最近更新 更多