AutoCAD Map 3D / Civil 3D - Ausgabe von SQLite und FileGDB

Im Rahmen des Produktsupports wurde die Frage an uns herangetragen, weshalb die aus AutoCAD Map 3D exportierten SQLite-Dateien in anderen GIS-Systemen nur unvollständig angezeigt würden.

In diesem LineLetter erfahren Sie den Unterschied zwischen ESRI Shape und SQLite sowie zwischen den unterschiedlichen Varianten von SQLite im Austausch von Geodaten und wie Sie erfolgreich lineare und flächenhafte Geometrien mit Bogensegmenten für andere GIS-Systeme bereitstellen.


Die Ausgangssituation


Ein Planungsbüro erbat von der beauftragenden Stadt als Grundlage für die Erarbeitung des Flächennutzungsplans die Angaben zur Flächennutzung aus dem Liegenschaftskataster (ALKIS). Die Stadt verwendet dabei das ALKIS-Paket der Mensch und Maschine, welches in der Oracle-datenbankbasierten Fachschale alle Objektklassen der Flächennutzung über das gesamte Stadtgebiet in einer Ansicht V_NUTZUNG zusammenführt. Diese Ansicht enthält nur wenige Datenfelder: die Geometrie, den Namen der Quellobjektklasse und die ID des Vegetationsmerkmals von landwirtschaftlichen Flächen.

Dem Wunsch der Datenausgabe wurde derart entsprochen, dass zum einen ein Bildaufbau aus der Fachschale als AutoCAD-Zeichnung abgespeichert wurde …

… und zum anderen für die Verarbeitung im Desktop-GIS als SQLite exportiert wurde…


Dabei stellte sich heraus, dass in den beiden Desktop-GIS QGIS und ArcGIS nicht alle Flächen der SQLite-Datei angezeigt wurden, wie sie hingegen in der AutoCAD-Zeichnung enthalten waren. Mehr noch: wurde die SQLite als Datenquelle in AutoCAD Map 3D eingebunden, waren auch diejenigen Flächen sichtbar, die in QGIS oder ArcGIS scheinbar fehlten.

Darstellung in QGIS:

Gleicher Ausschnitt in AutoCAD Map 3D:


Ausgabe als ESRI Shape


Alternativ zur Ausgabe als SQLite kann man die Flächen auch als ESRI Shape ausgeben. Dazu stellt man eine Shape-Verbindung zu einem (idealerweise leeren) Ordner her …

… stellt das Koordinatensystem ein …

… startet in der Registerkarte Karten-Explorer des Map-Aufgabenfensters im Menü Extras die Massenkopie. Dabei werden nur die zu exportierende Objektklasse und darunter die gewünschten Felder aktiviert. Da im ESRI Shape bedingt durch das dBase-Format für die Sachdatenattribute maximal 11 Zeichen für den Spaltenbezeichner und diese ohne Sonderzeichen zulässig sind, müssen noch die Feldbezeichner umbenannt werden.


Das auf diesem Wege exportierte ESRI Shape-Thema war nun auch im QGIS vollständig. Doch weshalb genau? Was ist der Unterschied zwischen dem SQLite und dem ESRI Shape, wenn beides aus AutoCAD Map 3D aus derselben Quelle exportiert wurde?


Den Unterschied können Sie bereits im AutoCAD Map 3D sehen: exportieren Sie auf den beiden vorgenannten Wegen Polygone mit Bogensegmenten einmal ins SQLite und einmal nach ESRI Shape und laden hernach beide Datenquellen in AutoCAD Map 3D wieder ein, erkennen Sie, dass beim Export nach ESRI Shape die Bogensegmente in sehr viele, sehr kurze Liniensegmente aufgelöst werden.


Original in Oracle bzw. SQLite:


Nach dem Export nach ESRI Shape:


