KML in Shapefile konvertieren, ohne Attribute mit QGIS zu verlieren?

29

Ich habe eine KML-Datei mit Hunderten von Punkten. Zu jedem Punkt gibt es Informationen wie Name, Leistung, Alter (es ist eine Karte von Wasserkraftwerken). Wenn ich diese KML-Datei in QGIS importiere, gehen diese Informationen verloren.

Gibt es eine Möglichkeit, diese Informationen aufzubewahren?

Die Informationen sehen folgendermaßen aus:

<ExtendedData>
 <SchemaData schemaUrl="#vorlage">
  <SimpleData name="Name">Test</SimpleData>
  <SimpleData name="Power">10895</SimpleData>
  <SimpleData name="Location">L</SimpleData>
 </SchemaData>
</ExtendedData>

Stimmt etwas mit meinem Code nicht?

Felix
quelle
1
Wie importieren Sie die .kmlin QGIS? Dieses Format wird als eines der Grundformate unterstützt, sodass das Hinzufügen einer kmlDatei als Ebene relativ einfach sein sollte . Wenn Sie weitere Details angeben, kann möglicherweise jemand helfen, den Fehler zu ermitteln. Auch Informationen zur Quelle der Datei können hilfreich sein.
Holen Sie sich Spatial
1
Hast du einen Live-Link zum kml?
Mapperz
Ich denke, es wäre über FME möglich, oder wenn Sie ein wenig Abenteuer verspüren, könnten Sie ein Python-Skript schreiben, das das kml (xml!) Analysiert und in ein Shapefile exportiert. (Zu verwendende Bibliotheken: Python-Shapefile-Bibliothek, beliebiges XML aus Python)
U2ros
2
RK Ja, ich habe das gesehen. Ich habe mich jedoch entschlossen, eine neue Frage mit einer besseren Beschreibung des Problems zu stellen, da es keine zufriedenstellende Lösung dafür gibt. Auch nach einem weiteren Versuch kann das Problem sein, dass die KML-Dateien der Feuchtgebiete nicht gültig sind, wenn sie im Online-KML-Validator getestet wurden und viele Fehler aufweisen ...
Miro
1
U2ros Ich habe online FME ohne Erfolg versucht. Vielleicht die Desktop-FME, die ich in der nächsten "Installationsrunde" ausprobieren kann ... Ich bin definitiv nicht abenteuerlustig genug, um ein Skript zu programmieren, das kml in shp konvertiert :-). Aber im schlimmsten Fall kann ich mir vorstellen, ein Skript zu schreiben, das KML durchläuft, "ExtendedData" für jedes Feature findet und eine Tabelle / csv erstellt, die ich durch "name" mit konvertiertem KML in QGIS / ArcGIS / Mapinfo verbinden kann ...
Miro

Antworten:

15

Die ExtendedData hat keine korrekten "Name" -Werte.

Beispielsweise

<Data><displayName>System</displayName><value>Riverine</value></Data>

wird von GDAL und Qgis Master nicht importiert, während

<Data name="System"><displayName>System</displayName><value>Riverine</value></Data>

wird importiert.

Das können Sie mit einem guten Texteditor ändern.

------------------- Hinzugefügt von Miro ---------------------

Für die KML-Bearbeitung wird ein Texteditor benötigt, der "Reguläre Ausdrücke" in Ersetzungsfunktionen wie PSPad (oder Notepad ++ und vielen anderen freien Texteditoren) ermöglicht.

Finden: <Data><displayName>(.*)</displayName>

Ersetzen: <Data name="$1"><displayName>$1</displayName>

Verwenden Sie danach einfach QGIS (der Schlüssel ist "neue" Version - enthalten ab GDAL Version 1.9.2) und "Vektorebene hinzufügen" und die Ebene wird mit allen "ExtendedData" geladen.

