17 oct. 2008

Transformer un KML en SHP

Je voulais juste importer un KML sur gvSIG car j'avais lu sur Géorezo que la nouvelle version 1.1.2. de ce logiciel intègre une fonctionnalité d'importation de KML. C'était un tout petit KML de rien du tout (4 polygones et 6 points), pour un truc perso, rien d'important, mais je n'y suis pas parvenu !

J'ai un peu cherché (juste un peu) pour trouver la source de ce dysfonctionnement de gvSIG (structure ou version du KML, etc) . Finalement je me suis décidé à passer par une transformation de mon KML en SHP.

Voilà le cheminement à suivre :

  1. Création d'une carte sur Google Maps.
  2. Import du fichier KML complet sur mon poste (procédure).
  3. Validation du KML selon le standard OGC : la nouvelle version de KML validator permet la validation d'un fichier KML stocké en local.
  4. Ensuite on va transformer le KML en SHP. Si ce n'est pas encore fait, installer FWtools. Sur "FWtools shell" faire cd jusqu'au répertoire où est stocké le KML. Faire la commande suivante: ogr2ogr -f "ESRI Shapefile" mon_fichier_out.shp mon_fichier_in.kml
  5. Lire tranquillement son fichier avec gvSIG ou autre logiciel.
D'autres pistes qui n'ont pas tout à fait abouti :
  • Lecture du KML en gvSIG : erreur "Current gvsig version doesn't support multilayers. All the geometries have been loaded on the same layer ". La couche est chargée mais elle est vide (géométrie et attributs). Je suis néanmoins rassuré, c'est l'un des problèmes connus de la version 1.1.
  • Utilisation du logiciel gratuit Kml2shp (traduction "Google" du blog grec d'Arnaud Deleurme à ce sujet). Il marche bien pour les fichier composés de points, mais, dans tous les tests réalisés avec des polygones, il y a quelques sommets qui "fuient" :
  • Passage par l'interface OpenEV du pack FWTools : malheureusement, il ne s'agit pas d'un FW Tools shell avec des boutons :-) mais plutôt d'un outil de visualisation (assez orienté raster). Il arrive à lire mon KML, il l'exporte en SHP mais il perd les attributs dans le chemin. Dommage.
  • Utilisation du logiciel AlterSIG-Convert : encore des erreurs.
    FAILURE:
    Unable to open datasource `C:\Documents and Settings\rafael.moreno\Bureau\monfichier.kml' with the following drivers.
    -> ESRI Shapefile
    -> MapInfo File
    -> UK .NTF
    -> SDTS
    -> TIGER
    -> S57
    -> DGN
    -> VRT
    -> AVCBin
    -> REC
    -> Memory
    -> CSV
    -> GML
    -> KML
    -> Interlis 1
    -> Interlis 2
    -> GMT
    -> SQLite
    -> ODBC
    -> PGeo
    -> OGDI
    -> PostgreSQL
    -> MySQL
  • Passage par le logiciel gratuit GPS Babel : j'avais déjà utilisé ce logiciel très complet pour transformer mes itinéraires de randonnée créés sur Google Maps et les exporter en GPX afin de les lire sur mon GPS PDA. Ensuite on peut récupérer le GPX avec QGIS et le sauvegarder en SHP (ok, c'est tordu). En fait, le passage du KML vers GPX suppose la conversion des polygones en tracks (polylignes) mais conserve les attributs. Pour transformer les polylignes en polygones, il faut utiliser la toolbox SEXTANTE de gvSIG.
  • Restent à tester les outils surpuissants de type SDI de Camptocamp ou encore Geokettle de l'Université de Laval. Mais bon, là ... pitié ! Pas de canon pour tuer des mouches ! Dans tous les cas, je ne vois pas comment importer un KML sur SDI.
Maintenant il ne me faut plus que trouver le moyen de mettre en ligne mon fichier sur une application avec saisie en ligne autre que GMaps. Mais là c'est une autre histoire ;-)