Cartes géologiques pour Google Earth

Le 8 juillet 2009, par Jeff,

Hier, en cherchant tout autre chose j’ai découvert un merveilleux petit utilitaire, appelé shp2kml, dont le rôle est de convertir des "shapefiles" ArcView en fichiers kml pour Google Earth, éventuellement en utilisant les attributs du shapefile pour créer une carte thématique dans GE.

JPG - 136.2 ko
Vue d’ensemble de la carte géologique

Uh ?

Bon, si vous avez compris le paragraphe précédent, vous êtes sans doute aussi emerveillés que moi et vous pouvez vous précipiter ici pour télécharger l’outil (lien "more tools" à gauche, puis chercher "shp2km"). C’est gratuit. Vous verrez, c’est un petit bijou. Deux exemples sont attachés à cet article.

Si vous n’avez pas compris, quelques explications d’imposent...

Les fichiers kml

Google Earth — que nous connaissons tous— permet de rajouter des couches d’informations supplémentaires à son imagerie. Il y en a un gros paquet de prédéfinies (elles sont dans la liste en bas à gauche) ; et si ce n’est pas suffisant, vous pouvez rajouter vos propres couches, qui sont stockées dans des fichiers au format kml [1]. Pour ouvrir un fichier kml, il suffit de double-cliquer dessus ce quilance Google Earth, ou sinon fichier>ouvrir, comme toujours.

Un fichier kml peut contenir toute sorte d’objets : des points, bien sûr ; mais aussi des lignes (poly-lignes en fait) ou des polygones. Tout ces objets peuvent avoir différentes couleurs, tailles, formes, etc. L’ensemble est stocké dans le kml, et si vous êtes d’un naturel curieux, ouvrez un kml dans un éditeur de texte (pas un kmz !), vous verrez comment c’est fait ; un fichier minimaliste va ressembler à ça :


<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">
<Document>
        <name>toto.kml</name>

<Style id="sh_ylw-pushpin0">
                <IconStyle>
                        <scale>1.3</scale>
                        <Icon>
                                <href>http://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png</href>
                        </Icon>
                        <hotSpot x="20" y="2" xunits="pixels" yunits="pixels"/>
                </IconStyle>
        </Style>
<Folder>
                <name>toto</name>
<Placemark>
                        <name>Ceci est un marqueur</name>
<styleUrl>#msn_ylw-pushpin0</styleUrl>
<Point>
                                <coordinates>30.85,-25.90191543728578,0</coordinates>
                        </Point>
</Placemark>
</Folder>
</Document>
</kml>

Ce fichier est un ficher xml (ça ressemble au html, oui) ; il ne fait rien de très compliqué. D’abord il définit un style, qu’il appelle "sh_ylw-pushpin0", et qui est caractérisé par un style d’icônes (ici, l’icône "pushpin", ou punaise, qui est définie dans un fichier à l’adresse maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png ).

Ensuite, il crée un dossier ("Folder") appelé "toto", dans lequel on crée un marqueur ("Placemark") dont on précise le nom ("name"), les coordonnées (x,y,z) et le style (celui qu’on a défini plus haut).

Rien de très sorcier, don. On peut créer des kml à la main ; à partir de excel (je l’ai fait, mais le plus simple est sans doute d’essayer l’utilité excel to kml du même éditeur) ; ou, bien sûr, en écrivant un programme qui crée le fichier kml pour vous, comme le shp2kml dont je suis en train de faire de la pub. On peut aussi, plus prosaïquement, les créer en faisant un click-droit sur un marqueur dans la liste qui apparaît dans l’onglet à gauche de la carte de Google Earth, et "enregistrer sous ..." vous propose de créer un kml.

Evidemment, si on veut des kml avec des informations un peu compliquées, l’écrire à la main ou même le dessiner dans Google Earth est un peu compliqué et pénible... Une carte géologique par exemple, c’est un peu casse-pied à redessiner. On peut, bien sûr, utiliser une image scannée, mais c’est moins précis, plus lourd, moins flexible...

Les shapefiles

