Convertir KML en fichier de formes sans perdre d'attributs à l'aide de QGIS?

29

J'ai un fichier KML avec des centaines de points. À chaque point, il y a des informations, telles que le nom, la puissance, l'âge (c'est une carte des centrales hydroélectriques). Si j'importe ce fichier KML dans QGIS, ces informations sont perdues.

Existe-t-il un moyen de conserver ces informations?

L'information ressemble à ceci:

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

Y a-t-il un problème avec mon code?

Felix
la source
1
Comment importez-vous le .kmldans QGIS? Ce format est pris en charge comme l'un des formats de base, il devrait donc être relativement simple d'ajouter un kmlfichier en tant que couche. Si vous fournissez plus de détails, quelqu'un pourra peut-être vous aider à comprendre ce qui ne va pas. Des informations sur la source du fichier peuvent également être utiles.
Obtenez Spatial le
1
avez-vous un lien direct vers le kml?
Mapperz
Je pense que ce serait possible via FME, ou si vous vous sentez un peu aventureux, vous pourriez écrire un script python qui analyserait le kml (xml!) Et l'exporterait dans le fichier de formes. (bibliothèques à utiliser: bibliothèque de fichiers de formes python, tout XML de python)
U2ros
2
RK oui j'ai vu celui-là. Bien que j'ai décidé de poser une nouvelle question avec une meilleure description du problème car il n'y a pas de solution satisfaisante. De plus, après un autre cercle d'essais, le problème peut être que les fichiers KML des zones humides ne sont pas valides KML lorsqu'ils sont testés dans le validateur KML en ligne et comportent de nombreuses erreurs ...
Miro
1
U2ros J'ai essayé FME en ligne sans succès. Peut-être que le bureau FME, je peux l'essayer dans le prochain "tour d'installation" ... Je ne me sens vraiment pas assez aventureux pour programmer un script qui convertira kml en shp :-). Mais dans le pire des cas, je peux imaginer écrire un script qui passera par KML, trouver "ExtendedData" pour chaque fonctionnalité et créer une table / csv que je pourrai joindre par "nom" au KML converti dans QGIS / ArcGIS / Mapinfo ...
Miro

Réponses:

15

ExtendedData n'a pas de valeurs de «nom» correctes.

Par exemple

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

n'est pas importé par GDAL et Qgis Master, tandis que

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

est importé.

Vous pouvez changer cela avec un bon éditeur de texte.

------------------- Ajouté par Miro ---------------------

Pour l'édition KML, il est nécessaire d'utiliser un éditeur de texte qui permet "l'expression régulière" dans la fonction de remplacement comme PSPad (ou Notepad ++ et de nombreux autres éditeurs de texte gratuits)

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

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

Après cela, utilisez simplement QGIS (la clé est la "nouvelle" version - inclus la version 1.9.2 de GDAL) et "Ajouter une couche vectorielle" et la couche se chargera avec toutes les "ExtendedData".

AndreJ
la source
Merci, c'était l'information CLÉ. J'ai essayé de le remplacer dans un fichier de test et cela a fonctionné parfaitement. Tous les "ExtendedData" sont maintenant dans le tableau sous forme de colonnes. Encore, merci beaucoup.
Miro
3
En fait, DisplayName n'est pas utilisé par Qgis. Le remplacement peut donc être effectué sans RegExp en remplaçant <Data> <DisplayName> par <Data name = "et en remplaçant </DisplayName> par">.
AndreJ
1
Mon fichier KML contenait également une balise <SchemaData> que je devais commenter pour l'ouvrir dans QGIS. Mais sinon, l'astuce a parfaitement fonctionné!
Djana
8

J'ai converti l'un des fichiers des zones humides avec globalmapper en forme: j'ai joint deux captures d'écran de fichiers dbf convertis (zones et lignes): entrez la description de l'image ici

entrez la description de l'image ici

j'espère que c'est ce que vous voulez ..

Kurt
la source
Merci, oui c'est exactement ce dont j'ai besoin. Bon à savoir, il existe des logiciels qui peuvent gérer ces KML qui ne sont pas conformes aux normes KML. Parce qu'il y a déjà une autre réponse sur la façon de le faire avec QGIS gratuit, je ne vais pas essayer Global Mapper mais cela peut certainement aider quelqu'un d'autre. Merci encore.
Miro
Vraiment un convertisseur fantastique, cool !!
SIslam
6

Vous pouvez utiliser le logiciel Global Mapper dans lequel vous pouvez facilement exporter / importer des fichiers kml / kmz + joindre des données et de nombreux formats vectoriels et raster .. C'est l'un des meilleurs logiciels ..

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

Sunil
la source
Merci pour le conseil. Je crois qu'il peut importer / exporter des fichiers kml / kmz mais j'ai déjà essayé plus de 5 applications qui peuvent le faire. Et aucun d'eux n'est capable de lire les attributs ("ExtendedData"). Alors, Global Mapper peut-il faire cela?
Miro
5

Il semble que la libkml de Google ne soit pas livrée avec GDAL 1.9.2 sur Ubuntu, en particulier gdal-bin 1.9.2-2 ~ precise4:

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

