Начало работы GeoDjango + Spatialite в Windows - PullRequest
5 голосов
/ 26 ноября 2009

У меня по-прежнему возникают проблемы с установкой установки GeoDjango, которая использует Spatialite в качестве бэкэнда на компьютере с Windows.

Я использовал установщик GeoDjango и скачал скомпилированные библиотеки из http://www.gaia -gis.it /atialite / 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", но я все еще получаю сообщение об ошибке. В Интернете мало информации об этой ошибке; Я нашел документацию RTree по адресу sqlite.org/rtree.html, однако у меня сложилось впечатление, что она уже включена в пространственный объект, поскольку он находится в списке «поддерживаемых расширений».

Мне действительно нужно скомпилировать свою собственную библиотеку sqlite? Может кто-нибудь предоставить .dll, в которой уже есть RTree? Я делаю что-то совершенно не так? Любая помощь приветствуется, спасибо!

Ответы [ 2 ]

1 голос
/ 26 ноября 2009

Спасибо Исси, что указал мне правильное направление.

Проблема была в том, что pysqlite создал бинарный файл sqlite, у которого не было включено расширение R * TREE.

Я связался с разработчиками pysqlite (см. текст ссылки ), которые очень быстро ответили, сообщив мне, что начиная с версии 2.5.6, "Будущие двоичные файлы и компиляции Windows с помощью --build-static будут поддержка RTree по умолчанию. "

Проблема решена. Спасибо всем.

1 голос
/ 26 ноября 2009

Ганс, пространственный объект является расширением 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 / установка-windows.html

...