De l’autre coté, nous avons les fichiers "shape", qui sont les fichers utilisés par le logiciel ArcView, qui sont en fait le standard de facto pour les SIG (systèmes d’information géographique). Le principe du SIG (et des shapefiles) est simple : un fichier contient des objets (points, lignes, polygones) qui sont géoréférencés (on sait exactement où ils sont sur Terre) ; à chaque objet est associé une ligne dans une base de données. Pour les shapefiles, on a en gros les infos graphiques dans le fichier .shp, la base de données dans le .dbf (qu’on peut ouvrir avec excel, par exemple), et les autres fichiers servent à faire le lien (.shx) où à définir le système de projection utilisé (.prj). Si par hasard vous récupérez des shapefiles, attention à ne pas séparer les différents composants.

Un logiciel de SIG (entre autres choses) sait dessiner une carte, avec autant de shapefiles que vous voulez ; et il sait attribuer des propriétés graphiques à chaque objet, en fonction d’un champ de la base de données. Par exemple, si le fichier .dbf ressemble à ceci :

Objet_id Age Nature
1 Permien Granite
2 Permien Argiles
3 Carbonifère Argiles
4 Carbonifère Granite

je peux faire une carte où je colorie mes polygones (en supposant que ces objets soient des polygones) en fonction de leur age, et dans ce cas là j’aurais, par exemple, 1 et 2 en rouge ; 3 et 4 en vert. Ou alors une carte où je colorie ces polygones en fonction de leur nature, et dans ce cas 1 et 4 seront roses et 2 et 3 bruns.

Bref, c’est très pratique, très joli, ça permet de visualiser plein de choses. Mais voilà, les logiciels de SIG sont en général difficiles à utiliser et/ou chers (certains sont les deux à la fois, une licence ArcView coûte dans les 1500 euros et ce n’est pas trivial à utiliser...) [2].

De nos jours, la plupart des gens qui travaillent avec des cartes livrent leurs données au format shape. Si vous cherchez un peu sur google, vous trouverez plein de shapefiles partout. Quel dommage que toutes ces jolies données ne soient pas accessibles dans Google Earth, si simple d’utilisation... non ?

shp2kml

Et c’est là que shp2kml entre en scène. Ce merveilleux petit utilitaire sait lire un ficher shape, et le convertir en un kml, en affectant des couleurs (ou des styles, plus généralement) à vos objets en fonction d’un champ de votre choix. Le résultat est un fichier kml que vous pouvez regarder avec Google Earth à votre convenance. Bref, "le SIG pour les nuls".

Comment ça marche ? D’abord, il vous faut un "shapefile" (c’est à dire, en fait, le paquet de 3 ou 4 fichiers). Dans mon cas, c’est SWCape.shp (et donc, SWCape.dbf, .shx, .prj, etc.). Définissez la projection à gauche (si vous la connaissez ; par défaut, c’est probablement WGS84, sauf si vous êtes en Amérique du Nord auquel cas ce sera un UTM approprié). Passez à l’écran suivant.

Comme vous le voyez, le shapefile a été chargé et vous en avez une prévisualisation sur la droite. Pour le moment, c’est pas passionant parce que tout est de la même couleur ("single symbol", en bas), mais on va changer ça en mettant des couleurs en fonction de "unique value" (une couleur par valeur de la base de données). On pourrait aussi faire des "graduate value" si on voulait mettre des couleurs en fonction d’intervalles d’une valeur numérique.

Sur cet écran, vous pouvez aussi définir ce qui se passe quand vous survolez l’objet (Google Earth permet de changer la couleur d’un polygone quand la souris passe dessus, par exemple). Pour le moment, je le laisse à "rien du tout". Passons à la suite.

Maintenant, je vais décider de la légende à utiliser : en fonction de quoi attribuer les couleurs ? La liste en haut indique tout les champs présents dans la base de donnée associée au shapefile (donc SWCape.dbf, si vou avez suivi...). Il y en a un paquet, ici. Je vais choisir celui qui s’appelle ’Map_Unit", qui est tout en bas.

