RSS Libre@vous
RSS de la rubrique Géomatique

Dernière mise à jour
le 14/01/2016 à 15h43
Les contenus de ce site sont publiés sous la licence CC by-sa, sauf mention contraire.
licence_CC-by-sa
Copyright © 2017 Libre @ vous. Tous droits réservés.
Joomla! est un logiciel libre sous licence GNU/GPL.
24
Mar
2011
Script pour convertir des dalles raster KMZ au format worldfile utilisable par un SIG Imprimer
Le logiciel Mobile Atlas Creator permet de télécharger des fonds cartographiques géoréférencés issus de différents services en ligne comme OpenStreetMap, Google Maps, Yahoo Maps, Bing Maps, etc... Il a été conçu pour produire des images utilisables par différents types de GPS, mais il est également capable de produire des dalles géoréférencées au format KMZ.

Afin de pouvoir utiliser ces images directement dans un SIG (QuantumGIS, ArcGIS), j'ai réalisé un script de conversion qui permet de traiter tous les KMZ d'un répertoire en extrayant les images et en générant les fichiers Worldfile correspondants.

Le script est téléchargeable ici :

Ce script est écrit en shell bash et peut être exécuté dans un terminal sous GNU/Linux ou sous Windows en utilisant l'émulateur Unix cygwin. Il est disponible sous licence libre GNU/GPL. Il est très simple à utiliser, il suffit de préciser en paramètre le nom du répertoire qui contient le ou les fichiers KMZ à traiter. Par exemple :
./kml2wld.sh downloads/images

Pour chacun des KMZ, il va extraire l'image et générer un fichier worldfile correspondant au format de l'image (tfw, jgw, pgw ou gfw). Il génère également pour chaque image un fichier aux.xml contenant le système de référence spatial WGS84 qui est toujours celui obtenu en téléchargeant les fonds cartographiques depuis les différents services cités ci-dessus. Avant de lancer le script, n'oubliez pas de le rendre exécutable :
chmod u+x kml2wld.sh

Mise à jour du 24 Mars 2001 :
Dans un commentaire, Sébastien Joly a fait judicieusement remarquer que le script ne fonctionnait pas si un KMZ contenait plusieurs images, ce qui est le cas si on choisit de télécharger plusieurs niveaux de zooms en même temps avec Mobile Atlas Creator. J'ai donc réalisé une deuxième version du script qui gère les images multiples dans le même KMZ. C'est cette version qui est en téléchargement ci dessus. Merci Sébastien pour ta remarque. Complice

Vous pouvez ensuite utiliser votre logiciel SIG préféré (QuantumGIS ou ArcGIS) pour ouvrir les images qui seront alors correctement géolocalisées. Je n'ai pas eu l'occasion de tester avec MapInfo ou un autre SIG, donc si quelqu'un fait un test qu'il n'hésite pas à faire un retour ici en laissant un commentaire.

Je tiens toutefois à attirer votre attention sur l'utilisation que vous faites des données téléchargées sur ces services en ligne. Vous n'avez pas le droit de diffuser les images ni de les utiliser pour produire un travail dérivé. Seul un usage personnel est toléré.

Dans le cas particulier des images issues d'OpenStreetMap, vous pouvez faire tout ce que vous souhaitez, à condition de citer la source et de les conserver sous la licence libre CC-by-sa si vous les redistribuer.
 

Commentaires  

 
#1 S JOLY 10-03-2011 18:27
Bonjour Nico, il semblerait à première qu'il y ait problème d'extraction :