ESRI Shape wird als absolut kleinster gemeinsamer Nenner zwar von vielen Desktop-GIS gelesen und geschrieben, ist im Austausch von Geodaten aber immer mit Einschränkungen bei der Datenübertragung verbunden:

  • Bögen werden in Liniensegmente aufgelöst,
  • Es werden nur die von dBase III unterstützten Datentypen akzeptiert, wobei max. 11 alphanumerische Zeichen zulässig sind,
  • Komplexe Datenmodelle über verschiedene Tabellen müssen in einzelne Themen aufgelöst werden,
  • Pro Thema ist nur eine Geometrieart zulässig, Objektklassen mit variablen Geometrien müssen in einzelne Themen exportiert werden (Punkt, Linie, Fläche).


SQLite ist nicht gleich SQLite

Die aus unserer Sicht bessere Alternative ist – eigentlich – das SQLite. Weshalb eigentlich? SQLite-Datenbanken werden mit einer gemeinfreien, quelloffenen Programmbibliothek erzeugt und verwaltet, die ein dateibasiertes, relationales Datenbanksystem enthält. Sie unterstützt weitestgehend die im SQL-92-Standard festgelegten SQL-Sprachbefehle und findet plattformübergreifend auf Desktop- und mobilen Endgeräten weite Verbreitung. In einer SQLite-Datei können Tabellen, Ansichten (Views), Ereignisse (Trigger) und Indizes enthalten sein und lassen sich durch zusätzliche Extensions erweitern.


Allerdings fehlt dem nativen Standard ein Datentyp für die Speicherung und Abfrage von räumlichen Daten (Geometrien), so dass sich zwischenzeitlich verschiedene Spezifikationen dafür etabliert haben.

  • OGR SQLite – Die Geometrien werden im WKT (Well-Known-Text) oder WKB (Well-Known-Binary)-Format gespeichert (libsqlite3).


  • SpatialLite – Die Geometrien werden im WKB-(Well-Known-Binary)-Format mit einer alternativen Bibliothek gespeichert (libspatialite).


  • FDO SQLite – Erweiterung des ursprünglichen WKB-Formats für weitere Geometrietypen durch die von Autodesk veröffentlichte FDO-Technologie.


  • GeoPackage (geopkg) – an SpatialLite angelehnt, jedoch mit speziellen Regeln zum Speichern von Vektoren, Rastern und Tiles (Kacheln). Anders als SpatialLite ist es ein vom OGC definierter Standard (OGC GeoPackage Encoding Standard).


  • MBTiles – SQLite-Datenbank zur Bereitstellung von Rasterbildern für verschiedene Zoomstufen

Genaugenommen basieren die vorgenannten Varianten zwar allesamt auf der SQLite-Datenbank-Technologie. Die Art der Speicherung der Geometrien und der Verwaltung der Metadaten zu den Objektklassen verdeutlicht aber, dass diese dennoch inkompatibel zueinander sind. Bevor man also ein SQLite-Format exportiert, ist sicherzustellen, für welches System sie später verwendet werden sollen:

  • für Software-Systeme, die die FDO-Technologie verwenden (wie MapGuide OpenSource, AutoCAD Map 3D oder Civil 3D, Infraworks oder MuM MapEdit), erzeugen Sie SQLite mit der FDO-Bibliothek.
  • für Software-Systeme, die die GDAL/OGR-Technologie verwenden (wie QGIS, ArcGIS, MapServer), erzeugen Sie ein SpatialLite oder GeoPackage.


Export mit Hilfe von OGR2OGR