Et voilà. shp2kml affecte des couleurs aux polygones, en fonction de ce qu’il y a dans map_unit. Ici il y a 18 valeurs possibles, depuis "ADELAIDE SUB-GROUP" tout en haut, jusqu’à "SANDVELD GROUP" (et il y en a deux ou trois plus bas). Je peux garder les couleurs par défaut ; les changer en bloc bec "color ramps" ; ou double cliquer sur item de la légende (ici, sur "ADELAIDE (...) " ) pour en définir la couleur, comme dans l’exemple ci-dessus. J’ai aussi sélectionné "create folders", pour que tout les éléments ayant la même valeur soient rangés dans un dossier.

Voilà. Passons à la dernière étape : définir ce qui va apparaître dans les "info-bulles", les petites "bulles" d’information qui apparaissent quand on clique sur un objet. On peut définir un titre, et choisir ceux des champs de la base de donnée qui seront afichés (sous forme d’une table, pas moyen de faire des choses comme des textes, des phrases, etc., c’est juste une table avec nom du champ et valeur).

Il reste à donner un nom à la nouvelle couche, une description éventuellement ; indiquer si la couche doit être sur la surface, ou flotter à une altitude de votre choix ; et le sauver quelque part, avant de le regarder dans Google Earth.

Vue d'ensemble de la carte géologique

(en fait, dans mon cas j’ai modifié qulques textes dans Google Earth directement, par exemple pour donner les âges dans la légende, réorganiser a légende dans l’ordre stratigraphique, etc.)

JPG - 169.5 ko
Les granites Panafricains
On peut choisir individuellement pour chaque dossier si on vuet l’afficher ou non. Ici, on n’a laissé que le dossier "granites".
JPG - 104.1 ko
Vue 3D de la côte au Sud de Cape Town
Pour que ce soit plus joli, la carte géologique a été rendue transparente (utiliser le contrôle sous l’onglet "couches")

Fichiers joints

- Le kml minimaliste de démonstration ;
- Deux kml, un avec la Géologie de Barberton, l’autre celle de la région de Cape Town
- Le shapefile qui sert à la démonstration, zippé.

Notes :

[1] ou kmz, ce qui est la même chose, mais compressé

[2] Pour des alternatives libres, chercher quantum GIS, raisonnablement user-friendly, ou GRASS, cauchemardesque à apprendre

Téléchargez cet article au format pdf : Enregistrer au format PDF
 

Documents joints à l'article

Carte géol. de la région de Barberton
Keyhole Markup Language | 1 Mo | document publié le 8 juillet 2009
Carte géol. de la région de Cape Town
Keyhole Markup Language | 2.9 Mo | document publié le 8 juillet 2009
Exemple de kml minimaliste
Keyhole Markup Language | 756 octets | document publié le 8 juillet 2009
SWCape.zip
Zip | 473.9 ko | document publié le 8 juillet 2009
Archive zip comprenant les composant du shapefile utilisé pour la démonstration
 

Attention !

Suite à un bug que je n’arrive pas à résoudre, vous êtes peut-être arrivés sur cette page, ou d’ailleurs sur n’importe quelle page du site, avec une adresse (url) incorrecte. Si c’est le cas, il y a des choses qui marcheront mal (documents liés, commentaires...).

Les adresses correctes sont de la forme

http://jfmoyen.free.fr/spip.php ?articleXXX

Toute autre version (avec des choses en plus entre le "... free.fr/" et le "spip.php") n’est pas bonne.

Si vous n’arrivez pas à écrire un commentaire ou voir une photo, vérifiez que vous pointez bien sur la bonne adresse ; si vous faites un lien vers ce site, merci d’utiliser la version correcte de l’URL.


Fatal error: Cannot redeclare boucle_traductionhtml_8577f9e6e58b382df53aae02e8a21c02() (previously declared in /mnt/133/sdb/8/7/jfmoyen/ecrire/public/composer.php(48) : eval()'d code:11) in /mnt/133/sdb/8/7/jfmoyen/ecrire/public/composer.php(48) : eval()'d code on line 187