SpatiaLite ist eine SQLite-Datenbank-Engine mit zusätzlichen räumlichen Funktionen.
SQLite ist ein Datenbankmanagement System (DBMS), das einfach, robust, leicht zu handhaben und sehr leichtgewichtg ist. Jede SQLite Datenbank ist eine einfache Datei. Sie können diese kopieren, komprimieren und nach Windows, Linux, MacOs u.a. portieren.
Dieser Quickstart beschreibt, wie man eine Datenbank mit der graphischen Anwendung oder mit Hilfe der Kommandozeile öffnet.
Spatialite-gui stellt eine grafische Oberfläche zur Anzeige und Verwaltung von SpaltiaLite Datenbanken. Sie können einfach die Struktur der Tabellen und die Daten über Funktionen anzeigen lassen. Darüberhinaus können Sie auch eigene SQL Abfragen absetzen.
Auf geht’s! Wir wollen damit beginnen, eine SpaltiaLite Datenbank anzuschauen und wollen einen Blick auf die Spalten einer Tabelle werfen.
Starten Sie Spatialite GUI über Geospatial->Databases->Spatialite GUI
Klicken Sie Browse und gehen Sie in das Verzeichnis /home/user/data/spatialite/ und wählen Sie trento.sqlite.
Klicken Sie mit der rechten Maustaste auf die Tabelle MunicpalHallsView und wählen Sie “Show Columns”
Sie sehen eine in 3 Bereiche aufgeteilte Ansicht:
Klicken Sie mit der rechten Maustaste auf die Tabelle MunicipalHalls und wählen Sie “Edit table rows”. Beachten Sie, dass die SQL Abfrage für Sie im oberen rechten Bereich generiert wurde und dass die Ergebnisse im unteren rechten Bereich erscheinen.:
SELECT ROWID, "PK_UID", "AREA", "PERIMETER", "COMU", "Geometry"
FROM "MunicipalHalls"
ORDER BY ROWID
Passen Sie nun diese SQL-Abfrage an, so dass NOME und (Lat,Long) nur für die NOME_PROV mit dem Eintrag “BRESCIA” unter Verwendung des MunicipalHallsViews ausgegeben werden. Geben Sie folgenden Befehl im oberen SQL-Fenster ein:
SELECT NOME, X(Geometry) AS Longitude, Y(Geometry) AS Latitude
FROM "MunicipalHallsView"
WHERE NOME_PROV LIKE "BRESCIA";
und klicken anschließend zum Ausführen den Button "Execute SQL" auf der rechten Seite
Spatialite-gis ist ein einfacher Viewer für SpatiaLite basierte Ebenen.
Sie sollten eine eine Karte mit Provinzen in Italien sehen.
- Rechter Klick auf den Layer Highways und wählen Sie Hide
- Rechter Klick auf den Layer LocalCouncilsTrento und wählen Sie Layer Configuration->Classify und wählen Sie hier “Shape Area-” für diese Spalte.Wählen Sie 4 Klassen und klicken Sie auf Min und Max der Farbauswahl und wählen eine dunkle und eine helle Farbe. Klicken Sie ok und schauen Sie sich die Choroplethenkarte der Provinzflächen an.
- Verändern Sie die Umrandungsfarbe über einen Rechtsklick auf LocalCouncils und wählen Sie Layer configuration->Graphics und wählen Sie hier andere Farbe.
- Zoomen Sie etwas in die Karte. Rechter Klick auf den Layer PopulatedPlaces und wählen Sie Indentify on. Klicken Sie nun auf einen Ort und lassen sich die Attribute für ein einzelnes Objekt ausgeben.
Anwender die skriptbasiert arbeiten müssen oder automatisierte Abfragen absetzen wollen, werden die Vorteile SpaltiaLite Datenbanken kommandozeielnbasiert anzusprechen kennenlernen. In diesem Beispiel werden wir eine Shapedatei laden und nach Schulen in der Nähe des Highways 42 suchen.
Für das Arbeiten auf der Konsole benötigen Sie ein Terminal. Öffnen Sie ein Terminal über Applications -> Accessories -> Terminal Emulator.
Öffnen Sie die Beispiel-Datenbank im Terminal über spatialite:
spatialite /home/user/data/spatialite/trento.sqlite
.help .tables .quit
Erzeugen einer neuen spatialite Datenbank und Laden von Shapedateien
Erzeugen Sie eine neue, leere spatialite Datenbank und laden Sie zwei Shapedateien von der Nord Carolina Daten:
user@osgeo-6:~$ spatialite test.sqlite SpatiaLite version ..: 3.1.0-RC2 Supported Extensions: - 'VirtualShape' [direct Shapefile access] - 'VirtualDbf' [direct DBF access] - 'VirtualXL' [direct XLS access] - 'VirtualText' [direct CSV/TXT access] - 'VirtualNetwork' [Dijkstra shortest path] - 'RTree' [Spatial Index - R*Tree] - 'MbrCache' [Spatial Index - MBR cache] - 'VirtualSpatialIndex' [R*Tree metahandler] - 'VirtualFDO' [FDO-OGR interoperability] - 'SpatiaLite' [Spatial SQL - OGC] PROJ.4 version ......: Rel. 4.8.0, 6 March 2012 GEOS version ........: 3.3.3-CAPI-1.7.4 SQLite version ......: 3.7.9 Enter ".help" for instructions spatialite> spatialite> .loadshp data/north_carolina/shape/schools_wake schools utf-8 3358 spatialite> .loadshp data/north_carolina/shape/roadsmajor roads utf-8 3358Beachten Sie das Format des .loadshp Aufrufs: zuerst die Shapedatei ohne die .shp Erweiterung, dann der Name der neuen spatialite Tabelle, dann das Encoding und abschließend der EPSG Code des CRS der Shapedatei.
Nun können Sie die Schulen in der Nähe des Highways 42 ausgeben.:
spatialite> SELECT s.NAMESHORT, s.ADDRNUMBER, s.ADDRROOT ...> FROM schools AS s, roads AS r ...> WHERE r.ROAD_NAME = "NC-42" AND ...> ST_Distance(s.Geometry, r.Geometry) < 1000; FUQUAY-VARINA|6600|Johnson Pond Rd WILLOW SPRINGS|6800|Dwight Rowland Rd FUQUAY-VARINA|109|N Ennis St LINCOLN HEIGHTS|307|Bridge StAbschließend wollen wir das Ergebnis der Abfrage kommasepariert in die Textdatei “schools_rt42.txt” ausgeben:
spatialite> .mode csv spatialite> .output "schools_rt42.txt" spatialite> SELECT s.NAMESHORT, s.ADDRNUMBER, s.ADDRROOT ...> FROM schools AS s, roads AS r ...> WHERE r.ROAD_NAME = "NC-42" AND ...> ST_Distance(s.Geometry, r.Geometry) < 1000; spatialite>.q
Hier sind einige zusätzliche Herausforderungen für Sie zum Ausprobieren:
Wenn Sie mehr über SpatiaLite erfahren möchten, ist die SpatiaLite Projektseite Seite ein guter Ausgangspunkt.
und besuchen Sie unbedingt das Tutorial Spatialite cookbook