Pour obtenir une version fonctionnant avec libkml et le ExtendedDatasupport, j'ai dû construire GDAL à partir de svn trunk (r25473) après avoir construit libkml à partir de svn trunk (r864), notant spécifiquement que la version 1.2.0 n'est apparemment pas suffisante, comme documenté sur le site GDAL . Attention, l'installation libkml0sur Ubuntu précis (actuellement 1.2.0-1ubuntu6) n'aidera pas. Vous avez vraiment besoin du tronc 1.3 ou svn, pour lequel je n'ai pas pu trouver de PPA.

J'ai finalement été incapable de construire même libkml sur Ubuntu précis; il y a des erreurs de type dans la version de boost qui l'accompagne, et il y a des erreurs en exécutant libtool car les dépendances sont hors service. Pour une raison quelconque, ce n'était pas un problème sur la compression Debian, où j'ai réussi:

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

Une fois que j'ai ogr2ogr -f "ESRI Shapefile" foo.shp foo.kmlcommencé , l'exécution m'a donné un fichier de formes que qgis a pu importer, en préservant les ExtendedDataattributs.

HorsePunchKid
la source
5

Le pilote kml Ogr2ogr utilisé par Qgis 1.8.0 Lisboa ne prend pas en charge les balises kml ExtendedData.

Le pilote LIBKML le fait, il est incorporé dans la version 1.9.2 de GDAL, les packages OSGEO4W, MS4W et Qgis Master.

Vos données ne sont pas fausses, mais le pilote LIBKML dans OSGeo4W a eu quelques problèmes avec SchemaData. Alternativement, les travaux suivants:

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

EDIT: Le bogue SchemaData est maintenant corrigé dans le package GDAL 1.9.2-2 d'OSGEO4W.

AndreJ
la source
4

Utilisation de FME 2012 (SP4)

Charger le Reader KML

Sélectionnez un écrivain (Shapefile)

connecter les éléments et sur la sélection d'écriture ( copier les attributs des types d'entités )

Exécutez l'espace de travail

entrez la description de l'image ici

Mapperz
la source
Merci, j'ai téléchargé le fme_install.msi mais il y a une erreur d'installation et parce qu'il existe déjà une solution de travail différente à cette question, je ne vais pas continuer de cette façon. Quoi qu'il en soit, merci encore.
Miro
1

Je ne sais pas si vous pouvez y parvenir avec QGIS. MapWindow a cependant un plugin KML2Shapefile .

KML2Shapefile est un plugin pour MapWindow GIS qui convertit les fichiers Google Earth KML et KMZ en fichiers de formes à utiliser dans un SIG.

KML2Shapefile divisera chaque type de géométrie KML en un fichier de formes distinct. Il prend en charge des géométries complexes et est capable de présenter une grande partie du KML sous forme de données d'attribut.

MapWindow est également un package SIG gratuit et open source. Vous pouvez le télécharger et l'installer gratuitement. Vous pouvez convertir le fichier KML en fichier de formes à l'aide du plug-in KML2Shapefile dans MapWindow et charger simplement le fichier de forme résultant dans QGIS. En supposant que vous soyez sur Windows de toute façon.

La meilleure solution à laquelle je peux penser pour l'instant. J'espère que quelqu'un connaît un plugin pour le faire dans QGIS.

RK
la source
1
Merci de votre aide. J'ai essayé, mais les données sont toujours perdues. Les informations ressemblent à ceci: <ExtendedData> <SchemaData schemaUrl = "# vorlage"> <SimpleData name = "Name"> Test </SimpleData> <SimpleData name = "Power"> 10895 </SimpleData> <SimpleData name = "Location"> L </SimpleData> </SchemaData> </ExtendedData> y a-t-il un problème avec mon code?
Felix
Oh désolé a propos de ca. J'espérais que ça marcherait.
RK
1
@Felix - Les informations que vous avez fournies dans votre commentaire sont vraiment utiles. Je recommanderais de modifier votre question et de l'ajouter ici pour plus de contexte et de clarté.
Obtenez Spatial
@AndreJoost - On dirait que vous avez trouvé une bonne réponse. Il serait utile de l'ajouter en tant que réponse réelle afin qu'elle apparaisse dans les résultats de recherche de toute autre personne ayant le même problème.
Obtenez Spatial
1

Obtenez Global Mapper, il vous suffit d'apporter le KMZ ou le KML, puis d'exporter le Vector IMG (ESRI SHP File). Le mappeur global peut lire la plupart des types de fichiers. Ouvrez ensuite la forme dans ARC, Global mapper, Manifold, QGIS, ect et affichez la table attributaire. Toutes les informations seront là. vous pouvez également ouvrir le fichier DBF à partir du SHP avec Microsoft Excel à ce stade, puis l'enregistrer en tant qu'extension de fichier XLXS si vous le souhaitez également.

Ron Paul
la source
1

Dans QGIS 3.2.0, la conversion peut être facilement effectuée à l'aide de la boîte à outils.

Sélectionnez dans la boîte à outils -> GDAL -> Conversion vectorielle -> Convertir le format .... (Caja de Herramientas de Procesos -> GDAL -> Conversión Vectorial -> Convertir Formato)

Sélectionnez un fichier KML, enregistrez-le en tant que fichier SHP. J'ai également dû changer le fichier de recherche ("Converti") dans les Propriétés -> Source (Tab) -> Codage source de "UTF-8" en "Windows-1258" pour voir correctement les caractères espagnols.

Andres Bodini
la source