Doch wie erzeugen Sie ein SpatialLite oder GeoPackage? Anders als QGIS oder MapServer, die die GDAL/OGR-Bibliotheken selbst verwenden, unterstützen AutoCAD Map 3D und Civil 3D diese Formate nicht. Deshalb können Sie das nicht innerhalb der Autodesk-Produkt-Familie realisieren. Sicher können Sie zunächst ein QGIS installieren, die Verbindung zur Oracle-Datenbank herstellen und anschließend die sichtbaren Objekte als beispielsweise GeoPackage exportieren. Andererseits genügt es, die freien GDAL/OGR-Bibliotheken herunterzuladen und mit Kommandozeilenbefehlen den Export zu starten:

  • Laden Sie von Gisinternals den aktuellen Stand der GDAL/OGR-Bibliotheken herunter und entpacken sie auf dem lokalen Arbeitsplatz, z.B. nach c:\app\MapServer. Eine Installationsroutine ist dafür nicht erforderlich. Wir bevorzugen an dieser Stelle das Komplettpaket des MapServers (https://www.gisinternals.com/stable.php).
  • Öffnen Sie die MS-DOS-Eingabeaufforderung und richten Sie ein paar Systemvariablen ein. Das können Sie später in einem BatchSkript automatisieren.

set SDK_ROOT=C:\app\MapServer8\

SET PATH=%SDK_ROOT%bin;%SDK_ROOT%bin\gdal\python\osgeo;%SDK_ROOT%bin\proj9\apps;%SDK_ROOT%bin\gdal\apps;%SDK_ROOT%bin\ms\apps;%SDK_ROOT%bin\gdal\csharp;%SDK_ROOT%bin\ms\csharp;%SDK_ROOT%bin\ms\java;%SDK_ROOT%bin\curl;%PATH%

SET GDAL_DATA=%SDK_ROOT%bin\gdal-data

SET GDAL_DRIVER_PATH=%SDK_ROOT%bin\gdal\plugins

SET PYTHONPATH=%SDK_ROOT%bin\gdal\python;%SDK_ROOT%bin\ms\python

SET PROJ_LIB=%SDK_ROOT%bin\proj9\SHARE

SET NLS_LANG=AMERICAN_AMERICA.UTF8

ogr2ogr -f GPKG -overwrite nutzung.gpkg oci:gf_alkis/avs@support:v_nutzung -a_srs EPSG:25832 -nlt Polygon -nln nutzung -sql "select * from v_nutzung where geom is not null"


Dabei haben die Schalter folgende Bedeutung:

-f GPKG -overwrite nutzung.gpkg = erzeugt eine neue nutzung.gpkg und überschreibt ggf. eine bestehende

oci:gf_alkis/avs@support:v_nutzung = stellt eine Verbindung zur Oracle-Datenbank und der entsprechenden Quell-Tabelle her

-a_srs EPSG:25832 = weist ein Zielkoordinatensystem zu (optional)

-nlt Polygon = weist dem Layer den Geometrietyp Polygon zu (optional)

-nln nutzung = weist dem Layer einen neuen Namen zu (optional)

-sql "…" = fragt die zu exportierenden Datensätze ab (optional)

Weitere Schalter und ihre Bedeutung finden Sie hier: https://gdal.org/programs/ogr2ogr.html


Export einer ArcGIS FGDB


Fühlen Sie sich nicht sicher genug im Umgang mit der GDAL/OGR-Bibliothek, können Sie anstelle von SQLite aus AutoCAD Map 3D heraus auch direkt eine dateibasierte Geodatenquelle von ESRI (FGDB) generieren.

Das FileGeoDataBase ist anders als eine SQLite-Datei ein ganzer Ordner mit einer komplexen Dateistruktur der exportierten Objektklasse. Als wichtigste Voraussetzung für den erfolgreichen Export: in der Objektklasse darf es keinen Datensatz mit einer leeren Geometrie geben, andernfalls bricht der Export ab. Die Objektklasse darf genau einen Geometrietyp haben, Sammlungsobjektklassen als Datenquelle funktionieren demnach nicht.

Den Export starten Sie im Arbeitsbereich Planung und Analyse in der Multifunktionsleiste Start in der Gruppe ArcGIS den Befehl In FGDB exportieren.

Markieren Sie die exportierenden Objektklassen und drücken auf OK.



Geben Sie den Geometrietyp und den neuen Layernamen an und aktivieren die zu exportierenden Felder. Bei Bedarf können Sie die Bezeichnungen ändern. Bei allen Bezeichnungen für Objektklassen/Layern und Datenfeldern dürfen Sie keine Sonderzeichen verwenden.


Nach dem Klick auf OK geben Sie den Namen eines neuen, leeren Ordners an, in dem sofort die Daten gespeichert werden. Der Vorgang kann etwas Zeit in Anspruch nehmen.


AutoCAD Map 3D transformiert die Geometrien während des Exports in eine FileGDB immer ins Koordinatensystem EPSG:4326, also ins Gradnetz der Erde ab.


Viel Spaß beim Ausprobieren!


© 08/2023 Mensch und Maschine acadGraph GmbH. Alle Rechte vorbehalten