../../_images/logo_spatialite.png

SpatiaLite Quickstart

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 und wie einfache SQL Abfragen ausgeführt werden können.

Erstellen Sie eine neue Datenbank mit spatialite-gui

Spatialite-gui stellt eine grafische Oberfläche zur Anzeige und Verwaltung von SpaltiaLite Datenbanken zur Verfügung. Sie können damit 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
  • Wählen Sie File->Connecting an existing SQLite DB

  • Klicken Sie Browse und gehen Sie in das Verzeichnis /home/user/data/spatialite/ und wählen Sie trento.sqlite.

    ../../_images/spatialite-gui-trento.png
  • Klicken Sie mit der rechten Maustaste auf die Tabelle MunicpalHallsView und wählen Sie „Show Columns“

    ../../_images/spatialite-gui-columns.png
  • Sie sehen eine in 3 Bereiche aufgeteilte Ansicht:

    1. Der linke Bereich zeigt die Databank Hierachie an, beispielsweise die Liste der Tabellen und Spalten innerhalb der Tabellen. Klicken Sie auf Elemente des linken Bereichs und wählen anschließend aus einer Liste von gängigen Datenbank Aktionen.
    2. Der Bereich oben rechts zeigt das SQL für die ausgewählte Aktion. Sie können hier ihr eigenes SQL eingeben oder das SQL anpassen.
    3. Der untere rechte Bereich zeigt das Ergebnis der SQL Abfrage.
  • 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

    ../../_images/spatialite-gui-select.png

spatialite auf der Kommandozeile ausführen

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.

  • ür das Arbeiten auf der Konsole benötigen Sie ein Terminal. Öffnen Sie ein Terminal über LXDE Menu -> Zubehör -> LXTerminal.

  • Öffnen Sie die Beispiel-Datenbank im Terminal über spatialite:

    spatialite /home/user/data/spatialite/trento.sqlite
    
  • Hilfreiche Befehle im CLI Interface:

    .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 den 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 3358
      
    • Beachten 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 St
      
    • Abschließ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
      

Weitere Aufgaben

Hier sind einige zusätzliche Herausforderungen für Sie zum Ausprobieren:

  • Überprüfen Sie Geometrien mit spatialite-gui
  • Öffnen und bearbeiten Sie SpatiaLite Layer in QGIS

Wie geht es weiter?

Wenn Sie mehr über SpatiaLite erfahren möchten, ist die SpatiaLite Projektseite Seite ein guter Ausgangspunkt.

und besuchen Sie unbedingt das Tutorial Spatialite cookbook