sjoly@sjoly-laptop:~/Documents$ ./kml2wld.sh essai
Archive: essai/tuiles.kmz
extracting: essai/img/doc.kml
Archive: essai/tuiles.kmz
caution: filename not matched: files/tuiles_11.png
files/tuiles_12.png
files/tuiles_13.png
files/tuiles_14.png
files/tuiles_15.png
mv: impossible d'évaluer «essai/img/files/tuiles_11.png\nfiles/tuiles_12.png\nfiles/tuiles_13.png\nfiles/tuiles_14.png\nfiles/tuiles_15.png»: Aucun fichier ou dossier de ce type
identify: unable to open image `essai/img/tuiles.png files/tuiles_12.png files/tuiles_13.png files/tuiles_14.png files/tuiles_15.png': Aucun fichier ou dossier de ce type @ blob.c/OpenBlob/2480.
identify: unable to open file `essai/img/tuiles.png files/tuiles_12.png files/tuiles_13.png files/tuiles_14.png files/tuiles_15.png' @ png.c/ReadPNGImage/2917.
identify: unable to open image `essai/img/tuiles.png files/tuiles_12.png files/tuiles_13.png files/tuiles_14.png files/tuiles_15.png': Aucun fichier ou dossier de ce type @ blob.c/OpenBlob/2480.
identify: unable to open file `essai/img/tuiles.png files/tuiles_12.png files/tuiles_13.png files/tuiles_14.png files/tuiles_15.png' @ png.c/ReadPNGImage/2917.
(standard_in) 2: syntax error
(standard_in) 6: syntax error
(standard_in) 9: syntax error
(standard_in) 2: syntax error
(standard_in) 6: syntax error
(standard_in) 9: syntax error
(standard_in) 6: syntax error
(standard_in) 10: syntax error
(standard_in) 6: syntax error
(standard_in) 10: syntax error
Le format du fichier essai/img/tuiles.png files/tuiles_12.png files/tuiles_13.png files/tuiles_14.png files/tuiles_15.png n'est pas supporté, aucun fichier de géolocalisation n'a pu être généré
Citer
 
 
#2 Nicolas Moyroud 11-03-2011 22:17
Salut Seb,

Je pense que tu es tombé dans le cas particulier que je n'ai pas encore traité dans mon script. Vérifies, mais tu dois avoir plusieurs images dans le même KMZ. Mon script ne peut pour l'instant fonctionner qu'avec des KMZ ne contenant qu'une seule image. Les deux jeux de données que j'ai eu à traiter étaient dans ce cas. Si tu veux bien m'envoyer ton fichier, je vais voir ce que je peux faire pour adapter mon script.
Citer
 
 
#3 Sébastien Joly 14-03-2011 18:37
Pour un usage identique il y a l'application "WorldFileTool" (Java):keshav.com.np/mediawiki/index.php/How-To_create_KML_Overlays_for_Google_MapMaker/_GoogleEarth
Citer
 
 
#4 Nicolas Moyroud 14-03-2011 20:10
J'ai testé cet après-midi effectivement c'est pas mal WorldFileTool. Mais comme il faut obligatoirement passer par une interface graphique, je pense que je vais continuer à améliorer mon script. C'est toujours bien d'avoir une solution en ligne de commande pour l'automatisation quand on a beaucoup de KMZ à convertir.
Je vais essayer de faire une version 2 qui gèrent plusieurs images dans le même KMZ.
Citer
 
 
#5 Nicolas Moyroud 24-03-2011 14:35
Je viens tout juste de mettre en ligne une version 2 du script qui tient compte de la remarque de Sébastien. Si un KMZ contient plusieurs images, elles sont maintenant extraites correctement.
Citer
 
 
#6 Steve 23-05-2013 14:25
I can't get this to work with the following file http://eoimages.gsfc.nasa.gov/images/imagerecords/78000/78669/london_etm_2002256.kml even when I convert it to kmz.

steve@MAKO-Latitude-E5400:~/3Figs/phd/NASA_data$ ./kml2wld.sh /home/steve/3Figs/phd/NASA_data/kmz
Archive: /home/steve/3Figs/phd/NASA_data/kmz/london_etm_2002256.kmz
caution: filename not matched: doc.kml
mv: cannot stat `/home/steve/3Figs/phd/NASA_data/kmz/img/doc.kml': No such file or directory
grep: /home/steve/3Figs/phd/NASA_data/kmz/img/london_etm_2002256.kml: No such file or directory
rm: cannot remove `/home/steve/3Figs/phd/NASA_data/kmz/img/*.kml': No such file or directory

Where am I going wrong?
Citer
 

Ajouter un Commentaire

Tout les contenus de ce site sont publiés selon les termes de la licence Creative Commons by sa. En ajoutant votre commentaire, vous acceptez implicitement sa mise à disposition selon les termes de cette licence.


Code de sécurité
Rafraîchir