Du 09/07/2014 au 25/07/2014, nous sommes allés faire un petit tour chez nos voisins irlandais. Voici un petit topo de ce voyage... Pour la lisibilité du récit, j'ai inclus pour chaque journée une carte récapitulative du chemin parcouru sous forme d'image ET sous forme de carte dynamique sur OSRM. Cette dernière permet d'avoir les détails du chemin parcouru dans une journée pour mieux se rendre compte des kilomètres parcourus.

Mercredi 09/07/2014

carte du 1er jour, d'Angers à Rosslare

C'est le jour du départ, les affaires (finalement pas trop nombreuses) sont rangées convenablement dans le coffre et nous prenons la route vers Cherbourg. Direction le port que nous atteignons un peu après avoir fait le plein de la voiture (le gasoil irlandais est plus cher de 20 centimes d'€ au litre). L'accès au bateau est assez simple si vous avez une voiture à embarquer: les lignes sont clairement indiquées, un premier opérateur récupère votre numéro de réservation et vous balance la carte d'embarquement ainsi que deux pass d'accès à votre cabine. Une fois cette étape passée, direction la douane sur la même file. Les douaniers effectuent la vérification des papiers d'identité et après, vous pouvez monter dans le bateau avec votre voiture. Tout est prévu pour ça ! Si vous êtes piéton, c'est plus difficile: il vous faut trouver l'entrée du guichet piétons, attendre qu'un bus vous emmène près du bateau, ce qu'il fait généralement après que toutes les voitures soient embarquées.

Une fois à bord, vous pouvez profiter de la vue sur la mer en allant au pont supérieur:

port de cherbourg vu du bateau

Pendant la traversée, vous pouvez aller boire une pinte de Guinness. C'est assez cher (4,6€) mais c'est bien rafraîchissant. Bien entendu, comme tout bon touriste, vous ne savez pas que la Guiness est une bière qui n'a pas un goût si corsé et qu'elle est faiblement alcoolisée (4,2°). Pour vous en persuader, n'hésitez pas à vous resservir une deuxième pinte (qui fait un peu plus de 50cl). Une fois la soirée entamée, vous pourrez profiter du spectacle qu'on donne au bar à partir de 21h. C'est reposant et ça vous permettra de vous plonger plus facilement dans votre cabine à l'heure tardive de votre choix.

Jeudi 10/07/2014

carte du jour 2

