2009-11-25 15 views
5

Ich habe weiterhin Probleme beim Einrichten einer GeoDjango-Installation, die Spatialite als Backend auf einer Windows-Maschine verwendet.GeoDjango + Spatialite unter Windows

Ich habe das GeoDjango-Installationsprogramm verwendet und die vorkompilierten Bibliotheken von http://www.gaia-gis.it/spatialite/binaries.html heruntergeladen und sie in mein geodjango/bin-Verzeichnis abgelegt.

Ich habe meine pysqlite2-Installation auf die neueste Version aktualisiert, so dass Erweiterungen geladen werden können und ich habe SPATIALITE_LIBRARY_PATH in meiner Einstellungsdatei angegeben.

Als ich manage syncdb laufen bekomme ich folgende Ausgabe

 
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 

Wenn jedoch die Indizes für die Tabelle einrichten ich die folgende Meldung:

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

Ich habe versucht, die Nachricht zu ignorieren, aber meine Modelle würden nicht korrekt speichern.

Ich bin etwas verwirrt, weil die Spatialite-Bibliothek verwendet wird und die Erweiterung "RTree" aktiviert hat, aber ich bekomme immer noch die Fehlermeldung. Es sind nicht viele Informationen zu diesem Fehler online verfügbar. Ich habe die RTree-Dokumentation unter sqlite.org/rtree.html gefunden, hatte aber den Eindruck, dass sie bereits in spatialite enthalten ist, da sie unter "unterstützte Erweiterungen" aufgeführt ist.

Muss ich wirklich meine eigene SQLite-Bibliothek kompilieren? Kann jemand eine .dll bereitstellen, die bereits RTree enthalten hat? Mache ich etwas völlig falsches? Jede Hilfe wird geschätzt, danke!

+0

vergessen Versionen: Python 2.6.4 auf 32 Windows7 Django Trunk SpatiaLite 2.3.1 – Hans

Antwort

1

Hans, spatialite ist eine Erweiterung von SQLITE3.

SQLite3 muss speziell mit dieser Option kompiliert werden, und es ist oft nicht. Zum Beispiel wird die Standardversion auf Mac nicht mit RTREE kompiliert. Aber ich denke, sqlite3 sollte durch Ihre Python-Installation & pysqlite möglicherweise mit der Originalversion von sqlite3 oder einer anderen Version enthalten sein.

können Sie versuchen, sqlite3.version zu sehen, welche Version von Python verwendet wird.

Beachten Sie auch, Sie müssen pysqlite Modul mit den richtigen Konfigurationsoptionen, dh erneut installieren, bevor setup.py installieren ausgeführt wird, ändern Sie die 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

+0

Danke für die Klarstellung. Aus irgendeinem Grund hatte ich den Eindruck, dass spatialite auch die Standard-SQLite-Bibliothek enthält. Ich habe die neueste Version von pysqlite, änderte es die setup.cfg nach Ihrem Vorschlag und dann versucht, 'setup.py build_static install' zu laufen (wie von dem pysqlite readme angewiesen), und ich erhalte die folgende Ausgabe:

 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 
Hans

+0

Soweit ich weiß, ist dies vcvarsall.bat Teil von Microsoft Visual Studio. Ich besitze diese Software nicht und habe keine Erfahrung damit jetzt suche ich nach vorkompilierten Versionen von Sqlite, die die rtree Erweiterung enthalten haben. Wenn Sie eine solche Datei hvae haben oder Hilfe bei der Suche geben können, wird es sehr zu schätzen wissen. – Hans

+0

Hallo Hans, ja ich denke das Pysqlite Setup versucht sqlite3 zu kompilieren ... und es muss Visual Studio benötigt werden. Ich habe eine Windows-Maschine in einer Weile nicht benutzt, also kann ich Ihnen wirklich in dieser Hinsicht nicht helfen. Ich schaffte es, spatialite + geodjango-Setup auf Ubuntu ganz einfach (viel einfacher als auf einem Mac) zu bekommen – ismail

1

Dank für den Hinweis Issy ich in die richtige Richtung.

Das Problem war in der Tat, dass pysqlite eine sqlite-Binärdatei erstellte, die die R * TREE-Erweiterung nicht aktiviert hatte.

Ich kontaktierte die Entwickler von Pysqlite (siehe link text), die sehr schnell darauf antworteten, dass ab Version 2.5.6 "Future Windows-Binärdateien und Kompilationen mit --build-static standardmäßig RTree-Unterstützung haben. "

Problem gelöst. Danke allen.