Eine mobile Geodatabase (.geodatabase) baut auf einer SQLite-Datenbank auf. Wie ein SQL-Zugriff auf eine mobile Geodatabase Schritt für Schritt durchgeführt wird, wird hier an einem Fallbeispiel erklärt.
SQLite ist ein in sich geschlossenes Datenbank-Dateiformat, das die gesamte Datenbank in einer einzigen Datei auf der Festplatte speichert. Diese einzelne Datei kann bis zu 2 TB Daten enthalten, ist leicht übertragbar, wird plattformübergreifend unterstützt und kann per E-Mail verschickt oder auf ein USB-Gerät geschrieben werden, um einen effizienten Datenaustausch zu ermöglichen. Darüber hinaus können Sie SQL in Software von Drittanbietern verwenden, um auf den Inhalt einer mobilen Geodatabase zuzugreifen. Der Zugriff auf die Daten in einer mobilen Geodatabase über SQL ist nicht lizenzpflichtig, da für die zugrundeliegende Software – SQLite – keine Software-Lizenz erforderlich ist. Im folgenden Blogbeitrag zeige ich Ihnen, wie das geht.
Erstellen einer mobile Geodatabase
Die Verwaltung einer mobilen Geodatabase basierend auf SQLite beschränkt sich auf das Erstellen, Umbenennen, Verschieben oder Löschen. Es gibt kein Benutzermanagement und damit auch keine Authentifizierung oder Autorisierung. Nur eine einzige Person oder Anwendung kann zu gegebener Zeit mit der Datenbank arbeiten.
Im Katalog von ArcGIS Pro kann eine mobile Geodatabase mit folgenden Schritten erstellt werden:
- Klicken Sie mit der rechten Maustaste auf Datenbanken oder auf einen Ordner unter Ordner im Bereich Katalog und klicken Sie auf Neue mobile Geodatabase.
- Navigieren Sie im Dialogfeld Neue mobile Geodatabase zu dem Speicherort, an dem Sie die mobile Geodatabase erstellen möchten, geben Sie einen Namen ein und klicken Sie auf Speichern.
- Eine mobile Geodatabase wird an dem Speicherort erstellt, den Sie ausgewählt haben und wird dem Projekt automatisch unter Datenbanken im Bereich Katalog hinzugefügt.
Nutzen Sie die üblichen Werkzeuge in ArcGIS Pro um Daten (Featureclassen, Tabellen, etc.) in der mobilen Geodatabase anzulegen.
Vorbereitung für den Zugriff mit SQL
Für den Zugriff mit SQL auf eine mobile Geodatabase ist erforderlich, dass für die räumlichen Abfragen die Bibliothek ST_Geometry in die mobile Geodatabase geladen werden muss. Das gelingt mit folgenden Arbeitsschritten:
- Laden Sie von MyEsri im Bereich ArcGIS Pro die Bibliothek für ST_Geometry (SQLite) runter.
- Entpacken Sie die zip-Datei und speichern Sie die Datei stgeometry_sqlite.dll an einem Ort, auf den die mobile Geodatabase und der SQL-Editor, über den Sie die Erweiterung laden, zugreifen können (in meinem Beispiel unter C:\bin\SQLite).
Um die Datei zu laden, wird ein SQL-Editor benötigt, mit dem man sich mit einer SQLite-Datenbank verbinden kann. In diesem Blog verwende ich den DB Browser for SQLite Version 3.12.2.
- Starten Sie den SQL-Editor und verbinden Sie sich mit der mobilen Geodatabase.
- Erlauben Sie in den Einstellungen das Laden von Erweiterungen mit SQL.
- Führen Sie als Erstes folgendes SQL Statement aus, um die Erweiterung ST_Geometry zu laden.
- Führen Sie als Zweites die Funktion CreateOGCTables() aus.
Sie können jetzt ST_Geometry Funktionen in SQL-Anweisungen verwenden, die von einem SQL-Client ausgeführt werden, um auf die räumliche Daten in einer mobilen Geodatabase zuzugreifen.
Zugriff mit SQL
Für eine SQLite-Datenbank, auf die mit SQL zugegriffen wird, wird ein logischer Datenbankname verwendet. Wenn SQL für den Zugriff auf eine SQLite-Datenbank verwendet wird, ist die Datenbank mit dem Namen “main” für die primäre Datenbank reserviert und wird unabhängig vom physischen Datenbankdateinamen verwendet. Ein qualifizierter Tabellenname in SQLite heißt main.<Tabellenname>, ein qualifizierter Spaltenname in SQLite hat das Format <Tabellenname>.<Spaltenname> oder <Datenbankname>.< Tabellenname >.<Spaltenname>.
In meinem Beispiel habe ich folgende Featureclassen in die mobile Geodatabase geladen:
main.bonn_bäume_ost – Baumstandorte auf der rechten Rhein-Seite
main.AreaOfInterest – eine Fläche auf der rechten Rhein-Seite
Ich möchte mit SQL alle Bäume innerhalb der Fläche von AreaOfInterest ermitteln, wie hier in ArcGIS Pro abgebildet.
Dazu führe ich folgendes SQL-Statement in meinem SQL-Editor aus, mit dem ich mit der Datenbank verbunden bin:
Eine Liste aller verfügbarer ST_Geometry-Funktionen mit Beispielen für SQLite finden Sie in dieser PDF.