Outils du site

Vous n'êtes pas identifié(e).


creer_un_atlas_avec_maperitive_et_mobac

Créer un Atlas avec Maperitive et MOBAC

Cette page a pour but de montrer comment créer très facilement un atlas grâce à deux programmes très simples d'utilisation: Mapretive et MOBAC. Il ne faut pas prendre le mot “Atlas” au pied de la lettre: nous n'allons pas imprimer notre propre atlas Michelin (encore que si c'est vraiment ce que vous voulez faire…). Il s'agit simplement de récupérer des données cartographiques en ligne, et d'assembler automatiquement les images pour les faire tenir sur une ou plusieurs pages, accompagnées d'annotations utiles (échelle, rose des vents, numéros des pages correspondant aux zones contigües à la page actuelle, …).

Il nous faudra pour ce faire 2 applications:

Téléchargez les deux programmes. Aucune installation n'est nécessaire: il suffit de les décompresser. Vous pourrez alors les lancer en cliquant respectivement sur “Maperitive.exe” et “Mobile Atlas Creator.exe” (ou en lançant les scripts .sh sous Linux).

Si vous ne souhaitez pas créer vos propres cartes mais préférez utiliser des cartes toutes faites comme celles de Geoportail, il vous suffit de télécharger MOBAC et de passer directement à la partie consacrée à ce programme.

Créer ses propres cartes a cependant plusieurs avantages non négligeables:

  • Dans la plupart des régions sur cette planète, il n'existe pas de cartographie aussi précise qu'IGN - OpenStreetMap devient donc incontournable - et dans les régions où elle existe, OSM est généralement déjà très précis, et le devient de plus en plus.
  • Cela vous permet de créer des cartes adaptées à vos besoins: vous vouez une carte avec des contrastes très élevés pour la lire sur l'écran noir et blanc d'une liseuse électronique? C'est possible et très simple à faire.
  • Cela vous permet de définir précisément les informations que vous souhaitez afficher sur la carte. Par exemple, créer une carte à relativement grande échelle affichant tous les villages. Ou créer une carte affichant une icône pour chaque point d'eau, les DAB, les restaurants et les hébergements dans les villages, les refuges de montagne, etc, mais pas les églises ou les monuments historiques? Bref, juste les informations les plus utiles pour le marcheur… Rien de plus simple.

Maperitive

Maperitive est un logiciel permettant de créer son propre rendu pour des cartes vectorielles d'OpenStreetMap (OSM). De nombreux rendus existent déjà, mais je n'en trouve aucun complètement adapté à la marche. Ce logiciel va donc permettre de créer des cartes adaptées à vos besoins, suivant votre cahier des charges. Nous allons dans cette page vous montrer à titre d'exemple comment créer un atlas de l'ensemble du massif alpin français.

Est-ce que tout cela est bien légal?

Oui! C'est non seulement gratuit, mais aussi tout à fait légal. Maperitive et MOBAC sont deux programmes open source permettant de créer, télécharger, et traiter de la cartographie en ligne. Nous allons d'ailleurs nous focaliser sur la cartographie d'OpenStreetMap sur cette page, qui est un projet communautaire libre de droits. Cependant, faire de même avec la cartographie d'IGN l'est tout autant. A partir du moment où la cartographie en question est disponible sur internet, c'est légal: MOBAC ne fait rien de plus que ce que fait votre navigateur lorsque vous visitez le site de Geoportail par exemple: il télécharge leurs données et les assemble. (Il le fait juste mieux, et de façon plus intelligente.

[Modération]

Parler sur RL de ce type d'utilisation des fonds de carte IGN peut apporter des problèmes juridiques à l'administrateur du forum.

Ce message est modéré suite à un signalement du membre IGN, salarié professionnel du Geoportail : http://www.randonner-leger.org/forum/viewtopic.php?pid=334938#p334938

Si vous avez une question à poser au membre IGN, c'est ici que ça se passe : http://www.randonner-leger.org/forum/viewtopic.php?id=25145 :)

Utilisation de base

Lorsque vous lancez Maperitive, vous avez quelque chose qui ressemble à cela:

Le programme utilise la cartographie en ligne d'OSM comme le ferait votre navigateur. Ca aide à se repérer. Nous allons maintenant zoomer sur la zone qui nous intéresse: les Alpes françaises. Vous pouvez utiliser un double clic ou la touche + de votre clavier (touche “-” pour dézoomer).

Nous allons ensuite préciser à l'application qu'il s'agit de la zone qui nous intéresse. Pour cela, dans le menu “Map”, sélectionnez “Set geometry bounds”. Maperitive va tracer un rectangle sur la carte correspondant à l'écran. Vous allez devoir dézoomer pour le voir (clic sur la carte, et touche “-”). A partir du moment où ces limites ont été définies, le programme se limitera à travailler sur cette partie du globe.

Bien entendu, ça ne correspond pas parfaitement à la zone qui nous intéresse. Nous allons donc modifier ce cadre. Il suffit de cliquer sur un de ses bords, et de le déplacer.

La cartographie de base d'OSM à l'écran ne nous intéresse pas, donc nous allons l'effacer (primordial si vous voulez générer un atlas à partir de plusieurs couches de cartes avec MOBAC - voir plus bas). Dans le menu “Map”, sélectionnez “Clear map”. Il n'y aura plus rien à l'écran: pas de panique, c'est normal.

Maintenant, nous allons télécharger les données vectorielles d'OSM correspondant à la zone choisie. Pour cela, toujours dans le menu “Map”, choisissez “Download OSM data”. Il y a deux sources possibles. Elles ne sont pas complètement identiques, mais cela ne fait pas de différences pour nous. La seconde rechigne moins lorsque l'on télécharge de grandes zones, c'est donc celle-ci que nous allons choisir. Si jamais vous avez une erreur de téléchargement, réessayez après quelques secondes / minutes. Ca finira par marcher, mais les serveurs surchauffent parfois (surtout encore une fois lorsque l'on essaie de télécharger de très grandes zones, ce qui n'est pas le cas ici).

Une fois le téléchargement effectué et les données traitées, nous avons quelque chose qui ressemble à ceci (cela peut prendre du temps - si c'est trop long ou si votre ordinateur se met à ramer, choisissez une zone moins large - même chose si vous avez une erreur à propos du manque de RAM de votre ordinateur):

Encore une fois, pour un test, mieux vaut choisir quelque chose de bien moins grand que l'ensemble des Alpes.

Vous pouvez maintenant zoomer et dézoomer pour voir le rendu à différentes échelles. Les informations affichées sur la carte varient d'un rendu à l'autre. Vous pouvez le changer, toujours dans le menu “Map”, en sélectionnant le rendu que vous préférez dans “Switch to rules…”. Comme nous le verrons dans la partie suivante, il est possible de créer vos propres rendus. Voici un exemple de rendu custom créé pour l'affichage sur liseuse (contrastes élevés) - avant / après:

Il nous manque maintenant le relief et les courbes de niveau. Nous allons les générer en utilisant des données fournies gracieusement par la NASA. Ce processus est extrêmement gourmand en ressources, donc mieux vaut le faire sur des zones restreintes. Nous verrons par la suite qu'il est possible de tricher et de contourner cette étape lorsque l'on doit travailler sur de très grandes zones.

Dans le menu “Tools”, nous allons sélectionner “Generate relief contours”:

Cela commence déjà à prendre forme.

Maintenant, nous allons créer des ombres en fonction du relief. Dans le même menu, choisissez “Generate Hillshading”. Il y a 3 variantes, sélectionnez celle que vous préférez. Vous pouvez même en superposer plusieurs - ici, “slopes” et “Igor”:

Enfin, pour faire joli si vous allez imprimer la carte en couleur (inutile en noir et blanc ou sur liseuse: ça ne se verra pas et ça augmente la taille des images créées), nous allons rajouter un peu de couleur en fonction du relief. Dans le menu “Tools”, sélectionnez “Generate Hypsometric Tinting”:

Le relief est faible donc ça se voit peu, mais le rendu est déjà pas mal. Voici ce que ça donne dans une région aux reliefs plus importants:

La carte est prête, il reste maintenant à l'exporter sous forme de tuiles afin que MOBAC puisse travailler avec. Pour cela, entrez la commande suivante en bas de la fenêtre:

generate-tiles minzoom=13 maxzoom=13

… et laissez faire la machine. Vous pouvez bien sûr spécifier une autre taille de zoom, mais le zoom 13 est particulièrement adapté aux marcheurs.

Créer ses propres règles de rendu

Cette section est une introduction à l'utilisation avancée de Maperitive. Vous pouvez tout à fait l'ignorer et passer directement à la partie “MOBAC” afin de créer votre premier atlas.

Comme on l'a vu plus haut, il est possible de changer les règles de rendu en utilisant l'option “Switch to rules…”. Cependant, Maperitive nous permet d'aller beaucoup plus loin et de créer nos propres règles de rendus, en fonction de nos besoins. Pour cela, nous allons appliquer l'un des rendus de base (“Hiking” par exemple), puis sélectionner “Edit Rendering Rules” dans le menu “Map”. Maperitive va alors ouvrir le fichier correspondant afin que nous puissions le modifier (s'il s'ouvre dans votre navigateur, pensez à associer les fichiers .xml avec un éditeur de texte comme gedit ou notepad++).

Structure du fichier

La syntaxe du fichier peut paraître assez déroutante de prime abord, mais elle est en fin de compte relativement simple. Notre but ici n'est pas d'en faire une description détaillée, mais d'en donner les bases, suffisantes pour notre usage futur. Si vous voulez aller plus loin, vous pouvez vous pencher sur la documentation du wiki d'OSM.

Ce fichier se décompose en 3 grandes sections:

  • Properties qui définit les options générales de la carte, comme la transparence ou la couleur du fond de carte.
  • Features qui va donner la liste des objets que nous allons afficher sur la carte (routes, sentiers, fontaines, cabanes, boulangers, magasins de sport, etc).
  • Rules qui pour chacun de ces objets va permettre d'indiquer la façon dont ils seront affichés sur la carte (par exemple, une icône pour les boulangers, un texte pour les cabanes, une bordure de 2px et un fond rouge pour les autoroutes, etc).

La page Map Features sur le wiki d'OSM liste la plupart des “objets” dont nous venons de parler, et donne pour chacun le nom officiel pour le rendu. Si jamais vous décidez de vous mettre aux rendus personnalisés, ajoutez-la à vos favoris, vous y reviendrez en permanence.

Afin de vous montrer le fonctionnement des règles de rendu, nous allons ajouter les terrains de camping sur la carte. Sur la page wiki liée plus haut, nous voyons qu'ils correspondent à deux identifiants: la clé “tourism”, et la valeur “camp_site”. Nous allons donc l'ajouter dans la liste des “features”, après avoir bien sûr vérifié qu'il ne s'y trouve pas déjà. Il suffit pour cela d'ajouter la ligne suivante:

	camp site : tourism=camp_site

“camp site” est juste un nom choisi arbitrairement, que nous allons réutiliser par la suite dans la section “rules”. Nous aurions tout aussi bien pu écrire “dfgdfg”, mais autant choisir quelque chose en rapport afin de s'y retrouver plus facilement par la suite. Nous faisons suivre ce nom arbitraire de deux points, et de la référence de l'objet qui nous intéresse, écrit sous la forme “key=value”. Certains objets n'ont pas de “value”, il suffit dans ce cas d'indiquer la “key”.

Il est aussi possible de spécifier plusieurs objets en utilisant l'opérateur “or”. Par exemple:

	camp site : tourism=camp_site or amenity=shelter

Dans cas, les campings et les abris (type abris en montagne) seront tous deux régis par la règle “camp site”, et seront rendus exactement de la même façon sur la carte. D'autres syntaxes sont possibles, mais encore une fois, cette page n'a pas pour but de recenser toutes les subtilités des règles de rendu de Maperitive: cela serait bien trop long, et la documentation existe déjà sur le wiki d'OSM ou sur le site de l'application.

Il va maintenant falloir définir les règles de rendu pour les “camp site” que nous venons de définir.

(à suivre)

Principaux objets

(à suivre)

Mobile Atlas Creator (MOBAC)

Créer un premier atlas

Avant de lancer le programme, il va falloir faire une petite modification afin de pouvoir utiliser les tuiles que nous avons généré avec Maperitive comme source. Pour cela, rendez-vous dans le répertoire “mapsources” dans votre dossier d'installation de MOBAC, et créez un fichier “local.xml” dans celui-ci. Ouvrez-le avec un éditeur de texte, et copiez le code suivant:

<?xml version="1.0" encoding="UTF-8"?>
<localTileFiles>
	<name>Local</name>
	<sourceType>DIR_ZOOM_X_Y</sourceType>
	<sourceFolder>C:\Users\XXX\Maperitive-latest\Maperitive\Tiles</sourceFolder>
	<backgroundColor>#000000</backgroundColor>
</localTileFiles>

Remplacez simplement C:\Users\XXX\Maperitive-latest\Maperitive\Tiles afin que l'adresse pointe vers le répertoire Tiles dans le répertoire d'installation de Maperitive. Sauvegardez et fermez, c'est terminé.

Nous allons maintenant lancer MOBAC et créer notre atlas. Pour cela, dans le menu “Atlas”, nous allons sélectionner “Nouvel Altlas”, puis choisir “Paper Atlas (PDF)” dans la liste.

Avant toutes choses, nous allons modifier les options pour les atlas PDF. Cliquez sur “Configuration” dans le panneau de gauche, et rendez-vous sur l'onglet “Atlas Papier”. Les cartes que nous allons créer là sont destinées à être affichées par une petite liseuse, donc nous allons passer au format A5. Les bordures sont sans intérêt, donc nous allons les supprimer. Nous nous assurons aussi que la latitude et la longitude sont affichées (Grille WGS 84): cela aide à se repérer, ainsi que les numéros de page (ce qui permet d'afficher le numéro des cartes voisines en bordure de carte).

Nous allons maintenant sélectionner la zone couverte par cet atlas. Pour cela, nous allons commencer par zoomer sur la zone en question.

Il existe plusieurs méthodes pour sélectionner la zone: la méthode de sélection rectangulaire (méthode par défaut, image de gauche), et la méthode de sélection polygonale (menu Cartes → Méthode de Sélection → Polygonal - plus précis, image de droite).

Une fois la sélection faite, nous allons cliquer sur “Ajouter la sélection” dans le panneau de gauche, et éventuellement changer le nom de celle-ci (clic droit sur le nom). Vous pouvez éventuellement ajouter plusieurs layers de la sorte: un atlas sera créé par layer.

C'est presque terminé. Il ne reste plus qu'à sélectionner la source de carte dans le panneau de gauche (si vous n'avez généré les cartes que pour un seul niveau de zoom, celles-ci ne s'afficheront bien sûr que pour le zoom en question: il est donc possible que plus rien ne s'affiche à l'écran - ce n'est pas grave), ainsi que la ou les tailles de zoom pour le ou les atlas que vous allez créer (un atlas par taille de zoom choisi). Nous avons généré les cartes pour le zoom 13, c'est donc ce dernier que nous allons sélectionner.

Une fois que vous aurez commencé à générer l'atlas, vous ne pourrez plus changer de zoom ou de source de rendu. Le programme affichera bien la nouvelle source à l'écran, mais continuera à utiliser l'ancienne lorsque vous recréerez l'atlas. Pour changer ces deux paramètres, il vous faudra créer un nouvel atlas et recommencer à zéro.

Il ne reste maintenant plus qu'à cliquer sur “Créer l'Atlas” et laisser faire le programme. Celui-ci sera sauvegardé dans le sous-dossier “atlases” du répertoire d'installation de MOBAC.

Erreurs de téléchargement

Si vous utilisez comme source des cartes en ligne, il est possible que vous ayez des erreurs, parfois nombreuses, de téléchargement. C'est parfois dû à un serveur surchargé, mais la plupart du temps, c'est tout simplement parce qu'un certain nombre de WMS ne génèrent pas les tuiles à l'avance. Elles sont créées “à la demande”, afin de préserver de l'espace disque. Si vous êtes donc le premier à télécharger une certaine tuile, il faudra attendre un peu le temps que le serveur la génère. Hors MOBAC n'attendra pas: il va réessayer une paire de fois, puis passer à la suivante.

Si cela arrive à répétition, le mieux est de cocher la case “Ignorer les erreurs de téléchargement automatiquement”, et de le laisser aller jusqu'au bout. Supprimez ensuite l'atlas créé, et relancez la création. Il ne devrait plus y avoir de problèmes la seconde fois. Vous n'aurez pas non plus besoin de retélécharger les tuiles récupérées lors de la première tentative: elles seront toujours dans le cache de votre ordinateur, donc il n'y a pas de soucis à se faire de ce point de vue là.

Bien entendu, si des erreurs de téléchargement surviennent lorsque vous n'utilisez que des sources locales, c'est soit que vous n'avez pas généré certaines tuiles avec Maperitive, soit que vous vous êtes trompés avec le chemin indiqué dans le fichier .xml custom.

Voici un exemple de page d'atlas générée de la sorte (format A5):

Ajouter de nouvelles sources de cartes

Il va pour cela falloir créer un fichier .xml dans le répertoire “mapsources” de MOBAC comme nous l'avons fait plus haut. Le nom du fichier importe peu, tant qu'il est unique. Une fois le fichier créé, copiez dedans le code suivant en remplaçant les différentes valeurs par celles qui correspondent à votre source:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customMapSource>
	<name>...</name>
	<minZoom>...</minZoom>
	<maxZoom>...</maxZoom>
	<tileType>...</tileType>
	<tileUpdate>IfNoneMatch</tileUpdate>
	<url>.../{$z}/{$x}/{$y}.png</url>
	<backgroundColor>#000000</backgroundColor>
</customMapSource>
  • name: le nom unique de la source tel qui apparaîtra dans le menu déroulant de MOBAC.
  • minZoom / maxZoom: les niveaux de zoom minimum et maximum (en général, de 0 à 18)
  • tileType: le type de fichier image de chaque tuile - en général, png.
  • url: l'URL de la source.

Il est en général assez facile de trouve l'URL des sources avec les cartes OSM. Il suffit sur son navigateur de faire un clic droit sur la carte, et de sélectionner “Ouvrir l'image dans un nouvel onglet”. Cela ne marche pas avec toutes les sources, mais la plupart des MWS le permettent. Regardez alors l'URL de l'image en question. Cela devrait ressembler à quelque chose comme cela:

http://a.tile.opencyclemap.org/cycle/13/2493/5514.png

On a l'URL de base:

http://a.tile.opencyclemap.org/cycle/

lettres (a, b, c, …) au tout début de l'adresse correspondent au serveur de téléchargement utilisé. Elles peuvent être supprimées sans problème (c'est même préférable, afin de laisser OSM choisir automatiquement le serveur le moins surchargé).

On a ensuite une série de chiffres correspondant au zoom (13 - vous pouvez vérifier qu'il s'agit bien sur zoom en dézommant une fois et en répétant la procédure: il devrait être passé à 12), et aux coordonnées X et Y de la tuile. Enfin, nous avons l'extension de l'image (png en général). Il nous suffit maintenant de remplacer la série de chiffres en question par des variables afin que MOBAC puisse s'y retrouver. Nous allons donc remplacer le chiffre correspondant au niveau de zoom par {$z}, et les coordonnées X/Y par {$x} et {$y}.

Cela donnera donc cela au final:

http://tile.opencyclemap.org/cycle/{$z}/{$x}/{$y}.png

Il n'y a pas moyen de savoir si le second chiffre correspond bien aux coordonnées X et le troisième aux coordonnées Y autrement qu'en testant. Vous pouvez cependant le faire très simplement: soustrayez 1 à ce que vous pensez être les coordonnées X dans l'URL, affichiez la nouvelle tuiles, et vérifiez qu'il s'agit bien qu'il s'agit de la tuile immédiatement à l'ouest de la précédente. S'il s'agit de la tuile immédiatement au nord, c'est que les coordonnées sont inversées.

Notre fichier de config est maintenant prêt. Pour les cartes OpenCycleMap, cela donne ceci par exemple:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customMapSource>
	<name>Opencyclemap</name>
	<minZoom>0</minZoom>
	<maxZoom>16</maxZoom>
	<tileType>png</tileType>
	<tileUpdate>IfNoneMatch</tileUpdate>
	<url>http://tile.opencyclemap.org/cycle/{$z}/{$x}/{$y}.png</url>
	<backgroundColor>#000000</backgroundColor>
</customMapSource>

Certaines sources sont cependant plus difficiles à ajouter que cela. Encore une fois, le but de cette page n'est pas de faire un traité exhaustif sur MOBAC, et nous allons donc rapidement passer dessus. Cependant, vous pouvez consulter le forum de MOBAC, qui liste de nombreuses autres sources. Vous n'avez qu'à copier le code posté dans les différents fils.

Combiner plusieurs sources de carte

Nous l'avons vu plus haut, générer le relief prend du temps… beaucoup de temps, et c'est difficilement envisageable à l'échelle d'un pays entier, voire même d'un continent. Il est cependant possible de tricher et de superposer des tuiles générées localement à des cartes récupérées en ligne, où le relief est déjà présent. C'est le cas des cartes d'OpenCycleMap par exemple.

Pour ce faire, nous allons commencer par éditer les règles du rendu que nous utilisons dans Maperitive, afin de passer le fond de la carte transparent. Pour cela, recherchez “map-background-opacity” dans le fichier de règles, et passez sa valeur à 0. Ensuite, nous allons créer un nouveau fichier xml dans le répertoire “mapsources” de MOBAC, dans lequel nous allons copier le code suivant:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customMultiLayerMapSource>
    <name>Local + Relief</name>
    <tileType>PNG</tileType>
    <backgroundColor>#FFFFFF</backgroundColor>
    <layers>
		<customMapSource>
			<name>Opencyclemap</name>
			<minZoom>0</minZoom>
			<maxZoom>16</maxZoom>
			<tileType>png</tileType>
			<tileUpdate>IfNoneMatch</tileUpdate>
			<url>http://tile.opencyclemap.org/cycle/{$z}/{$x}/{$y}.png</url>
			<backgroundColor>#000000</backgroundColor>
		</customMapSource>
		<localTileFiles>
			<name>Local</name>
			<sourceType>DIR_ZOOM_X_Y</sourceType>
			<sourceFolder>C:\Users\XXX\Maperitive-latest\Maperitive\Tiles</sourceFolder>
			<backgroundColor>#000000</backgroundColor>
		</localTileFiles>
    </layers>
</customMultiLayerMapSource>

N'oubliez pas, comme plus haut, de changer l'adresse “C:\Users\XXX\Maperitive-latest\Maperitive\Tiles” afin qu'elle pointe vers là où vous avez installé Maperitive.

Le seul problème avec cet exemple est que les routes, les noms des villages etc présents sur OpenCycleMap seront aussi affichés. Cependant, avec des règles de rendus à fort contraste (bordures de routes plus larges, etc), tout cela devrait être complètement recouvert par votre carte locale, tout du moins pour les zooms élevés, ce qui en fait un faux problème.

Voici ce que cela donne:

Il est possible de s'inspirer de ce code pour bien d'autres choses, et superposer par exemple des images satellite avec des cartes en ligne (tant qu'elles ont un fond transparent), ou générées localement…

Liens utiles

creer_un_atlas_avec_maperitive_et_mobac.txt · Dernière modification: 2015/10/26 17:46 par Opitux