AndreJ
quelle
Vielen Dank, das war die Schlüsselinformation. Ich habe versucht, es in einer Testdatei zu ersetzen, und es hat perfekt funktioniert. Alle "ExtendedData" sind jetzt als Spalten in der Tabelle. Nochmals vielen Dank.
Miro
3
Tatsächlich wird DisplayName von Qgis nicht verwendet. Daher kann das Ersetzen ohne RegExp erfolgen, indem <Data> <DisplayName> durch <Data name = "und </ DisplayName> durch"> ersetzt werden.
AndreJ
1
Meine KML-Datei enthielt auch ein Tag <SchemaData>, das ich kommentieren musste, um es in QGIS zu öffnen. Aber sonst hat der Trick perfekt geklappt!
Djana
8

Ich habe eine der Wetlandfiles mit Globalmapper in Shape konvertiert: Anbei zwei Screenshots von konvertierten DBF-Dateien (Flächen und Linien): Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

hoffentlich ist das was du willst ..

Kurt
quelle
Danke, ja das ist genau das, was ich brauche. Gut zu wissen, dass es Software gibt, die diese KML-Dateien verarbeiten kann, die nicht dem KML-Standard entsprechen. Da es bereits eine andere Antwort gibt, wie man es mit kostenlosem QGIS macht, werde ich Global Mapper nicht ausprobieren, aber es kann definitiv jemand anderem helfen. Danke nochmal.
Miro
Wirklich ein fantastischer Konverter, cool !!
Islam
6

Sie können die Global Mapper-Software verwenden, mit der Sie problemlos kml / kmz-Dateien exportieren / importieren und Daten sowie viele Vektor- und Rasterformate anhängen können. Sie ist eine der besten Software.

http://www.bluemarblegeo.com/global-mapper/product/formats.php

Sunil
quelle
Danke für den Tipp. Ich glaube, es kann kml / kmz-Dateien importieren / exportieren, aber ich habe bereits mehr als 5 Apps ausprobiert, die das können. Und keiner von ihnen kann Attribute lesen ("ExtendedData"). Kann Global Mapper das auch?
Miro
5

Es scheint, dass Googles libkml unter Ubuntu nicht mit GDAL 1.9.2 ausgeliefert wird, insbesondere mit gdal-bin 1.9.2-2 ~ exact4:

$ ogrinfo --formats | grep -i kml
  -> "KML" (read/write)

Um eine Version zu bekommen, die mit libkml und ExtendedDataSupport funktioniert , musste ich GDAL aus svn trunk (r25473) erstellen, nachdem ich libkml aus svn trunk (r864) erstellt hatte, wobei ich feststellte, dass die Version 1.2.0 anscheinend nicht ausreicht, wie auf der GDAL-Website dokumentiert . libkml0Beachten Sie, dass die Installation unter Ubuntu Precise (derzeit 1.2.0-1ubuntu6) nicht hilft. Du brauchst wirklich 1.3 oder svn trunk, für die ich kein PPA finden konnte.

Ich war letztendlich nicht in der Lage, libkml auf Ubuntu präzise zu erstellen. Die mitgelieferte Boost-Version enthält Tippfehler, und es gibt Fehler beim Ausführen von libtool, da die Abhängigkeiten nicht in Ordnung sind. Aus irgendeinem Grund war dies kein Problem bei Debian Squeeze, wo es mir gelungen ist:

$ ogrinfo --formats | grep -i kml
  -> "LIBKML" (read/write)
  -> "KML" (read/write)

Sobald ich damit ogr2ogr -f "ESRI Shapefile" foo.shp foo.kmlfertig war , gab mir das Laufen ein Shapefile, das QGIS importieren konnte, wobei die ExtendedDataAttribute erhalten blieben .

HorsePunchKid
quelle
5

Der von Qgis 1.8.0 Lisboa verwendete Ogr2ogr kml-Treiber unterstützt keine kml ExtendedData-Tags.

Der LIBKML-Treiber ist in GDAL ab Version 1.9.2, OSGEO4W-Paketen, MS4W und Qgis Master enthalten.

Ihre Daten sind nicht falsch, aber der LIBKML-Treiber in OSGeo4W hatte einige Probleme mit SchemaData. Alternativ funktioniert folgendes:

<ExtendedData>
 <Data name="Name"><value>Test</value></Data> 
 <Data name="Power"><value>10895</value></Data>
 <Data name="Location"><value>L</value></Data> 
</ExtendedData>

BEARBEITEN: Der SchemaData-Fehler wurde im GDAL 1.9.2-2-Paket von OSGEO4W behoben.

AndreJ
quelle
4

Verwenden von FME 2012 (SP4)

Laden Sie den Reader KML

Wählen Sie einen Writer (Shapefile)

Verbinden Sie die Elemente und wählen Sie sie beim Schreiben aus ( Kopieren von Attributen aus Feature-Typen ).

Führen Sie den Arbeitsbereich aus

Bildbeschreibung hier eingeben

Mapperz
quelle
Vielen Dank, ich habe die Datei fme_install.msi heruntergeladen, aber bei der Installation ist ein Fehler aufgetreten. Da es bereits eine andere funktionierende Lösung für diese Frage gibt, werde ich nicht so weitermachen. Trotzdem nochmals vielen Dank.
Miro
1

Ich weiß nicht, dass Sie das mit QGIS erreichen können. MapWindow hat jedoch ein KML2Shapefile- Plugin.

KML2Shapefile ist ein Plugin für MapWindow GIS, das Google Earth-KML- und -KMZ-Dateien in Shapefiles für die Verwendung in einem GIS konvertiert.

KML2Shapefile teilt jeden KML-Geometrietyp in ein separates Shapefile auf. Es unterstützt komplexe Geometrien und kann einen Großteil der KML als Attributdaten darstellen.

MapWindow ist übrigens auch ein kostenloses Open-Source-GIS-Paket. Sie können es kostenlos herunterladen und installieren. Sie können die KML-Datei mit dem KML2Shapefile-Plugin in MapWindow in eine Shapefile-Datei konvertieren und die resultierende Shapefile-Datei einfach in QGIS laden. Vorausgesetzt, Sie arbeiten sowieso unter Windows.

Die beste Lösung, die mir derzeit einfällt. Ich hoffe, jemand kennt ein Plugin, um es in QGIS zu tun.

RK
quelle
1
Danke für Ihre Hilfe. Ich habe das versucht, aber die Daten gehen trotzdem verloren. Die Informationen sehen folgendermaßen aus: <ExtendedData> <SchemaData schemaUrl = "# vorlage"> <SimpleData name = "Name"> Test </ SimpleData> <SimpleData name = "Power"> 10895 </ SimpleData> <SimpleData name = "Location"> L </ SimpleData> </ SchemaData> </ ExtendedData> Stimmt etwas mit meinem Code nicht?
Felix
Oh, tut mir leid. Ich hatte gehofft, dass es klappen würde.
RK
1
@Felix - Die Informationen, die Sie in Ihrem Kommentar angegeben haben, sind wirklich nützlich. Ich würde empfehlen, Ihre Frage zu bearbeiten und dort für zusätzlichen Kontext und Klarheit hinzuzufügen.
Holen Sie sich Spatial
@AndreJoost - Klingt so, als hätten Sie eine gute Antwort gefunden. Es lohnt sich, es als tatsächliche Antwort hinzuzufügen, damit es in den Suchergebnissen aller anderen Personen mit demselben Problem angezeigt wird.
Holen Sie sich Spatial
1

Holen Sie sich Global Mapper. Alles, was Sie tun müssen, ist KMZ oder KML zu importieren und anschließend Vector IMG (ESRI SHP File) zu exportieren. Global Mapper kann die meisten Dateitypen lesen. Öffnen Sie dann die Form in ARC, Global Mapper, Manifold, QGIS, ect und zeigen Sie die Attributtabelle an. Alle Infos werden da sein. Sie können an dieser Stelle auch die DBF-Datei aus dem SHP mit Microsoft Excel öffnen und dann bei Bedarf als XLXS-Dateierweiterung speichern.

Ron Paul
quelle
1

In QGIS 3.2.0 kann die Konvertierung einfach über die Toolbox vorgenommen werden.

Wählen Sie in der Toolbox -> GDAL -> Vektorkonvertierung -> Format konvertieren ....

KML-Datei auswählen, als SHP-Datei speichern. Ich musste auch die Resulkting-Datei ("Converted") in den Eigenschaften -> Source (Tab) -> Source Coding von "UTF-8" auf "Windows-1258" ändern, um die spanischen Zeichen richtig zu sehen.

Andres Bodini
quelle