KML in Shapefile umwandeln: QGIS, ogr2ogr oder online
Um KML in ein Shapefile umzuwandeln, öffnen Sie die KML-Datei in QGIS, klicken mit der rechten Maustaste auf den Layer, wählen Exportieren > Objekte speichern als und dann ESRI Shapefile. Auf der Kommandozeile führen Sie ogr2ogr -f "ESRI Shapefile" mit einem Geometrietyp pro Ausgabe aus. Oder Sie ziehen die .kml-Datei in „KML in Shapefile umwandeln“ von FileReshape: Der Konverter läuft in Ihrem Browser, ohne dass die Datei hochgeladen wird, trennt Punkte, Linien und Polygone und fügt .prj- und .cpg-Dateien hinzu.
Was sich ändert, wenn aus KML ein Shapefile wird
KML, das Format von Google Earth und Google My Maps, und das Shapefile speichern Geodaten auf sehr unterschiedliche Weise, und jede Umwandlungsmethode muss mit denselben Unterschieden umgehen. Wenn Sie sie vorher kennen, erleben Sie beim Ergebnis keine Überraschungen.
Ein Geometrietyp pro Datei. Eine KML-Datei kann Punkte, Linien und Polygone in einem Ordner mischen. Ein Shapefile kann nur einen Geometrietyp enthalten, eine gemischte KML-Datei muss also zu mehreren Shapefiles werden, einem pro Typ.
Kurze Feldnamen. Die .dbf-Attributtabelle erlaubt Feldnamen mit höchstens 10 Zeichen, aus Description wird also Descriptio. Textwerte mit mehr als 254 Zeichen, etwa lange HTML-Beschreibungen, werden abgeschnitten.
Keine Stile. Farben, Linienbreiten und Symbole gehören zu KML, aber nicht zu einem Shapefile, sie gehen also verloren. Wenn die Darstellung wichtig ist, müssen Sie sie in Ihrem GIS-Programm neu anlegen.
Koordinatensystem. KML verwendet immer Längen- und Breitengrade in WGS84. Das Shapefile kann in WGS84 bleiben, mit einer .prj-Datei, die das angibt, oder in ein System wie eine UTM-Zone umprojiziert werden, wenn Sie Strecken und Flächen in Metern brauchen. Ein Shapefile braucht außerdem seine Teile .shp, .shx und .dbf beisammen, und eine .cpg-Datei teilt Programmen die Textkodierung mit.
KML in QGIS in ein Shapefile umwandeln
QGIS ist kostenlos und Open Source und liest KML über GDAL. Es ist die beste Wahl, wenn Sie die Daten außerdem prüfen, bearbeiten, neu gestalten oder umprojizieren möchten. Wenn eine KML-Datei mehrere Ordner oder gemischte Geometrietypen hat, zeigt QGIS unter Umständen einen Dialog, der sie als getrennte Layer auflistet; fügen Sie die benötigten hinzu und exportieren Sie jeden davon.
Im Dialog „Vektorlayer speichern als“ können Sie auch das Koordinatensystem der Ausgabe und die Kodierung festlegen. Wählen Sie UTF-8, damit Namen mit Buchstaben wie é, ø oder ü erhalten bleiben. Wiederholen Sie den Export für jeden Layer, wenn die KML-Datei Punkte, Linien und Polygone enthielt.
- Öffnen Sie QGIS und ziehen Sie die .kml-Datei auf die Karte, oder wählen Sie Layer > Layer hinzufügen > Vektorlayer hinzufügen.
- Klicken Sie im Bedienfeld „Layer“ mit der rechten Maustaste auf den Layer und wählen Sie Exportieren > Objekte speichern als.
- Stellen Sie als Format ESRI Shapefile ein, wählen Sie einen Dateinamen und bei Bedarf ein anderes KBS (Koordinatenbezugssystem).
- Klicken Sie auf „OK“ und prüfen Sie den neuen Shapefile-Layer und seine Attributtabelle.
KML mit ogr2ogr in ein Shapefile umwandeln
ogr2ogr ist der Kommandozeilen-Konverter von GDAL. Verwenden Sie ihn für große Dateien, für die Stapelverarbeitung vieler KML-Dateien und in Skripten. Beginnen Sie mit ogrinfo, um zu sehen, welche Layer die KML-Datei hat; mit den KML-Treibern von GDAL wird jeder KML-Ordner meist als eigener Layer gelesen.
Weil ein Shapefile nur einen Geometrietyp enthält, schreiben Sie jeden Typ in ein eigenes Shapefile. Mit dem besonderen OGR-SQL-Feld OGR_GEOMETRY können Sie per -where oder -sql nach Typ filtern. Die Option -nlt legt den Geometrietyp des Ausgabelayers fest, und -nlt PROMOTE_TO_MULTI ist nützlich, wenn ein Layer einfache und mehrteilige Linien oder Polygone mischt. Wenn Sie das Filtern auslassen, erhält das Shapefile den Typ des ersten Objekts, und Objekte anderer Typen führen zu Fehlern.
Ob ExtendedData-Felder zu Spalten werden, hängt vom KML-Treiber in Ihrem GDAL-Build ab. Der Treiber LIBKML liest sie; welche Treiber Sie haben, prüfen Sie mit ogrinfo --formats. Netzwerklinks, die auf KML auf einem Webserver verweisen, laden Sie am besten zuerst herunter und speichern sie als lokale KML-Datei.
# Die Layer (Ordner) und ihre Geometrietypen auflisten
ogrinfo -so -al places.kml
# Ein Shapefile pro Geometrietyp
ogr2ogr -f "ESRI Shapefile" places_points.shp places.kml -where "OGR_GEOMETRY='POINT' OR OGR_GEOMETRY='MULTIPOINT'" -explodecollections -nlt POINT -lco ENCODING=UTF-8
ogr2ogr -f "ESRI Shapefile" places_lines.shp places.kml -where "OGR_GEOMETRY='LINESTRING' OR OGR_GEOMETRY='MULTILINESTRING'" -nlt PROMOTE_TO_MULTI -lco ENCODING=UTF-8
ogr2ogr -f "ESRI Shapefile" places_polygons.shp places.kml -where "OGR_GEOMETRY='POLYGON' OR OGR_GEOMETRY='MULTIPOLYGON'" -nlt PROMOTE_TO_MULTI -lco ENCODING=UTF-8
# Optional: in UTM-Zone 33N umprojizieren, statt WGS84 zu behalten
ogr2ogr -f "ESRI Shapefile" -t_srs EPSG:32633 places_utm.shp places_points.shpKML online mit FileReshape in ein Shapefile umwandeln
„KML in Shapefile umwandeln“ von FileReshape erledigt dieselbe Aufgabe in Ihrem Browser, ohne dass Sie Software installieren müssen. Der Konverter verwendet GDAL, das für das Web kompiliert wurde, und die KML-Datei wird von Ihrer eigenen Festplatte gelesen und nicht hochgeladen; er eignet sich also auch für Kundendaten. Das Ergebnis ist eine .zip-Datei mit .shp-, .shx-, .dbf-, .prj- und .cpg-Dateien für jedes Shapefile.
Der Konverter kümmert sich um die üblichen Probleme. Punkte, Linien und Polygone werden in getrennte Shapefiles geschrieben, zum Beispiel Sights_points.shp und Routes_lines.shp, und jeder KML-Ordner wird zu einem eigenen Shapefile, das nach dem Ordner benannt ist. Feldnamen werden auf 10 Zeichen gekürzt. Standardmäßig bleibt die Ausgabe in WGS84 mit einer .prj-Datei, und Sie können ein anderes System wie eine UTM-Zone wählen. Höhenangaben bleiben in 3D-Shapefiles erhalten. Die Attributtabelle wird als UTF-8 mit passender .cpg-Datei geschrieben.
Kennen Sie seine Grenzen. Farben und Symbole werden nicht übernommen. Name und Beschreibung der Ortsmarkierung bleiben erhalten, aber zusätzliche Felder, die als KML-ExtendedData gespeichert sind, liest die Browser-Version von GDAL nicht. Netzwerklinks, die auf Daten im Web verweisen, werden nicht verfolgt; der Konverter meldet, wie viele er übersprungen hat. Bei einer KMZ-Datei holen Sie die KML zuerst mit „KMZ in KML umwandeln“ heraus. Die Größengrenze ist der Arbeitsspeicher Ihres Browsers, und Dateien bis etwa 200 MB funktionieren normalerweise.
- Öffnen Sie „KML in Shapefile umwandeln“ und ziehen Sie Ihre .kml-Datei in das Feld, oder klicken Sie, um sie auszuwählen.
- Wählen Sie bei Bedarf ein Koordinatensystem für die Ausgabe, zum Beispiel eine UTM-Zone.
- Klicken Sie auf „In Shapefile umwandeln“ und laden Sie die .zip-Datei mit den Shapefiles herunter; entpacken Sie sie und fügen Sie die .shp-Dateien Ihrem GIS hinzu.
Welche Methode sollten Sie wählen?
Verwenden Sie den Browser-Konverter für eine einzelne Datei, wenn Sie nur ein Shapefile zum Weiterschicken oder zum Öffnen in einem anderen Programm brauchen. Verwenden Sie QGIS, wenn Sie das Ergebnis auf einer Karte prüfen, Attribute bearbeiten, die Darstellung neu aufbauen oder ExtendedData-Felder behalten möchten. Verwenden Sie ogr2ogr für sehr große Dateien, zum Umwandeln vieler Dateien auf einmal oder für automatisierte Abläufe. Wenn der Empfänger GeoPackage akzeptiert, ziehen Sie es stattdessen in Betracht: Es kennt keine Grenze von 10 Zeichen für Feldnamen und kann mehrere Layer in einer Datei enthalten.
Häufige Fragen
Warum erhalte ich aus einer KML-Datei mehrere Shapefiles?
Ein Shapefile kann nur einen Geometrietyp speichern. Wenn Ihre KML-Datei Punkte, Linien und Polygone mischt oder mehrere Ordner hat, wird jeder Typ oder Ordner zu einem eigenen Shapefile, damit keine Daten verloren gehen.
Bleiben Farben und Symbole aus Google Earth erhalten?
Nein. Ein Shapefile hat keinen Platz für Stile, Farben, Linienbreiten und Symbole gehen also bei jeder Methode verloren. Gestalten Sie den Layer in QGIS oder Ihrem GIS-Programm neu.
Kann ich eine KMZ-Datei in ein Shapefile umwandeln?
Ja. Eine KMZ-Datei ist eine gezippte KML-Datei. QGIS und ogr2ogr können sie meist direkt lesen. Mit FileReshape verwenden Sie zuerst „KMZ in KML umwandeln“ und wandeln dann die KML-Datei in ein Shapefile um.
Wird meine KML-Datei hochgeladen, wenn ich sie online mit FileReshape umwandle?
Nein. Die Umwandlung läuft in Ihrem Browser, und die Datei bleibt auf Ihrem Computer.
Warum heißt das Feld Description jetzt Descriptio?
Feldnamen in Shapefiles sind durch das .dbf-Format auf 10 Zeichen begrenzt, längere Namen werden also gekürzt. Benennen Sie die Felder vor dem Umwandeln um, oder verwenden Sie GeoPackage, wenn lange Namen wichtig sind.