Une fois que vous avez bien dormi (ou mal si vous avez l'angoisse du mal de mer), vous pourrez prendre un petit déjeuner sur le pont pour voir l'arrivée au port de Rosslare. Un peu avant l'accostage, vous pourrez jeter un coup d'oeil vers Tuskar Rock dont voici un petit aperçu:

C'est notre premier jour en Irlande. L'objectif de la journée est juste de trouver de quoi manger et un camping pour dormir le soir. Nous n'avons rien réservé. Pour la première mission, direction Wexford, une ville d'environ 20000 habitants située au nord de Rosslare. Nous comptions trouver un supermarché en dehors de la ville, comme ce qu'on a l'habitude de voir en France mais finalement, nous avons trouvé un supermarché Aldi quasiment en plein coeur de la ville. Durant notre voyage en Irlande, nous avons pu constater qu'il y a vraiment très peu de centres commerciaux de grandes surfaces. Les supermarchés sont situés en plein coeur de la ville, directement à côté des commerces de proximité. L'intérêt c'est que c'est assez bien intégré au centre urbain et qu'il n'y a pas de bâtiments moches et dédiés en périphérie.

Après avoir fait quelques courses, il nous faut trouver un endroit sympathique pour déjeuner et envisager la suite des évènements. En feuilletant le guide de voyage, on tombe, au hasard sur Kilmore Quay, en bordure de mer. Le déjeuner se passe sur la plage quasi-déserte. Quelques photos de Kilmore Quay:

Une fois le ventre allourdi pas le repas, il est temps de trouver un camping pour la nuit. En fait, il nous restera à trouver une autre nuitée en camping avant de profiter de la maison que nous avons louée pour une semaine. A l'aide de la carte, on avise la ville de Tramore, une petite station balnéaire sur notre route. L'objectif de notre voyage pendant ces deux jours est simplement de rejoindre Waterville pour récupérer les clefs de notre maison.

Direction Tramore... Quelques photos au passage de la route car nous coupons à travers la campagne (Wellington Bridge).

Après avoir dépassé New Ross et Wateford, nous prenons les petites routes de campagne (des routes régionales en fait) et nous arrivons à destination vers 18h. Le camping est plein de mobile-home et nous retrouvons un convoi de camping-cars français qui voyagent ensemble. Fait marquant, pratiquement tous les campings que nous avons essayés pratiquent la douche payante (avec des jetons ou avec des pièces de monnaie) à durée déterminée. Je ne suis pas habitué à cette pratique que je trouve peu hygiénique mais qui a sans doute l'intérêt d'être plus développement durable et de gérer les adolescents qui consomment 100L d'eau par douche !

On monte alors les tentes et on installe le matériel de camping avant d'aller faire un tour dans la ville. C'est la foire à Tramore:

Une fois la ville visitée (disons le coeur historique), nous revenons au camping et faisons cuire notre superbe repas: des pâtes ! Ensuite, il est temps de se coucher même si la lumière du soleil s'obstine à briller...

Vendredi 11/07/2014

carte du jour 3

Le jour se lève, tout le monde prend sa douche et c'est l'opération petit-déjeuner démontage. L'ensemble prend près de 2h ! On ne part que vers 11h... Pas très matinal mais c'est les vacances pour tout le monde. Une petite visualisation de carte nous laisse penser que ce serait bien de trouver un camping après avoir dépassé Cork, la deuxième ville du pays. Il y a un camping dans la petite ville de Ballinspittle, un peu après le petit port typique de Kinsale.

Avant de rejoindre la N25, nous nous trompons de route et terminons dans un lieu de toute beauté: [Killfarrasy].

Nous suivons la N25 et faisons des courses à Dungarvan que nous ne prenons pas le temps de visiter. Car nous prendrons notre repas dans un village plus typique: Ardmore. Sur la plage, nous sommes accueillis par un concert de cornemuse. Nous visitons rapidement les ruines de l'église ainsi que le cimetière avec ses tombes décalées:

Nous reprenons la route direction Kinsale, après avoir traversé rapidement Cork. Nous cherchons notre camping et tombons sur un campement de mobil-homes situés dans un site assez joli... Mais il n'y a point de réception et nous comprenons qu'il s'agit d'un parc privé. De toute façon, il était assez moche. Après quelques minutes de route, nous trouvons le vrai camping qui n'est pas trop mal situé lui non plus. Après avoir redressé le camp (ce qui est fastidieux mais fait partie de la dynamique du camping itinérant), direction la plage pour se faire une balade. Le temps est gris mais non pluvieux.

Au retour, nous décidons de manger face à la mer, près de la plage. Après le repas, nous trouvons des chiens en liberté qui ont visiblement envie de jouer avec les gens de la plage. Plage qui est d'ailleurs quasi-déserte. Nous jouons avec les chiens (creuse !) et faisons quelques séries de ricochet (record établi à près de 7 rebonds sur la mer).

Samedi 12/07/2014

carte du jour 4

Aujourd'hui, il nous faut rouler jusqu'à la petite cité de Waterville pour prendre les clefs de notre maison. Avant de prendre vraiment la route, nous faisons une petite pause à Kinsale, le temps de visiter vite fait:

Le moins qu'on puisse dire, c'est que c'est coloré ! Je suis assez curieux de voir quelle réglementation d'urbanisme s'applique en Irlande, car de manière générale, le nuancier de couleurs acceptées pour les constructions semble infini. Le résultat final se révèle assez réussi malgré le peu de contrainte. Il faut croire que les 4 couleurs autorisées dans certains règlements d'urbanisme français ne participent qu'à rendre un peu trop uniforme les couleurs des villes et des bourgs...

Ensuite, direction Waterville par la N71. Même si la route est une nationale, le parcours se révèle assez laborieux. Les routes sont assez étroites, pas bien entretenues et tout le monde roule bien en deça de la vitesse autorisée. Après un repas pris sur le pouce à Glengariff, nous reprenons la route car nous avons fixé notre rendez-vous pour récupérer les clefs à 16h. Mais je sens déjà que nous allons être en retard ! La route N70 termine de nous achever. Elle est très proche de la mer et sa vue est imprenable mais elle n'est que virages et papy du dimanche qu'on ne peut pas doubler...

Nous arrivons à Waterville à 16h30. Je passe un coup de fil à la personne en charge de nous remettre les clefs. Elle me donne tous les renseignement pour parvenir à la maison (mais j'avais déjà un plan) et nous nous mettons en route. Le chemin pour y parvenir est digne d'intérêt. Voici une petite illustration dans Google StreetView (flash required). Globalement, il n'y a qu'une seule voie et cette dernière n'est pas très souvent empruntée si j'en crois la mousse qui pousse dessus. Tant mieux, on ne sera pas trop dérangés par les voisins...

Après 13 km (soit bien 20 minutes) de route, nous arrivons enfin à notre maison qui se nomme Derriana Lodge, située près du lac Derriana. Voici quelques photos pour mieux se rendre compte de la vue et de l'intérieur.

Voici la vue qui s'offre à nous:

C'est beau non ?

Nous avons autorisation de nous servir du pôele à bois. D'ailleurs, du bois de chauffage est mis à notre disposition. C'est juste génial. En plus d'une bonne flambée, le poêle à bois fournit également la chaleur pour les radiateurs à l'aide d'une petite pompe de circulation et d'un échangeur thermique. Bien pratique pour faire sécher les serviettes tout en ayant une petite flambée à l'intérieur.

Dimanche 13/07/2014

carte du jour 5

Aujourd'hui, nous commençons notre journée par explorer les hauteurs de Derriana Lodge. Juste au dessus de la maison, il y a un terrain où l'accès est libre. On y trouve un point de vue déjà plus complet de la situation.

Aujourd'hui, petite virée vers la côte. Nous prenons un bon café à Waterville, faces à la mer, au pub Peter's Place.

Ensuite, il est temps de se baigner. Direction la baie de Ballinskelligs où nous espérons trouver une plage de sable fin. Après quelques détours, nous arrivons sur une petite crique (photo) bien isolée où il n'y a personne.

C'est l'heure d'une petite baignade complète dans l'océan atlantique. Même s'il fait beau, je peux vous dire qu'elle est fraîche !

Une fois bien râfraîchis, il est temps d'aller faire un tour à la ville la plus proche pour se ravitailler. Nous filons vers Cahersiveen qui propose plus de supermarchés que Waterville. Même en saison estivale, Cahersiveen semble un peu morne: nombre de commerces sont à vendre et sont fermés. On trouve quand même de tout, du boulanger au poissonnier en passant par le marchand de journaux. Comme c'est dimanche, nous allons seulement au supermarché encore ouvert.

Nous rentrons et nous regardons le match de la coupe du monde qui commence à la bonne heure comparativement en France avec son décalage d'une heure.

Lundi 14/07/2014

carte du jour 6

Aujourd'hui, il pleut donc nous avons choisi la politique de rester à la maison. Néanmoins vers le début d'après-midi, nous nous lançons dans un petit tour de Derriana Lough, le lac qui nous fait face tous les jours depuis notre maison.

Nous sommes bien équipés (bottes et kway indispensables) et nous pouvons sans peine progresser le long du chemin rural. Ce dernier est ponctué de barrière pour empêcher les moutons qui broutent ce territoire de s'échapper. Nous parvenons près d'une ancienne maison (ou cabane vu la taille) en pierre, preuve qu'à une époque, le berger devait s'y trouver. Le plafond nuageux est assez bas, je le situe à environ 300m. Le brouillard s'abat vite sur nous. Après deux heures de progression, il est temps de rentrer à la maison pour faire sécher tout ça. Encore une fois, le feu s'avère intéressant pour cette tâche.

Mardi 15/07/2014

carte du jour 7

Aujourd'hui, le temps est mitigé. Faisons un tour à Valentia Island. Nous reprenons une énième fois la N70 et filons ensuite vers Portmagee qui dispose d'un pont permettant de rejoindre l'île de Valentia. Une fois sur l'île, nous filons vers l'ouest direction Bray Head, l'extrémité occidentale de l'île. Accessoirement, c'est pour l'instant l'endroit le plus à l'ouest où nous sommes allés jusqu'à présent. Quelques photos:

Après avoir fait le tour de Bray Head à pieds et avoir mangé notre picnic, nous continuons à explorer l'île. Cette fois, nous nous arrêtons à la grotte qui est en fait une mine d'ardoise. Elle est encore en fonctionnement. Pendant la grande famine, elle a servi à embaucher la main d'oeuvre locale qui manquait cruellement d'argent. Bien entendu, comme toutes les mines, elle a connu son lot d'accidents mortels. En souvenir de ces morts, il y a un monument qui, comme on peut le voir, est très kitch:

Après la grotte, nous allons faire un tour à Knightstown qui est la bourgade la plus peuplée de l'île (environ 150 habitants). C'est aussi depuis cet endroit qu'on peut prendre un petit ferry vers Cahersiveen. Mais le ferry est trop cher pour le peu de temps gagné (6€) et en plus, nous n'avons plus rien à faire à Cahersiveen. Nous repartons par Portmagee. ça nous permet d'utiliser la route en bordure de côte.

Ce soir, nous décidons de regarder un film sur la télé. Le récepteur satellite de la maison est branché uniquement sur des chaînes anglaises. Dommage, nous n'avons pas les chaînes de la RTE qui aurait pu nous être bien utile pour avoir la météo locale par exemple. Le film que nous regardons est diffusé sur une des chaînes du réseau ITV, un peu le TF1 anglais. Montre en main, nous calculons que la chaîne diffuse le film 15 minutes avant d'envoyer une coupure publicitaire d'au moins 4 minutes. Le film est tout simplement inregardable car les coupures sont introduites un peu à n'importe quel moment. Les chaînes de la BBC ne semblent pas atteintes par ce même syndrome et heureusement: s'il n'y avait que cette possibilité de regarder des films, on aurait beaucoup plus intérêt à télécharger depuis Internet les dits films sans coupure pub. ITV, promotteur indirect du piratage de films sur Internet ? la question est en débat...

Mercredi 16/07/2014

carte du jour 8

Aujourd'hui le temps n'est pas trop mauvais. Faisons un tour à Killarney, une petite ville de 17000 habitants qui se trouve à peu près à 60 km (soit presque 2h de route) de notre maison. Nous prenons à travers les petites routes de la campagne, c'est plus direct. Passé le col de Ballagasheen, on arrive dans un paysage insolite: devant nous s'étale une large vallée inexploitée, couverte de landes et de tourbe, sans l'ombre d'une installation humaine à 10 km à la ronde. Au milieu de la vallée se dresse le massif du Carrauntuohill, le point culminant de l'Irlande.

Après avoir roulé (trop) longtemps sur les routes régionales du coin, nous atteignons Killarney qui semble bien touristique. On y trouve toute sorte de boutiques pour les touristes qui se chargent de vous vendre tous les symboles irlandais, des chaussettes Guiness au mouton en peluche en passant par la ribambelle de CD de musique gaëlique. Un vrai bonheur. On y trouve également quelques boutiques qui vendent le textile local sous forme de casquettes en tweed (qui semble vachement à la mode pour les hipsters urbains du moment; moi ça me rapelle juste les vieux de la génération de mon grand-père qui portaient ça pour protéger leur tonsure), ou encore des beaux pulls fabriqués localement (du moins en Irlande).

Killarney dispose également d'un parc "national" à ses portes. C'est la partie poumon vert de la ville. Nous le visitons rapidement avant de revenir au centre-ville pour la partie je laisse les femmes faire du shopping.

Pour revenir de Killarney, nous prenons la grande route: la N70. C'est plus long en distance mais beaucoup plus court en temps (compter 1h30 au lieu de 2h). Ce soir, sur Derriana Lough, la lumière du soleil couchant vient allumer les monts qui nous font face:

Jeudi 17/07/2014

carte du jour 9

Aujourd'hui, il fait beau, profitons-en pour faire encore un tour de lac, pour se baigner, et pour monter tout en haut des monts qui nous font face.

Pour ma part, je monte en haut du Coomcathcun qui culmine à 631m d'altitude. La balade prend environ 3h depuis la base du lac. De mon promontoire, je peux voir l'autre côté du versant qui me présente le village de Sneem ainsi que le "fjord" de la baie de Kenmare.

Pendant l'ascension, j'ai pu croiser des plantes carnivores (des drosera) qui vivent accrochées à la pente d'un terrain tourbeux et toujours humide. Bien entendu, pour monter il faut des bottes et vous finirez forcément par avoir les pieds trempés de sueur.

Mais heureusement, le feu s'occupera de sécher tout ça très rapidement ce soir...

Vendredi 18/07/2014

carte du jour 10

Nous nous sommes ensuite embarqués pour aller faire un tour du côté de Caherdaniel où nous avons trouvé une petite plage bien sympathique située au bout de la route, bien à l'abri comme on peut le voir sur cette image satellite (carte).

L'eau est vraiment claire et c'est un régal pour les yeux. Néanmoins, elle est un peu trop froide pour qu'on puisse s'y baigner confortablement. Il faudrait faire comme tous les gens qui se baignent ici: porter une combinaison de plongée... ou bien être habitué à nager dans de l'eau froide.

Samedi 19/07/2014

carte du jour 11

C'est le coeur gros que nous devons quitter notre maison au bout de la route... Lever matinal suivi par une petite séance de nettoyage avant de rendre les clefs.

Maintenant, direction Dingle et sa péninsule du même nom, la pointe la plus à l'ouest de l'europe géographique.

Au passage, nous nous arrêtons à Killorglin, un monde plein de bites (enfin une grosse) !

Nous faisons quelques courses au supermarché du coin (Aldi). Encore une fois, contrairement à ce qui se passe en France, ce dernier est complètement intégré au coeur de la ville et il ne bénéficie pas d'un bâtiment dédié (et moche comme on a chez nous). A côté, on trouve l'office de tourisme, quelques bureaux et des cafés (pas des pubs) et d'autres boutiques, le tout donnant sur une place publique relativement bien située. L'ensemble est harmonieux et sans "verrue". Je pense que c'est une bonne optique et une bonne mise en concurrence entre les commerces de proximité qui sont à quelques enjambées du supermarché. Ainsi, vous n'êtes pas forcé d'acheter tout dans la grande surface quand vous faîtes vos courses car le boulanger ou le boucher sont dans la même rue que la grande surface. Ça donne sans doute de meilleures chances pour le commerce local. Ça me semble un honnête compromis urbanistique et commercial... A quand la même chose en France (en dehors de Monoprix) ?

Après avoir traversé Tralee rapidement, nous recherchons notre camping près du village de Camp. Ce dernier dispose d'un accès direct à la plage. Voilà qui va nous changer un peu de la vue de Derriana Lough.

Après toute une journée de route (pour finalement moins de 100km de parcours), il est bon de prendre un peu de bon temps...

Sur la plage, après avoir tenté de faire des ricochets qui ne fonctionnent pas dès qu'il y a un peu de vagues, nous improvisons un nouveau sport: le beachbooking ! Les instruments sont assez simples: prenez une balle souple (une chausette en boule peut sans doute faire l'affaire), un livre par participant et mélangez le badminton et le beach-volley. Utilisez les livres comme une raquette et délimitez un terrain assez petit, faîtes deux équipes de deux. C'est une version de jeu de raquettes low-cost. Si vous n'avez pas emmené de raquettes, il est fort probable que vous ayez quand même emporté des livres pour le voyage. Si ce n'est pas le cas, allez faire un tour à l'office de tourisme pour récupérer les guides des différents comtés de l'Irlande, ils fonctionnent très bien aussi.

Dimanche 20/07/2014

carte du jour 12

Nous partons pour la journée explorer le nord de la péninsule de Dingle. Il fait très beau. Nous partons d'abord vers Castlegregory où a lieu le marché local. Puis direction la langue de sable des Maharees. C'est le point le plus au nord de la péninsule de Dingle. Nous nous arrêtons au port au bout de la route. De là, on peut voir les îles Magharee.

Ensuite, nous filons vers Brandon Point, une autre enclave au nord de la péninsule. La route est très étroite et, après avoir pris un rapide déjeuner, nous sommes bloqués par un convoi de voitures qui arrivent dans l'autre sens. Au bout de 3 minutes de blocage un irlandais descend et entreprend de faire avancer les choses en guidant au chausse-pieds l'écart entre les voitures pour que l'une d'entre elle puisse avancer. Au bout de 5 minutes et en repliant les rétroviseurs, on y parvient. Nous nous arrêtons ensuite sur la plage de Ladys Island...

Le soir venu, nous rentrons au camping refaire une partie de beachbooking.

Lundi 21/07/2014

carte du jour 13

Aujourd'hui, il ne fait pas beau. Nous décidons d'aller visiter la petite ville de Dingle. Pour nous y rendre, nous passons par Connor Pass. Comme il fait mauvais, il y a un brouillard à couper au couteau. Malheureusement pour nous, nous croisons un BMW X3 qui refuse de nous laisser passer (alors qu'on est prioritaire puisque nous montons). Et nous voilà à faire marche arrière sur une route de col en plein brouillard conicés sur une route étroite entre roc et ravin...

Nous parvenons ensuite à la ville de Dingle qui dispose d'un port bien particulier. Celui-ci forme une anse naturelle fermée par un étroit chenal. Je pense qu'on ne peut pas faire mieux comme port naturel. Le reste de la ville est tourné vers le tourisme et offre les couleurs typiques de l'Irlande.

Le midi nous tentons le pub mais nous sommes assez déçus: c'est peu copieux et assez cher. Il faudra aller trouver un meilleur établissement la prochaine fois. Après avoir visité toute la ville (ce qui se fait en moins de deux heures), et comme le temps est toujours maussade, nous partons rejoindre une autre ville: Tralee. Elle est située à environ 60 km de Dingle. Nous empruntons la grande route: pas envie de repasser par Connor Pass vu les conditions météo. Après une heure de route, nous parvenons dans les faubourgs de Tralee.

Cette ville dispose d'un parc spécialisé dans les roses. Il y a même un festival dédié.

Après avoir arpenté rapidement la ville à la recherche de boutiques à touristes, nous reprenons notre route. Globalement Tralee est moins touristique que Killarney ou même Dingle. On y retrouve les principaux commerces qui se regroupent autour de deux rues principales. Il y a quand même pas mal de boutiques fermées. Dès qu'on quitte ces rues, il n'y a plus guère que des logements dédiés à l'habitation.

Mardi 22/07/2014

carte du jour 14

C'est notre dernière opportunité pour visiter l'ouest de la péninsule de Dingle. Le temps est maussade mais nous n'avons pas le choix, il faut aller voir Slea Head, la péninsule la plus à l'ouest de l'Irlande qui fait face aux îles Blasket.

Nous évitons Connor Pass et empruntons la route principale qui passe par Anascaul. Cette petite localité a la particularité d'être le lieu de naissance de Tom Crean, un explorateur arctique qui a notamment oeuvré dans l'expédition Endurance (dont j'ai déjà parlé sur ce blog). On voit son visage un peu partout sur les rues de Dingle ou de Tralee:

Nous repassons par Dingle mais ne nous arrêtons pas; nous continuons au contraire à progresser vers l'Ouest alors que le plafond nuageux est au niveau de la route. Résultat: on ne voit absolument rien. Il paraît qu'il y a des abris à grains anciens dans le genre qui suit, mais nous ne les apercevrons pas.

Voici tout ce qu'on peut constater depuis la voiture: grisaille et pluie.

Nous parvenons finalement à Slea Head qui dispose d'un parking permettant de se garer car l'accès à la pointe se fait à pieds. Nous nous lançons dans l'aventure bien équipés de la tête aux pieds... sauf peut-être au niveau des jambes. La marche jusqu'à la pointe achève de tremper nos pantalons. Il faudra sécher tout ça dans la voiture. Néanmoins, malgré la pluie qui tombe, nous parvenons bien à la pointe de Slea Head.

Pour nous remettre un peu de notre humidité, nous prenons des tickets pour le musée des îles Blasket. Ce dernier fait face à la plus grande des îles Blasket. Le musée est assez agréable et retrace l'histoire des personnes qui ont habité l'archipel avant d'être évacuées de force par le gouvernement en 1953. On y apprend que le gaëlique a toujours été parlé dans les îles Blasket et elles ont constituées un sujet d'étude pour de nombreux patriotes irlandais qui se rendaient compte que depuis la grande famine, de moins en moins de personnes parlaient irish. De nombreux professeurs en langue sont venus séjourner dans les Blasket pour parler avec les autochtones. Ces derniers avaient un sens aigü de l'écriture. Plusieurs auteurs irlandais d'importance sont en effet natifs des îles Blasket. On peut citer Tom O'Crohan qui a écrit "The Islandman", un livre qui décrit les conditions de vie dans les Blasket à la fin du XIXème siècle. D'autres habitants l'ont imité en écrivant également leurs histoires ou bien plus simplement les anecdotes. Pour résumer, sur la petite deux-centaine de personnes qui a vécu entre la fin du XIXème siècle et 1953, il y a près d'une dizaine d'habitants qui ont publié un livre (dont certains ont été traduits, c'est le cas de The Islandman). Pas banal pour des gens simples... Néanmoins, les Blasket sont maintenant un territoire interdit: c'est une zone réservée et peu de gens peuvent y accoster et encore moins y séjourner et c'est bien dommage car de la pointe du musée, on peut voir encore les maisons blanches de l'île principale, debouts face à la mer.

Après notre visite approfondie du musée, nous terminons enfin la boucle routière de Slea Head par un petit tour vers Brandon Creek (ici, tout tourne autour du mont Brandon).

Nous retournous vers notre camping, mais pour fêter notre départ prochain, nous allons au pub à Castlegregory. Nous commandons un bon repas ainsi que quelques pintes. J'ai l'occasion de goûter la bière Crean's qui est produite localement par un brasseur de Dingle. Le nom de la bière est d'ailleurs tiré de celui de Tom Crean. Le repas est excellent et bien copieux. Tradition oblige, le soir au pub, ça joue de la musique. Le patron du bar et ses potes préparent la salle et se mettent à jouer du bon vieux rock: Bee Gees (leur période du début), Creadance Clearwater Revival, Eddie Cochran, etc...

C'est le ventre bien plein et les oreilles enjouées que nous retournons dormir pour la dernière fois sur Dingle.

Mercredi 23/07/2014

carte du jour 15

Nous partons de Dingle pour effectuer la traversée de l'Irlande vers Rosslare car nous devons prendre le bateau dès demain à 15h. Pour éviter d'arriver en retard, nous avons préferé faire la route aujourd'hui. Vu l'état des routes irlandaises, mieux vaut prendre un peu de précautions.

Pas grand chose à dire de ce voyage un peu longué: les vacances se terminent, pas grand chose à dire de plus. Plus nous avançons vers l'est, meilleur est le temps. D'un nuageux et couvert à Dingle, il passe à un ensoleillé avec nuages à Cork pour terminer par un soleil radieux à Rosslare.

Nous prenons un peu de temps pour visiter le centre de Cork en pointillés. Pas grand chose à dire: c'est une grande ville !

Arrivés à Rosslare, nous cherchons un camping. Celui que nous visions en premier lieu (près de lady island) est complet et nous devons nous rabattre sur le parc de Carne Beach. Ce camping est une usine à touristes: il est composé d'un véritable labyrinthe de mobil-homes entassés les uns près des autres avant de déboucher, au bout d'un kilomètre de route à l'aire de camping, peuplée de nombreuses tentes et camping-cars. Nous trouvons quand même un emplacement un peu à l'écart et au calme.

Jeudi 24/07/2014

carte du jour 16

Aujourd'hui, c'est le jour du départ. Comme un mauvais signe qu'il est temps de rentrer, le camping-gaz est vide: pas de bon café (lyophilisé) à boire pour le petit déjeuner. Il nous reste un peu de temps avant de prendre le bateau à 15h et nous en profitons pour visiter Wexford plus en détails que pour le premier jour. Nous faisons nos dernières courses au supermarché Centra du centre-ville pour nous faire un bon picnic pour le midi et pour les repas à bord du bateau.

Pour boucler la boucle, nous prenons notre dernier repas en Irlande à Killmore Quay, là où nous avions pris notre premier repas il y a déjà 15 jours...

Ensuite, direction le bateau que nous abordons en connaisseurs: nous savons où aller et quoi faire. Nous restons sur le pont pour profiter du soleil car il fait très beau.

Environ deux heures après le départ du port, nous croisons des bancs de dauphins qui sautent de l'eau, en pleine mer. C'est la première fois que je vois ça...

Ça mérite bien deux pintes de bière (une Guiness et une Murphys) pour ne pas mourrir bête !

Vendredi 25/07/2014

carte du jour 17

Ça y est ! Nous sommes en France. Le petit port de Roscof et sa criée impossible à rater nous font face. Quelques dernières instructions en anglais pour débarquer, un dernier café et nous voilà à nouveau de l'autre côté de la route pour conduire. C'est terminé !

Posted sam. 09 ao�t 2014 10:26:29 Tags:

Today I have been stuck by something quite strange under the Python environnement of QGis. I just wanted to open an Oracle vector layer and add it to the layer registry.

Here is what I tried (you can try it in the QGis Python Console from Extensions menu):

uri = QgsDataSourceURI()
uri.setConnection("","1521", "geobase", "user", "password")
uri.setDataSource("SCHEMA","TABLE",
v = QgsVectorLayer(uri.uri(), "MY_LAYER", "oracle")
QgsMapRegistry.instance().addMapLayer(v, True)

When launching the addMapLayer method, nothing moves on QGis interface and after a bit of digging in the log messages, I found nothing suspicious...

I tried to grab the state of the layer. You can do it with the isValid method which is inherited from the QgsMapLayer class. With all of the layers I tried to open, v.isValid() always returned False.

I tried to use the error() method which returned a QgsError object to try to find why my layer was invalid. But v.error().message() was always empty.

I remembered that I've got a special layer in my Oracle database. It is the only one which is well declared in Oracle metadata table (ALL_SDO_GEOM_METADATA view). When I tried the above lines code, I was able to open the layer in QGis map dialog. This special layer just have a well declared SRID, a well declared extent and stores only one type of geometry (Polygon).

I immediately struggle in QGis Python Console to find how to force a CRS for a QgsVectorLayer. The only way I found was to use the setCrs() method directly from the QgsVectorLayer class:

uri = QgsDataSourceURI()
uri.setConnection("","1521", "geobase", "user", "password")
uri.setDataSource("SCHEMA","TABLE",
v = QgsVectorLayer(uri.uri(), "MY_LAYER", "oracle")
v.setCrs(QgsCoordinateSystem(u"EPSG:27562")

But declaring the CRS is finally not required: if there is no SRID for the layer, QGis just use the CRS of the project (it depends on what you have configured in your QGis parameters). Furthermore, adding a CRS with the above method does not change the isValid() status...

Actually, the real problem was a wkbType one. All of my unopenable layers were declared with a wkbType to WkbUnknown. After re-reading QGis API documentation, the only way I've find so far to force the wkbType of a layer is to use uri.setWkbType() method. There is no other choice.

To open a layer with multiple geometry types, you have to add a little bit of code to the above snippet:

uri = QgsDataSourceURI()
uri.setConnection("","1521", "geobase", "user", "password")
uri.setDataSource("SCHEMA","TABLE",
uri.setWkbType(QGis.WkbPolygon)
v = QgsVectorLayer(uri.uri(), "MY_LAYER", "oracle")
QgsMapRegistry.instance().addMapLayer(v, True)

It took just 3 hours of work and search to find the solution. Why not make it public ?

Posted mer. 13 ao�t 2014 18:46:35 Tags:

WANTED DEAD AND ALIVE !

Un article de blog anodin pour vous déclarer cet avis de recherche (ou de décès)...

Quelqu'un m'a piqué mon beau vélo Jean Stablinsky à Nantes durant le week-end allongé du 21 juin 2014 !

Son histoire mérite que je parle de lui publiquement... Lorsque je suis parti d'Angers, un de mes cadeaux de départ fut ce magnifique vélo des années 70 à remettre en état. Il était complet, du guidon aux roulements de pédalier, garni avec une sonette badgée "I Love my Bike" de circonstance.

Pendant mon séjour à Toulouse, je l'ai laissé de côté (comme j'ai un peu laissé tout de côté pendant que mon séjour dans le sud-ouest). Quand je suis revenu travailler à Nantes, je me suis dit que ce serait bien d'avoir un vélo pour faire les trajets gare-boulot/boulot-gare, histoire d'économiser un abonnement de transport en commun. Aussi, je me suis vite lancé dans la remise en état de l'engin pour en faire un outil de déplacement adapté à la ville.

J'ai mis près de trois week-ends pour tout reconditionner. J'ai absolument tout démonté (y compris la fourche), regraissé tous les roulements (direction/pédales/pédaliers/roues/dérailleur), nettoyé tout ce qui pouvait l'être, changé les gaines et les câbles de frein. J'ai même effectué quelques retouches de peinture sur le cadre (avec de la peinture métal blanc car je n'avais que ça sous la main). J'ai changé les patins de frein et je suis même allé jusqu'à faire fonctionner correctement la dynamo et changer l'axe de pédalier par un modèle avec moins de jeu. J'ai consacré finalement pas mal de temps pour cette remise en état complète qui sans être absolue était d'un (trop sans doute) bon niveau. Les tests routiers que j'avais fait m'ont montré qu'il ne faisait aucun bruit en roulant ce qui est souvent signe d'un bon boulot !

Mais voilà, à peine un mois après sa mise en service, je ne l'ai pas retrouvé un lundi matin !!! Des collègues m'avaient bien recommandé de prendre une place de parking vélo sécurisé au parking de la gare de Nantes mais je me suis dit que ça attendrait le début de vacances scolaires. J'avais également l'impression qu'un vélo comme ça qui coûte sans doute moins de 30€ en occasion ne risquait pas de se faire voler. Bien mal m'en a pris... C'était sans compter l'appétit pour la touche vintage qui intéresse tant les urbains qui préparent de fixies... A moins que ce soit juste un mec bourré avec une pince qui s'est barré avec sur 300 mètres avant de le balancer par dessus le trottoir.

Je ne me fais plus vraiment d'illusions: je ne retrouverai jamais mon beau vélo !

Aujourd'hui, je roule avec mon vélo habituel (qui est encore plus vieux et qui mérite une sacrée révision). Mais j'ai retenu la leçon: j'ai pris une place de parking sécurisé (30€ par an) et j'ai investi dans un vrai dispositif antivol (un U assez lourd mais assez solide). Pour me consoler, il me reste un autre vélo à retaper qui vient de Toulouse et qui est sans doute plus ancien et en meilleur état. Il me fera une machine de déplacement stylée pour pas cher...

Quand il sera terminé, il faudra bien que j'en parle un peu dans ce blog !

Posted lun. 18 ao�t 2014 18:16:29

Préambule

Pour ceux qui veulent aller vite, il suffit d'aller lire dans la partie Base de connaissance. Pour ceux qui veulent comprendre, la suite est ci-dessous...

Pour mes vacances, j'ai choisi d'explorer la côte sud de l'Irlande. Pour me diriger dans le pays, je me suis demandé si les données OSM étaient d'un niveau suffisant pour se repérer efficacement sur place. J'ai donc mené une petite expérimentation consistant à utiliser QGis sur un ordinateur portable ainsi que des fonds de plans issus d'OSM, le tout directement sur le terrain.

Pour répondre rapidement à la question des résultats de cette expérience, sachez que l'état des données OSM sur l'Irelande est vraiment d'un bon niveau. Elles sont suffisament précises, même sous la forme d'un simple fond raster pour se repérer sur la route, pour faire du shopping, pour retirer de l'argent liquide, pour se repérer dans la ville (même de petite taille), pour faire de la randonnée, pour trouver un pub ou un restaurant, etc.

Reste la question du comment ? Exploiter des données OSM sur un pays entier demande de télécharger les données pour les afficher. Vu la complexité du modèle OSM qui est plutôt un meta-modèle (un modèle de modèle), pas facile de le représenter directement à partir des informations vectorielles (stockées dans une DB PostGIS). Je n'ai pas essayé mais je pense que le rendu de ces données vectorielles est lourd sur une machine limitée en performances (un ordinateur portable de 2014). De plus, il faut passer beaucoup de temps pour styler les objets. Je me suis donc simplement fixé l'objectif de générer des dalles raster qui correspondent à celles qui sont récupérées depuis les serveurs de tuile de la fondation (qui permettent l'affichage sur la carte dynamique du site openstreetmap.org).

Introduction

Pour ceux qui ne savent pas, les tuiles sont des dalles raster de petit format (256x256 pixels souvent) qui sont stockées sous forme de fichiers (un par dalle). Ces fichiers sont organisés dans une arborescence du type /zoom/longitude/latitude, comme par exemple: /6/234/456.png. L'intérêt de cette méthode c'est qu'une simple requête HTTP permet d'accéder à ce fichier si celui-ci est servi par un serveur Web. Pour calculer la longitude et la latitude en fonction du zoom, un algorithme assez simple a été mis en oeuvre. Ce que je viens de décrire (algorithme+règle de stockage+serveur web) est un protocole nommé TMS Son application est plutôt simple. Par exemple, QGis est capable d'accéder à ces rasters directement. Un autre exemple plus concret est celui de la carte dynamique OpenStreetMap: votre navigateur web contient une bibliothèque Javascript (Leaflet) qui se charge d'aller récupérer les tuiles en fonction de l'endroit où vous êtes situé. Leaflet sait accéder à des rasters servis par le protocole TMS.

Génerer ces dalles ou ces tuiles n'est pas si complexe que ça pour peu qu'on dispose d'un peu de puissance de calcul et qu'on ne souhaite pas zoomer trop loin tout en travaillant sur un pays à taille raisonnable. Cet article se propose de présenter une méthode pour générer des tuiles ou des dalles rasters telles qu'elles sont représentées sur le site d'OpenStreetMap. Il n'a pas la prétention de faire le tour du sujet mais l'objectif est bien de faire comprendre ce qu'on fait. Pour des raisons de facilité de déploiement, le système d'exploitation utilisé est GNU/Linux Debian Jessie. On doit pouvoir faire la même chose sous MS-Windows mais le processus sera plus compliqué, notamment parce qu'il y aura beaucoup plus d'éléments à installer et que certaines versions en ligne de commande des outils employés ne sont pas disponibles sous forme de binaires. De plus, la chaîne de traitement est complètement réalisable en ligne de commande ce qui permet de lancer et d'automatiser le travail sur un (ou plusieurs) serveur(s), sans besoin d'une interface graphique.

Au delà des données OSM, cet article permettra de vous montrer que la génération de tuiles avec des outils libres est à portée de main de tout chef de projet technique géomatique ou même à l'amateur éclairé. Si vous avez du contenu propre (qui vous appartient), vous pouvez donc monter un service TMS à moindre frais tout en maîtrisant complètement ce que vous faîtes.

La méthode

Le principe est assez simple. On souhaite fabriquer de la donnée raster à partir de données vectorielles publiquement disponibles. La communauté OSM a développé un grand nombres d'outils pour réaliser ce travail. Ces outils sont utilisés sur la chaîne de production d'OSM pour afficher la carte dynamique du même nom. Ils sont donc largement éprouvés. Je me suis d'ailleurs cantonné à rester au plus proche de ce que la fondation fait histoire d'être sûr d'avoir des résultats.

Voici une petite synthèse du déroulement de la génération des tuiles:

  • Le premier acte, c'est de télécharger les données publiques d'OSM.
  • Une fois ces données récupérées, il faut les charger dans un stockage adapté. Ce sera une base PostGIS.
  • Après le stockage, il nous faut un outil pour générer des tuiles. L'outil de l'état de l'art se nomme MapNik.
  • Ce dernier est en fait une bibliothèque qui dispose de nombreux bindings (en Python notamment).
  • Il nous faudra donc un outil de génération qui s'appuie sur MapNik. Celui que j'ai utilisé se nomme generate_tiles_multiprocess.py. J'ai également employé Nik4 pour générer des dalles rasters en plus des tuiles.
  • Un détail d'importance: pour passer du vectoriel au raster, il faut indiquer quel est le style du rendu. MapNik utilise un fichier de définition de rendu sous la forme d'un fichier XML.
  • Le fichier de style de rendu officiel d'OSM est lui-même généré par un outil: carto-css.
  • Carto-css est une tentative de définition de styles via des règles CSS. C'est une sorte de GéoCSS. Il a donc besoin de fichiers CSS. Ces derniers sont disponibles sur le compte github d'OSM.
  • On a donc les outils, les données, les styles, on peut générer les tuiles et les dalles.
  • Ensuite, il faudra configurer QGis pour accéder aux dalles et aux tuiles.

Un petit schéma s'impose pour mieux visualiser le processus:

TODO: Ascii Art schema

Recette à suivre pour la génération de tuiles

Preparation d'une base PostGIS

Je vais aller très vite sur ce point. L'article n'a pas vocation à présenter PostGIS, ni à indiquer comment on configure l'ensemble. Pour éviter d'être sec, je présente une méthode simpliste, qui privilégie la faible durée de mise en place, mais qui fonctionne. La sécurité est bien sûr complètement à revoir.

On commence par installer postgresql et PostGIS:

# aptitude install postgresql-9.3-postgis-2.1

Ensuite, on peut créer une base de données spatiale (nommée geobase) et on y ajoute les bonnes extensions. D'abord postgis qui permet d'installer les fonctions PostGIS et ensuite hstore dont MapNik a besoin pour requêter efficacement la base.

# su postgres
$ createdb geobase
$ psql -d geobase -c "CREATE EXTENSION postgis;"
$ psql -d geobase -c "CREATE EXTENSION hstore;"

Pour des questions de rapidité, j'ai donné un accès total à toutes les bases à l'utilisateur postgres en localhost. C'est juste pour faire l'économie de création d'un utilisateur et de la gestion des droits qui va avec (je ne fais pas un cours PostgreSQL). Modifiez votre fichier /etc/postgresql/9.4/main/pg_hba.conf et vérifier que vous avez au moins les lignes suivantes:

local   all             postgres                                trust
host    all         postgres         127.0.0.1/32       trust
host    all         postgres         ::1/128            trust

Installation des outils indispensables présents sous Debian

Debian met déjà à disposition des outils dont nous avons besoin. Pas besoin d'aller les chercher sur Internet, il suffit de mobiliser les serveurs de dépôt de la distribution.

Ici, on a besoin de GDAL pour mapnik. Il nous faut également MapNik, carto-css (qui a pour nom node-carto dans Debian) ainsi que l'utilitaire de chargement de données OSM dans PostGIS, osm2pgsql:

# aptitude install gdal-bin mapnik-utils osm2pgsql node-carto phyton-shapely

Téléchargement des données de base et des outils externes

Nous allons d'abord préparer un répertoire qui va contenir les données sources ainsi que les outils externes de la distribution Debian. Ce répertoire sera nommé osm_tiles. Il contiendra des outils présents dans le répertoire tools:

$ mkdir -p ~/osm_tiles/tools
$ cd ~/osm_tiles

Il nous faut maintenant les styles officiels qui sont utilisés par OpenStreetMap pour la génération de tuiles. Ils sont disponibles en ligne sur GitHub. Il suffit donc de les rapatrier pour pouvoir s'en servir:

$ git clone https://github.com/gravitystorm/openstreetmap-carto
$ cd openstreetmap-carto

Maintenant, nous pouvons télécharger l'outil generate_tiles_multiprocess.py. Ce script Python se charge de générer les tuiles tout en parralélisant le travail sur plusieurs files simultanées. Si vous avez un processeur avec plusieurs coeurs, cela permet de les faire fonctionner et d'augmenter un peu plus les performances. Donc même si le script est en Python, il reste néanmoins assez performant et tire parti du multi-coeur (ce qui, en 2014 est souvent un constat sur la majorité des machines modernes, y compris ARM):

$ wget http://svn.openstreetmap.org/applications/rendering/mapnik/generate_tiles_multiprocess.py
$ chmod 755 generate_tiles_multiprocess.py

En plus des styles, il faudra télécharger des données de base. Ces dernières vous permettront d'afficher les zooms à partir de 0. En effet, lorsque vous générez des tuiles, vous utilisez les données que vous avez incorporées dans votre base PostGIS. Néanmoins, si on se contente de ces données, il sera impossible d'afficher les premiers niveau de zoom. Il faut donc des données (dites de base parce qu'elle ne concerne que les premiers niveaux de zoom) soient présentes pour pouvoir générer l'image du globe terrestre qui correspond au niveau de zoom 0. De plus, les fichiers de style d'OSM ont recours à ces fichiers de base donc si l'on souhaite les utiliser tels quels, il faudra récupérer ces fichiers. Les fichiers qu'on a récupéré depuis GitHub contiennent un script qui va se charger de télécharger ces données de base, les décompresser et effectuer une préparation minimale (quelques modifications pour les rendre compatibles avec les styles d'OSM).

$ ./get-shapefiles.sh

Une fois les styles, l'outil et les données de base téléchargés, il reste à télécharger les données d'OSM. Vous pouvez aller sur le site geofabrik.de qui rencense les jeux de données librement accessibles. Pour ma part, c'est celui de l'Irlande:

$ wget http://download.geofabrik.de/europe/ireland-and-northern-ireland-latest.osm.pbf

Maintenant, il reste à importer ces données dans notre base PostGIS.

Import des données d'OSM dans une base PostGIS

Nous allons injecter les données dans la base de données geobase que nous avions créée auparavant. OSM propose un outil pour ça: osm2pgsql(installé par le paquet debian du même nom). Son utilisation est assez simple:

$ osm2pgsql -k -c -S openstreetmap-carto.style -d geobase -U postgres ireland-and-northern-ireland-latest.osm.pbf

On utilise un fichier de style de base fourni par ce qu'on a récupéré depuis GitHub. Ce fichier permet d'affecter un style par défaut aux objets OSM qui seront stockés dans la base PostGIS. Les autres options sont connues:

  • -d: indique quelle base de données utiliser (geobase dans notre exemple)
  • -U: indique quel utilisateur ser employé pour la connexion à la base (postgres dans notre exemple)
  • -c: indique qu'on va créer de nouvelles tables et qu'il ne s'agit pas d'un ajout

Enfin, le dernier paramètre est le nom du fichier .pbf qui contient les données brutes compressées d'OSM.

Compiler les fichiers carto-css en style MapNik

Comme je l'avais déjà évoqué plus haut, MapNik utilise un fichier de style dans son format propre. Il ne sait pas lire les styles carto-css. Il faut donc compiler ces derniers pour obtenir un fichier de style mapnik. Le fichier de style au format carto-css qui nous intéresse se nomme project.mml.

Les fichiers carto-css sont assez complets, notamment, il contiennent de quoi accéder à la donnée. Par exemple, on doit indiquer dans ces fichiers que telle couche est contenu dans telle table PostgreSQL (en général, c'est même carrément une requête SQL). Il nous faut donc changer le mode d'accès par défaut et renseigner les bons éléments de connexion pour indiquer que le serveur est accessible via localhost, que notre base de données s'appelle geobase et qu'on va y accéder par l'utilisateur postgres (pas bien) sans mot de passe (encore plus pas bien).

Une simple manipulation par sed permet de s'en sortir sans devoir éditer le fichier à la main, ce qui se révèle assez fastidieux vu le nombre de couches à changer:

$ sed -i '/"dbname": "gis"/c \\t"dbname": "geobase"' project.mml
$ sed -i '/"dbname": "geobase"/ i \\t"user": "postgres", \n\t"host": "localhost",' project.mml

Une fois ces corrections réalisées, on peut générer le fichier de style MapNik avec le compilateur carto-css qui se nomme simplement carto:

$ carto project.mml > mapnik.xml

Il reste enfin un dernier nettoyage à faire dans le fichier mapnik.xml: celui des polices. En effet, le fichier généré indique un grand nombre de polices de caractères requises pour générer les tuiles. C'est notamment utile lorsqu'on souhaite gérer des alphabets différents (mandarin, japonais, etc.). Je vous conseille de supprimer toutes les polices indiquées sauf la police DejaVu car, en règle générale elle est installée par défaut sur les systèmes d'exploitation GNU/Linux, ce qui n'est pas le cas des autres.

Déterminer l'emprise géographique à générer et les seuils de zoom

Lorsque vous allez générer des tuiles ou des dalles raster, il faudra indiquer dans quelles limites de carte vous souhaiter opérer. C'est un pré-requis car l'outil generate_tiles_multiprocess ne peut fonctionner sans. Dans notre cas, il faudra récupérer les coordonnées de la zone qu'on souhaite exporter, c'est à dire l'emprise de l'Irlande (ou d'un peu moins si vous explorez juste le sud ou le nord).

De même, il vous faudra déterminer de quels niveau de zoom vous avez besoin. Plus le zoom est important, plus le niveau de détails sera fin, plus il y aura de tuiles à générer. Pour ma part, je suis descendu au niveau 17.

Pour déterminer l'emprise, le plus simple est de se rendre sur la carte dynamique d'OpenStreetMap et d'utiliser l'outil Exporter. Vous pouvez choisir la zone à exporter manuellement. Ensuite, pour récupérer l'emprise dans le bon ordre, le plus simple est de récupérer l'URL de l'API overpass (en rouge):

overpass URL

Voici un exemple de cette URL pour l'Irlande: http://overpass-api.de/api/map?bbox=-10.673,51.406,-5.938,54.304 . Ce qui nous intéresse est à droite de la variable bbox.

Pour les niveaux de zoom, utilisez encore la carte d'OSM et zoomez au maximum de ce que vous voulez voir. Il suffit ensuite de relever l'URL dans la fenêtre de titre. Par exemple: http://www.openstreetmap.org/#map=18/52.44848/-9.05243. Le zoom vaut ici 18.

Génération des tuiles

Avant de lancer generate_tiles_multiprocess.py, il faut modifier la dernière partie de son code. En effet, on doit lui indiquer le fichier de style MapNik à utiliser, le répertoire qui va contenir les tuiles ainsi que l'emprise de calcul et les seuils de zoom qu'on désire obtenir. Il suffit d'avoir des lignes qui ressemblent à ce qui suit:

...
if __name__ == "__main__":

    home = os.environ['HOME']
    try:
        mapfile = os.environ['MAPNIK_MAP_FILE']
    except KeyError:
           # emplacement du fichier de style MapNik
           mapfile = '/home/medspx/osm_tiles/openstreetmap-carto/mapnik.xml'
    try:
        tile_dir = os.environ['MAPNIK_TILE_DIR']
    except KeyError:
    # répertoire de stockage des tuiles
        tile_dir = '/home/medspx/osm_tiles/wtms/'

    if not tile_dir.endswith('/'):
        tile_dir = tile_dir + '/'

    #-------------------------------------------------------------------------
    # Change the following for different bounding boxes and zoom levels
    #
    # Emprise de l'irlande:
    bbox = (-10.673, 51.406, -5.938, 54.304)
    # 18 correspond à notre seuil de zoom maximal
    render_tiles(bbox, mapfile, tile_dir, 0, 18, "World")

Une fois les modifications réalisées, il n'y a plus qu'à lancer le script.

$ ./generate_tiles_multiprocess.py

Toutes les tuiles seront stockées dans le répertoire osm_tiles/wtms.

Attention, le processus de génération est très gourmand en ressources CPU et il est très long. Pour l'étendue indiquée précédemment et pour aller jusqu'au seuil de zoom, il m'a fallu plus de 48h sur un core i7 avec 8G de RAM !

Voir les tuiles avec QGis

Pour voir les tuiles avec QGis, on va émuler un serveur de tuiles qui parle TMS. La seule différence c'est qu'on va se passer du serveur Web. En effet, tout est stocké dans un répertoire. Donc il suffit de faire une "requête" sur une URL locale (celles qui commencent par file:// au lieu de http://).

Pour accéder à un service TMS, QGis utilise un fichier de définition. Ce dernier est un fichier XML avec quelques balises adaptées. Sans entrer dans les détails du service TMS, sachez que celui-ci utilise souvent une projection spécifique: EPSG:3857, destinée à servir au mieux les services de tuiles dont l'emprise est mondiale. DAns notre cas, nous avons utilisé les outils de génération de tuile d'OSM qui a une emprise mondiale. Donc, même si je ne l'ai pas indiqué auparavant, sachez que la projection par défaut de nos tuiles est l'EPSG:3857.

Voici le contenu d'un fichier de définition de service TMS pour QGis:

<GDAL_WMS>
    <Service name="TMS">
        <ServerUrl>file:///home/medspx/osm_tiles/wtms/${z}/${x}/${y}.png</ServerUrl>
    </Service>
    <DataWindow>
        <UpperLeftX>-20037508.34</UpperLeftX>
        <UpperLeftY>20037508.34</UpperLeftY>
        <LowerRightX>20037508.34</LowerRightX>
        <LowerRightY>-20037508.34</LowerRightY>
        <TileLevel>18</TileLevel>
        <TileCountX>1</TileCountX>
        <TileCountY>1</TileCountY>
        <YOrigin>top</YOrigin>
    </DataWindow>
    <Projection>EPSG:3857</Projection>
    <BlockSizeX>256</BlockSizeX>
    <BlockSizeY>256</BlockSizeY>
    <BandsCount>3</BandsCount>
    <Cache />
</GDAL_WMS>

Il suffit d'en enregistrer le contenu dans un fichier et de l'ouvrir en tant que raster dans QGis. On voit que l'URL de la balise est spécialement modifiée pour accéder à des tuiles par fichiers plutôt que par une requête HTTP. Cela permet de charger la couche directement dans QGis, simplement en indiquant le répertoire où vous avez stocké les tuiles (~/osm_tiles/wtms normalement).

Attention, ce mode de consultation a quelques lacunes. En effet, nous n'avons pas généré toutes les tuiles de toute la planète (et pour cause, il faudrait quelques semaines ou mois entiers). Seules sont disponibles celles qui concernent notre "zone", c'est à dire l'emprise de l'Irlande. Si vous tentez de zommer en dehors de cette emprise, QGis va chercher les fichiers qui correspondent mais comme ces derniers n'existent pas, il va déclencher l'affichage d'un raster vide. Par effet de bord, cet affichage va corrompre les données affichées et généralement, un grand cadre noir va s'afficher. Parfois, on tombe sur un mélange plus complexe de couleurs mais qui n'ont toujours rien à voir avec ce qui devrait s'afficher (du blanc pour ce qui est vide et le reste des tuiles existantes si on est dans l'emprise).

Vous devez donc toujours prendre soin de vous trouver à un endroit où il y a des tuiles sinon vous aurez un bug d'affichage...

Autre point négatif: le chargement de la couche est un poil long. Il faut quelques secondes pour que l'affichage se charge correctement ce qui rend la navigation un peu fastidieuse pour cause de rafraîchissement intempestif.

Pour régler ce problème, on peut s'employer à générer des dalles raster plutôt que des tuiles...

Je veux des dalles raster !

Cette opération est un peu plus technique car elle a recours à une chaîne d'utilitaires un peu plus complexe et moins automatisée (même si un bon administrateur système doit savoir gérer ça sous forme d'un bon script shell des bois).

Pour générer des dalles raster plutôt que des tuiles, on va utiliser un autre utilitaire que j'ai légèrement hacké pour le rendre plus docile. Il se nomme Nik4 et il est disponible sur GitHub également. Vous trouverez la version modifiée ici

Le hack permet de faire en sorte que Nik4 génère des dalles de gros volume en effectuant son travail par découpage de la plus grande zone qui peut tenir en mémoire. Il génère alors des fichiers Tiff qu'on peut ensuite assembler dans un fichier vrt (raster virtuel). Attention, Nik4 ne travaille qu'avec un niveau de zoom. Il faudra donc lancer la commande autant de fois qu'il faut pour chaque niveau de zoom. Pour disposer de la même couverture qu'avec les tuiles, il faudra recommencer l'opération 18 fois (18 niveaux de zoom).

Voici le principe de fonctionnement de la génération de dalles:

  • On demande à Nik4 de générer une dalle sur une emprise donnée à un seuil de zoom donné avec un fichier de style mapnik.
  • Nik4 génère un ensemble de dalles raster au format Tiff nommée en fonction d'un paramètre de lancement.
  • Pour chacune des dalles raster, Nik4 génère un fichier worldfile qui permet d'indiquer les coordonnées d'emprise du raster individuel.
  • Une fois le travail de Nik4 terminé, on va générer un fichier de raster virtuel.

Je vous montre à quoi ça ressemble:

$ ../Nik4/nik4.py -b -10.673 51.406 -5.938 54.304 -z 14 mapnik.xml ireland.tiff --wld ireland.wld --tiles 4

Avec cette commande, on demande à Nik4 de:

  • Travailler sur l'emprise -10.673 51.406 -5.938 54.304
  • à un zoom de 14
  • d'utiliser le fichier de style nommé mapnik.xmk
  • de générer des fichiers dont le nom sera basé sur ireland.tiff (ça donnera ireland_0x0.tiff par exemple)
  • de générer des fichiers worldfile basé sur le nom ireland.wld (un par dalle découpée)
  • d'essayer d'utiliser 4 dalles pour faire le travail complet.

Sur le dernier argument, Nik4 rend la main s'il n'y a pas assez de dalles. Pour le niveau 17 par exemple, j'ai du monter cette valeur à 28 pour que tout tienne en RAM. Globalement Nik4 est un peu plus rapide que generate_tiles_multiprocess.py mais l'ordre de grandeur sera identique (compter deux jours).

Une fois un ensemble de dalles obtenu, il faut les mettre dans un répertoire. Dans mon cas, j'ai créé un répertoire par niveau de zoom. Ensuite, il suffit de demander à gdalbuildvrt de faire le travail de fabrication du raster virtuel:

$ gdalbuildvrt -a_srs EPSG:3857 Ireland_13.vrt *.tiff

Ici, on demande à gdalbuildvrt de fabriquer un raster virtuel nommé Ireland_13.vrt avec tous les tiff du répertoire courant. La projection sera ESPG:3857.

Ensuite, vous avez juste à ouvrir le fichier Ireland_13.vrt dans QGis pour profiter du niveau de zoom 13 de vos dalles OSM. L'opération est à renouveler pour chaque niveau de zoom. Plus le niveau de zoom est élevé plus la génération de dalles sera lente.

Dans la pratique, les dalles s'ouvrent nettement plus rapidement que les tuiles locales. Pour obtenir un comportement identique aux tuiles TMS qui changent en fonction du niveau de zoom, vous pouvez indiquer des échelles d'affichage mini et maxi pour chacune de vos dalles raster. De cette manière, un zoom fera disparaître une dalle et en affichera une plus détaillée (passage du zoom 13 au zoom 14 par exemple). Cette manipulation ne devrait pas venir à bout d'un utilisateur QGis de niveau intermédiaire.

Conclusion

Cet article démontre qu'il est assez facile de générer des tuiles raster à partir des données OSM. Le tout est facilement industrialisable car les outils s'exécutent tous en ligne de commande. On peut donc imaginer un système de génération automatisé de ces tuiles qui se lance tous les jours pour calculer différents jeux de tuiles. En effet, dans notre example, nous n'avons utilisé qu'un seul jeu de style: celui d'OSM. On aurait très bien pu imaginer une dizaine de jeux de styles différents, chacun se rapportant à une thématique ou à un objectif. Par exemple, vous voulez peut-être faire apparaître uniquement les contours administratifs, ou encore uniquement les zones urbaines, ou encore uniquement tout ce qui se rapporte à la préservation de l'environnement naturel, etc.

Pour réaliser des jeux de style, vous pouvez vous aider d'un outil assez sérieux sur le sujet: TileMill. Il est développé sous une licence libre par la société MapBox. Ce logiciel se veut un moyen simple et visuel de créer des styles cartographiques à partir de différentes sources (requêtes postGIS/shapefiles/etc.) et d'en générer les fichiers carto-css qui en découlent.

Pour terminer et en guise de prospective, on pourrait imaginer que QGis prenne en charge ce format carto-css. L'élaboration de ces fichiers et des tuiles qui s'y rapportent serait alors très accessible: l'utilisateur utiliserait les propriétés de style très fournies de QGis ainsi que la possibilité de ce dernier de lire un très grand nombre de formats de fichiers géographiques pour fabriquer visuellement un ensemble de cartes. Avec la chaîne de traitement (et quelques améliorations sans doute) présentée ci-dessus, une organisation pourrait alors facilement mettre en oeuvre une gamme élargie de services cartographiques Web via le protocole TMS avec peu d'efforts.

Posted ven. 22 ao�t 2014 18:46:35 Tags: