Aller au contenu

Annonce

#1 25-08-2012 16:43:03

Kam
Membre
Inscription : 19-01-2011

[Cartographie] Récupération en masse de cartes sur openstreetmap

C'est bien ici la section des astuces? tongue

Je devais, comme le titre l'indique, récupérer des cartes en masse sur openstreetmap. Bien sûr, il existe Bigmap, mais malgré l'intitulé de la chose, ça n'est pas vraiment adapté à la récupération de cartes à petite échelle pour des régions entières, voire des pays. Plutôt que de passer des semaines si ce n'est des mois là-dessus, j'ai écrit un petit script pour automatiser tout cela, que je poste ici. Par contre, c'est de la ligne de commande. Je ne pense pas que ça dépaysera ceux qui sont sous Linux, mais pour les autres, il faudra s'y faire (il n'y a rien de compliqué). wink

Installation

Tout d'abord, téléchargez le script ici, et décompressez-le où vous voulez (avec 7zip éventuellement si ça passe mal sous Windows).

Ensuite comme le script a été écrit en Perl, il va falloir installer cela.

1) Sous Linux

Rien à faire Perl est déjà installé. Par contre, pour certaines distributions, il faudra installer un module complémentaire, à savoir GD. Sous Ubuntu / Mint:

sudo apt-get install libgd-gd2-perl

2) Sous Windows

Un informaticien pourrait poster la marche à suivre en détails? Je n'y connais rien...

D'après ce que je crois comprendre, Perl n'est pas installé par défaut, et il faut installer quelque chose dans ce genre (à compléter).

Utilisation (prise en main)

Pour lancer le script, tapez simplement dans une console:

perl 'chemin/du/script/osmdl.pl'

Pour l'instant, il ne fait rien, c'est normal. Il faut spécifier quelques arguments pour qu'il sache quoi faire. Pour une utilisation basique (et la plupart d'entre vous pourront s'arrêter là), il s'agira juste de récupérer les cartes par défaut d'un coin donné.

Dans le répertoire "Monde" du dossier que vous avez téléchargé se trouve un fichier appelé "zoom13.png", représentant un planisphère découpé en carrés:

5428_osm1.jpeg

Dans chaque carré se trouve un chiffre (pas toujours super lisible, désolé, mais les chiffres se suivent, donc ça n'est pas difficile de deviner le bon). Il suffit de récupérer le numéro de la zone que vous voulez télécharger, et de l'ajouter à la ligne de commande:

perl 'chemin/du/script/osmdl.pl' --id=<le numéro>

Par exemple, pour la région Centre:

perl 'chemin/du/script/osmdl.pl' --id=10347

Le script va alors créer 36 images pour la zone dans le répertoire /Cartes/13 (36 images sans cela l'image créée serait immense, de l'ordre de 16000x16000 pixels). Le téléchargement peut prendre du temps: il y a 48*48 images à télécharger et à assembler. Pour ceux qui se poseraient la question, le '13' correspond à la taille du zoom utilisé. Il est possible de le changer, cf plus bas - les cartes se trouveront alors dans un autre dossier.

Le rendu ressemble à ça (tout petit extrait de carte, et la qualité de l'image est moindre ici):

5428_osm2.jpeg

NB: '13' est le zoom par défaut, et le degré de précision est suffisant pour afficher tous les chemins. Cependant, toutes les régions du globe ne peuvent pas être zoomées jusqu'à ce niveau. Voir les autres options plus bas si ça vous arrive.

Voilà, c'est à peu près tout ce qu'il y a à savoir pour une utilisation de base.

Utilisation avancée

Le script accepte également les options suivantes, afin d'aller plus loin (attention à ne pas mettre d'espace après le signe égal pour les options demandant une valeur):

  • --zoom= suivi d'une valeur comprise entre 7 (le plus large) et 13 (le plus précis). En fait, le zoom va de 1 à 18, mais pour aller au-delà, il vous faudra générer vous-même vos fichiers de config (cf plus bas l'option "--generate"). Un zoom de niveau 13 semble le plus adéquat pour la marche. C'est à partir de ce seuil que les sentiers sont affichés. Par contre, toutes les régions du globe ne peuvent pas être zoomée autant. Dans ce cas, les images générées seront vierges. Utilisez l'option "--source" pour utiliser les cartes d'un autre site si ça vous arrive (NB: ça ne devrait pas être le cas pour la France).


    Le zoom par défaut est à 13. C'est ce qui sera utilisé si vous n'utilisez pas cette option.

    Voici un petit aperçu de carte zoomée à 10 à titre de comparaison:

5428_osm3.jpeg

  • --ext= suivi du format des images générées (png ou jpg) - ne fonctionne pas pour l'instant: tout est sauvegardé en png.

  • --source= suivi de l'URL de la source de téléchargement. Vous pouvez trouver un certain nombre d'URL dans le tableau sur cette page. Le script s'attend à recevoir une URL comme affichée sur la page, sans la partie "/zoom/x/y.png" (ex: 'http://tile.opencyclemap.org/cycle' - sans les apostrophes).


    La source par défaut est opencyclemap relief. Elle présente l'énorme avantage d'avoir des courbes de dénivelé, mais elle a plusieurs inconvénient: zoom à 13 impossible dans pas mal de coins reculés, les couleurs sont parfois difficiles à lire, surtout en noir et blanc, et enfin avec certains zooms, la carte affiche le nom des villages, voire des quartiers, mais pas des villes (sic). openstreetmap quant à lui n'affiche pas le relief mais est beaucoup plus précis pour tout le reste.


    Au lieu d'indiquer une URL, vous pouvez aussi utiliser un chiffre de 0 à 3 correspondant à des présélections: 0 pour opencyclemap relief, 1 pour opencyclemap classique, 2 pour openstreetmap, et 3 pour hikebike.

    Vous pouvez préciser plusieurs sources de téléchargement, séparées par une virgule. Attention à ne pas insérer d'espaces avant ou après celle-ci!


    Un rendu de carte d'openstreetmap:

5428_osm4.jpeg

  • --split= suivi d'un chiffre. Par défaut, les zones choisies sont découpées en 6 en largeur ET en hauteur pour créer 36 cartes, afin de diminuer leur taille. L'option --split permet de changer ce comportement. --split=1 annulera le découpage automatique pour produire une seule carte immense (mieux vaut avoir alors un bon ordi pour la générer, le mien ne pourrait pas). --split=4 à l'inverse découperait la zone en 4 en largeur et en 4 en hauteur, créant donc ainsi 16 images. Vous avez compris la logique. Le défaut, comme dit plus haut, est à --split=6.

  • --id= suivi d'un numéro de carte. On en a parlé plus haut. Celui-là est obligatoire si vous voulez télécharger des cartes. Pensez que si vous avez changé le zoom par défaut, vous devrez récupérer les numéros de carte dans le fichier correspondant (ex: /Monde/zoom10.png pour un zoom à 10).


    Vous pouvez aussi spécifier plusieurs cartes à télécharger en même temps. Il suffit de séparer les numéros par une virgule (ex: --id=456,789,890 pour télécharger ces 3 cartes). Attention à ne pas laisser d'espace avant ou après la virgule!

  • --retry= suivi d'un chiffre. Permet de préciser combien de fois le script va retenter de télécharger une carte après une erreur 404 (défaut = 5 tentatives). --retry=10 permettra d'en faire 10, --retry=1 annulera toutes les tentatives après la première. Certains serveurs d'OSM sont par moments surchargés, donc j'ai trouvé ça utile. Sur opencyclemap classique, vous aurez surement envie de désactiver ça, et donc d'utiliser --retry=1, puisque toutes les cartes ne sont pas disponibles avec un gros zoom.

  • --tile= suivi d'un chiffre. Permet de ne télécharger que le morceau de zone spécifié. Ex: avec le découpage par défaut (36 images), --tile=36 ne téléchargera que la dernière image (en bas à droite). --tile=6 ne téléchargera que l'image en haut à droite, etc.

Enfin, il reste 2 options "pour les pros":

  • --generate (sans rien qui suit), à combiner avec l'option "--zoom". Elle permet de recréer les fichiers de configuration pour le zoom donné, et de générer une nouvelle carte du monde pour le zoom en question. Utile quand vous changez l'option "$width" directement dans le fichier (cf plus bas).

  • --dontburnmypc: à utiliser exclusivement avec --generate. C'est juste un truc qui ralentit l'exécution du truc pour éviter que l'ordi ne surchauffe et s'éteigne (pour les vielles bécanes comme la mienne). Mais du coup, vous avez le temps d'aller mater un film si c'est combiné avec un zoom élevé. smile

Exemple avec ces options:

perl 'chemin/du/script/osmdl.pl' --id=1034,1035,1036 --source=2 --split=4 --zoom=11

Ce code va télécharger les cartes des régions 1034, 1035, et 1036 avec un zoom à 11 sur openstreetview et produire pour chaque zone 4*4 = 16 images. Pas si compliqué au final, si?

Changer les valeurs par défaut

Dernier point: si jamais vous voulez changer les valeurs par défaut comme le zoom à 13 ou opencyclemap, il suffit d'ouvrir le fichier "osmdl.pl" avec un éditeur de texte type Wordpad ou Notepad++ (pour éviter les problèmes de fins de ligne) et de modifier les valeurs des premières lignes. Les intitulés devraient aller de soi, à part pour l'option "$width". Celle-ci correspond au nombre d'images en largeur et en hauteur assemblées pour créer une "zone" (un carré sur la carte du monde). Plus la valeur est petite, et plus il y a aura de carrés sur la carte du monde, jusqu'à la rendre parfois illisible. Plus la valeur est élevée, et moins il y en aura, mais plus les téléchargements seront long et plus les images seront grandes.

Si jamais vous décidez de changer cette valeur, il vous faudra recréer toutes les cartes du monde et les fichiers de config avec la commande --generate (une fois pour chacune des tailles de zoom).

-------------------------------------

Voilà, j'ai été super long - je crois même que tout ça est plus long que le script en question. wink

En espérant que ça serve à quelqu'un. N'hésitez pas s'il y a des bugs. C'est juste un premier jet fait à l'arrache.

Dernière modification par Kam (04-11-2012 19:57:43)

Hors ligne

#2 25-08-2012 17:50:26

Shanx
Sanglier MUL
Lieu : Probablement au boulot :(
Inscription : 22-04-2012
Site Web

Re : [Cartographie] Récupération en masse de cartes sur openstreetmap

Je ne sais pas si ça peut concerner d’autres personnes que moi, mais sous Archlinux il faut installer le paquet perl-gp.
J’ai été très surpris du poids du .zip que tu donnes à télécharger: 44Mo pour un script, c’est pas courant (mais ce sont les images du monde qui sont lourdes).

J’ai testé le script. Effectivement, c’est long. C’est dommage, ça je n’avais besoin que de la 4ème et dernière image… Peut-être pourrais-tu faire afficher par le script où il en est (tel pourcentage de telle image)? (Je ne connais que les bases en perl, m’en étant servi que pour de petits scripts pour certains logiciels, donc je ne sais pas si c’est faisable facilement).
Sinon c’est bien pratique, même si je ne m’en servirais pas: openstreetmap est pour moi de bien moins bonne qualité que les cartes de l’ign…


← Mon blog : traversées à pied des Alpes, de l'Islande, de la Corse, des États-Unis - Japon en vélo
Mon trombi
"Heureusement qu'il y a RL pour m'éviter les genoux qui craquent et le dos en compote" - C. Norris
"La liberté est fille des forêts. C'est là qu'elle est née, c'est là qu'elle revient se cacher, quand ça va mal." - Romain Gary

Hors ligne

#3 25-08-2012 18:08:12

Kam
Membre
Inscription : 19-01-2011

Re : [Cartographie] Récupération en masse de cartes sur openstreetmap

Oui, c'est vrai j'aurais dû prévenir pour le poids du zip (et désolé pour l'hébergement chez Free). En fait, les cartes du monde peuvent être générées par le script, mais c'est des opérations assez lourdes, et il faut le faire pour chaque niveau de zoom, du coup je me suis dit que 40 ou 45Mb, ce n'était pas grand-chose à télécharger (mon ordi n'est plus tout jeûne, mais si tu savais le temps qu'il m'a fallu pour que le script génère la carte du monde 13... wink).

Oui, je pourrais indiquer le pourcentage d'avancement, bonne idée. Pour la longueur, c'est vraiment le téléchargement qui prend du temps. Le script est fait pour travailler sur de grandes zones, pas à l'échelle locale, du coup, avec les options par défaut, c'est 2304 images de 256x256 px à télécharger par zone. Mais bon, après, ce n'est pas non plus comme s'i fallait deux heures pour générer une carte...

Pour des zones plus restreintes, BigMap que je citais dans mon premier post est tout à fait utilisable (voire préférable).

+ 1 pour IGN (encore que vers chez moi en tous cas, au niveau des sentiers openstreetmap vaut - presque? - une TOP25, par contre le bas blesse au niveau des lieux dits ou des noms de hameaux). Mais si j'ai été voir du côté d'osm, c'est justement que j'avais besoin de cartes hors de France, et là, c'est une bénédiction. Je n'aurais jamais pu trouver de cartes, même papier, aussi détaillées je crois. Ou tout du moins, ça aurait été une galère pas possible pour un résultat équivalent (sans parler du fait que là c'est gratuit).

Dernière modification par Kam (25-08-2012 18:10:43)

Hors ligne

#4 25-08-2012 18:29:19

polochon777
Membre
Inscription : 09-09-2010

Re : [Cartographie] Récupération en masse de cartes sur openstreetmap

J'ai lu rapidement le sujet, mais ces 2 sites ne suffisent pas à ton bonheur?
- http://download.geofabrik.de/osm/
- http://garmin.openstreetmap.nl/

Hors ligne

#5 25-08-2012 19:21:23

Kam
Membre
Inscription : 19-01-2011

Re : [Cartographie] Récupération en masse de cartes sur openstreetmap

Il s'agit dans ce que tu mets en lien de cartes GPS [EDIT] (*)  [/EDIT], pas d'images exploitables (sans GPS ou sans faire un rendering comme ceux que font les site en ligne du type openstreetmap.org justement)...

(*) Supprimé par peur de raconter n'importe quoi.

Dernière modification par Kam (25-08-2012 19:43:09)

Hors ligne

#6 25-08-2012 21:20:39

polochon777
Membre
Inscription : 09-09-2010

Re : [Cartographie] Récupération en masse de cartes sur openstreetmap

ah ok, en fait tu souhaites avoir un ou plusieurs jpg à la fin de ton traitement? Histoire de visualiser ça sur n'importe quoi sans sans avoir de GPS? (APN, PC, etc...)

Hors ligne

#7 27-08-2012 14:49:46

Kam
Membre
Inscription : 19-01-2011

Re : [Cartographie] Récupération en masse de cartes sur openstreetmap

En l'occurrence, il s'agissait effectivement de générer des images directement exploitables pour d'une part préparer un trajet à la maison sur le PC (et pouvoir éditer les cartes: surlignement, annotations etc), et d'autre part pouvoir les utiliser sur liseuse si le test est concluant.

Le choix de cette méthode et de la source (openstreetmap), comme je le disais plus haut, vient du fait que les régions en question sont assez désertes, et les ressources d'osm sont vraiment inespérées pour moi. L'autre avantage est que ce script permet de générer des cartes à tout moment. Ca n'a pas vraiment d'intérêt dans le cadre d'une sortie sur quelques jours, mais là c'est en vue d'un trip au long cours (ça y est, j'ai vendu la mèche, même s'il n'y a encore rien de certain - j'attends de passer un concours avant smile), et du coup, cela permet d'avoir des cartes actualisées où l'on veut, quand on veut.

La première fois que je suis parti au long cours, je devais me débrouiller avec les cartes vendues chez les buralistes, souvent pas détaillées pour un sou, ce qui a fait que j'ai bouffé pas mal de goudron. Parfois, je partais sur des chemins "à l'aveuglette", mais quand même, ce n'était pas la panacée. Là, un script comme celui-ci combiné à une liseuse, pour peu encore une fois que les tests soient concluants, serait une petite révolution pour moi. Affaire à suivre.

Sinon, j'ai modifié quelques trucs au script, pour autoriser le téléchargement sur plusieurs sources en même temps, rajouter des pourcentages pour le téléchargement, et permettre de télécharger directement une seule des cartes par zone (cf le pb de Shanx). J'ai d'autres idées en tête, notamment pour permettre de télécharger des zones plus restreintes, même si ce n'était pas le concept du script - je verrai comment ça se met en place. Je posterai une version actualisée de la chose quand ce sera fait (ailleurs que chez Free, promis).

EDIT -

Shanx a écrit :

sous Archlinux il faut installer le paquet perl-gp

Tu es sûr que ce n'est pas perl-gd? Je rajouterai ça au post initial.

Dernière modification par Kam (27-08-2012 15:01:03)

Hors ligne

#8 27-08-2012 20:13:33

pierrot22
marcher pour voyager
Lieu : Rennes
Inscription : 19-10-2008
Site Web

Re : [Cartographie] Récupération en masse de cartes sur openstreetmap

Ca a l'air super intéressant tout ça smile

Mon idée est peut-être irréalisable, mais ces cartes sont vectorielles je suppose. Est-il envisageable de télécharger non pas les images (jpeg ou png) générées à partir des données vectorielles, mais carrément les données vectorielles (comme une carto de GPS) puis de reconstruire les images sur PC à partir de ces données ? J'imagine que la consommation de connexion serait plus faible, ce qui le rendrait peut-être exécutable en voyage sur un wifi de faible débit.

Et j'imagine aussi que s'il était possible de télécharger ces données vectorielles par un bête "enregistrer sous" depuis un PC de cybercafé, il suffirait de transférer ensuite ces données dans une tablette ou un smartphone via une carte mémoire, pour générer les images directement sur sa tablette ou son smartphone, qui aura une puissance de calcul souvent largement supérieure aux PC de cybercafé préhistoriques et truffés de virus qu'on trouve dans pas mal de pays.

Je rêve tout haut, mais à partir du moment où les données sont "ouvertes", peu de choses sont impossibles, encore faut-il avoir le temps et les connaissances smile

Hors ligne

#9 28-08-2012 12:35:43

Kam
Membre
Inscription : 19-01-2011

Re : [Cartographie] Récupération en masse de cartes sur openstreetmap

Non non, tu ne rêves pas. C'est effectivement l'une des solutions que j'avais envisagées, et que j'avais écartée pour les raisons que tu évoques plus haut: ça peut être difficile à mettre en place sur un ordi de cyber-café antédiluvien (ou peut-être même sur mon ordi à la maison - à voir). Par ailleurs, cette option semblait aussi beaucoup plus complexe à installer (erreur de penser ça comme souvent: au final je me suis retrouvé avec un truc encore plus complexe puisque j'ai dû écrire le script wink).

Le wiki d'osm est assez fourni, et cette page devrait t'intéresser. Je pense que le moteur de rendu le plus adapté pour ce genre de choses serait Maperitive.

D'ailleurs, procéder de la sorte aurait pas mal d'avantages d'après ce que j'ai rapidement lu: ça te permet d'imposer tes propres règles pour le rendu, comme par exemple changer la couleur des routes et chemins sur une base type opencyclemap pour les rendre plus visibles, ou modifier le niveau de zoom pour afficher tel ou tel élément (ex: afficher les sentiers avec un zoom à 11 ou 12 au lieu de 13 pour avoir des cartes moins grandes).

Bref, j'essaierai à l'occasion.

Hors ligne

#10 28-08-2012 13:09:00

pierrot22
marcher pour voyager
Lieu : Rennes
Inscription : 19-10-2008
Site Web

Re : [Cartographie] Récupération en masse de cartes sur openstreetmap

... peut-être même de pouvoir combiner les données de openstreetmap pour la topo avec opencyclemap pour les courbes de niveau avant de faire le rendu.

effectivement c'est intéressant, je vois que des solutions existent déjà pour ce que je dis, je m'en doutais smile . Maperitive semble bien coller, d'après ce que j'en comprends il fonctionne en "portable" sans installation et sans prérequis type sql ou perl, ça peut être bon ça pour un usage sur clé USB. A essayer...

Ce qui me parait intéressant dans une application "nomade", c'est de pouvoir dissocier la partie téléchargement, qui doit se faire le plus rapidement possible et consommer le moins de débit possible, sans installation, pour pouvoir le faire dans un cybercafé, et la partie traitement qui devrait pouvoir s'effectuer également sur un terminal android ou i-phone, sans avoir à payer le cybercafé donc et avec une puissance de calcul supérieure à un mauvais cybercafé.

Ca ne m'étonnerait pas que liseuses évoluent vers un affichage couleur et une compatibilité avec les applications Android, pour devenir des genres de tablettes tactiles à encre numérique.


L'idée que j'ai derrière la tête pour un long voyage (projet à horizon 2016-2018, ma copine a des impératifs scolaires d'abord), c'est de partir avec une tablette tactile light mais puissante, ou un smartphone puissant, qui permettrait de faire pas mal de choses au fur et à mesure, notamment trier/travailler les photos, taper le carnet de bord, et générer les cartes à envoyer dans un petit GPS ou à imprimer.

D'ici là, les choses auront sans doute évolué donc j'ai encore largement le temps, mais il n'est pas trop tôt pour commencer à regarder smile

Hors ligne

#11 28-08-2012 13:28:55

Kam
Membre
Inscription : 19-01-2011

Re : [Cartographie] Récupération en masse de cartes sur openstreetmap

Je n'ai pas de liseuse, mais je me suis un peu renseigné là-dessus en vue d'un achat, et d'après ce que je comprends, au moins la petite de Sony peut être rendue compatible Androïd après une manip' ("rooter" sa liseuse - je te laisse chercher sur Google si ça t'intéresse, je n'ai fait que survoler la chose).

EDIT - http://forum.hardware.fr/hfr/gsmgpspda/ … tm#t939924

RE-EDIT - Par contre, pour les dépendances de Maperitive, d'après ce que je comprends, il faut Java d'installé. Je ne connais pas ce langage - il faudrait voir s'il y a des solutions portables.

Dernière modification par Kam (28-08-2012 19:52:07)

Hors ligne

#12 28-08-2012 20:09:19

suo0
Membre
Inscription : 05-08-2010

Re : [Cartographie] Récupération en masse de cartes sur openstreetmap

Les rendu depuis les donnée OSM c'est lourd tres lourd ... le volume des données vectorielles est important voir tres important meme pour des petites zones. C'est la raison de lapublication des carte essentiellement a base de slippy map rasterizé.

Pour s'exercer avec les style de rendu envisageable, vous pouvez essayer tilemill http://mapbox.com/tilemill/

Sinon Locus permet d'afficher les carte vecto OSM ... mais a priori c'est assez lourd.

Dernière modification par suo0 (28-08-2012 20:15:05)

Hors ligne

#13 29-08-2012 19:16:09

Kam
Membre
Inscription : 19-01-2011

Re : [Cartographie] Récupération en masse de cartes sur openstreetmap

Bon je confirme, je viens d'essayer Maperitive sur ma vielle bécane, et c'est du très lourd.

J'ai essayé 3 zones:
- carte complète de l'Argentine (donc très grande): mon ordi a surchauffé et s'est éteint.
- carte du Guatemala: j'y étais presque mais.. même chose - la carte n'a pas fini de charger avant que mon ordi décide une nouvelle fois de s'immoler par le feu.
- carte de Bélize: là, c'est passé.

Je précise encore une fois que mon ordi est très vieux, mais c'est au final une bonne chose je pense si on part dans l'optique d'utiliser ça dans des cyber-cafés à l'étranger.

Maintenant, pour ce qui est du "travail" sur les cartes, tout ce dont on parlait plus haut est effectivement possible: superposition de données provenant de plusieurs sources, changement des couleurs des différents éléments, changement du zoom minimum pour afficher tel ou tel élément (comme les sentiers), etc.

Par contre, j'ai remarqué une chose en affichant les reliefs: c'est que pour ce faire, le script télécharge des données en plus de celles contenues dans le fichier .osm (les données vectorielles de base). Du coup, ce que voulait faire Pierrot semble compromis, à moins de mettre les mains dans le cambouis et de modifier le code pour importer ces données d'une source locale, ce qui peut être plus compliqué qu'il n'y parait, car il faut déjà récupérer les données en question (ou alors je n'ai juste pas trouvé l'option). smile

Autre chose: certaines opérations sont extrêmement lourdes. J'ai essayé encore une fois d'ajouter des courbes de niveaux sur l'ensemble du tout petit pays qu'est Belize, et j'ai dû interrompre l'opération car ça prenait beaucoup trop de temps.

Bref, l'option de faire soi-même le rendu des cartes semble très séduisante et a vraiment du potentiel, mais dans le cadre de sorties très longues, je crois que malgré tous ses défauts, l'option que je présentais dans le premier post reste pour moi la plus viable. Je continue à regarder tout ça, et j'espère vraiment finir par contredire ce que je viens d'affirmer, mais j'en doute, malheureusement.

Dernière modification par Kam (29-08-2012 19:19:16)

Hors ligne

#14 07-09-2012 18:36:56

Kam
Membre
Inscription : 19-01-2011

Re : [Cartographie] Récupération en masse de cartes sur openstreetmap

Bon, je viens de faire une mise à jour du script, comprenant en vrac:

  • Les images téléchargées, lorsqu'une zone est découpée en plusieurs images (comportement par défaut), se trouvent désormais dans un répertoire portant comme nom le numéro de la zone au lieu d'être toutes en vrac dans le même répertoire. De plus, le nom de la source est maintenant accolé au numéro de chaque carte (opencyclemap, etc), afin de pouvoir conserver des cartes de différentes sources dans le même répertoire.

  • Chaque zone est maintenant découpée par défaut non plus en 2x2 images mais en 6x6 (36) afin de créer des images d'une taille acceptable (2048x2048 px).Vous pouvez toujours utiliser l'option --split pour changer ce comportement.

  • Ajout de l'option --tile permettant de ne télécharger que le morceau de zone spécifié. Ex: avec le découpage par défaut (36 images), --tile=36 ne téléchargera que la dernière image (en bas à droite). --tile=6 ne téléchargera que l'image en haut à droite, etc.

  • Ajout de l'option --retry permettant de préciser combien de fois le script va retenter de télécharger une carte après une erreur 404 (défaut = 5 tentatives). --retry=10 permettra d'en faire 10, --retry=1 annulera toutes les tentatives après la première. Certains serveurs d'OSM sont par moments surchargés, donc j'ai trouvé ça utile. Pas du tout testé cependant.

  • Ajout d'un pourcentage d'avancement pour le téléchargement des cartes.

  • Ajout de la source "landscape" d'opencyclemap en raccourci (--source=0). Elle devient d'ailleurs la source de téléchargement par défaut. Cette source corrige la plupart des défauts d'opencyclemap classique cités plus haut (et surement le plus important: elle affiche à la fois les courbes de niveau et les rivières). Une petite illustration:

    5428_osmud1.jpeg

  • Le numéro des cartes adjacentes apparaît désormais près des bordures de chaque carte, afin de permettre de s'y retrouver beaucoup plus facilement. Le numéro est en noir s'il s'agit de la même zone, et en marron s'il s'agit de cartes de zones différentes (illustration sur l'image ci-dessus).

Pour ceux qui ont déjà téléchargé l'archive, il suffit de télécharger osmdl.pl ici et d'écraser l'ancien fichier avec. Sinon, l'archive complète se trouve désormais ici.

Dernière modification par Kam (07-09-2012 18:45:53)

Hors ligne

#15 01-11-2012 17:17:59

polochon777
Membre
Inscription : 09-09-2010

Re : [Cartographie] Récupération en masse de cartes sur openstreetmap

Je voulais essayer le script aujourd'hui, mais ça ne marche pas chez moi  sad
Perl me dit:

Can't locate GD.pm in @INC

A priori il me manque libgd-gd2-perl.
Je suis sur un mac power PC avec une vielle version 10.5, et mon perl est un 5.8.8
A priori pas de mise à jour possible sur ma version d'OS....  sad

Dernière modification par polochon777 (01-11-2012 17:18:21)

Hors ligne

#16 01-11-2012 17:49:06

Kam
Membre
Inscription : 19-01-2011

Re : [Cartographie] Récupération en masse de cartes sur openstreetmap

Je ne connais pas du tout Mac (et le script n'a été testé que sous Linux), mais j'imagine que le module CPAN marche aussi dessus. Tu as essayé de faire un:

perl -MCPAN -e "install GD"

?

Ca te permet de télécharger et de compiler le module directement depuis CPAN plutôt que de passer par les dépôts de ton OS (s'il y a bien des dépôts sous Mac). Par contre je crois que ça n'installe pas automatiquement les dépendances s'il y en a.

EDIT - Au passage j'avais commencé de faire une version avec interface graphique (et sans dépendances), mais j'avoue que je ne suis pas super motivé en ce moment. Ca reviendra peut-être...

Dernière modification par Kam (01-11-2012 17:54:20)

Hors ligne

#17 01-11-2012 18:19:57

polochon777
Membre
Inscription : 09-09-2010

Re : [Cartographie] Récupération en masse de cartes sur openstreetmap

Merci, je ne connaissais pas CPAN. C'est un sacré rigolo:

Please install libgd 2.0.28 or higher

Message d'erreur à l'installation de GD...  mad
Bon, je verrai ça plus tard mais merci quand même!

Hors ligne

#18 01-11-2012 19:22:48

Kam
Membre
Inscription : 19-01-2011

Re : [Cartographie] Récupération en masse de cartes sur openstreetmap

libgd (*) est la librairie générale partagée par les différents langages de programmation. libgd-perl (*) est le portage de cette librairie pour perl. Du coup, c'est assez logique qu'il faille la première pour utiliser la seconde. tongue

Ceci dit, je crois que je ne l'utilise que pour la surimpression du numéros des cartes adjacentes sur les bords de la carte téléchargée. Je suis presque sûr que je n'utilisais pas GD pour la première version du script, mais je ne l'ai plus (et la dernière version est quand même plus pratique). Étonnant tout de même que GD ne soit pas installé par défaut sous Mac... EDIT - Non, je raconte n'importe quoi - j'étais fatigué. big_smile

(*) Les noms peuvent changer selon les distributions.

Dernière modification par Kam (04-11-2012 18:49:04)

Hors ligne

#19 02-11-2012 00:51:00

lajalousie
Membre
Lieu : Wien - Österreich
Inscription : 18-10-2012

Re : [Cartographie] Récupération en masse de cartes sur openstreetmap

pour mac :

1. outils de base

1.1. installer Xcode (https://itunes.apple.com/fr/app/xcode/id497799835?mt=12)
       dans Xcode : Prefences > Download > Install "Command line tools"
       laisser Xcode ouvert pendant toutes les manips

1.2 installer wget : dans un terminal, taper les lignes de commandes suivantes

curl -O http://ftp.gnu.org/gnu/wget/wget-1.13.tar.gz
tar -xzvf wget-1.13.tar.gz
cd wget-1.13
./configure --with-ssl=openssl
make
sudo make install

2. installation de GD

2.1. dans un editeur de texte, copier :

#!/bin/bash
#===============================================================================
# Auteur : djibril
# Date   : 25/03/2012 19:37:25
# But    : Installation des bibliotheques libpng, libjpeg... et des modules Perl GD
#===============================================================================

echo "===========================";
echo "Creation d'un repertoire temporaire pour les installations";
echo "===========================";
mkdir -p /tmp/GD

echo "===========================";
echo "Installation de zlib";
echo "===========================";
cd /tmp/GD
wget http://djibril.developpez.com/tutoriels/perl/comment-installer-bibliotheque-gd/fichiers/zlib-1.2.6.tar.gz 
tar -xzvf ./zlib-1.2.6.tar.gz
cd zlib-1.2.6
./configure --shared && make && make install


echo "===========================";
echo "Installation de libjpeg";
echo "===========================";
cd /tmp/GD
wget http://djibril.developpez.com/tutoriels/perl/comment-installer-bibliotheque-gd/fichiers/jpegsrc.v6b.tar.gz
tar -xzvf ./jpegsrc.v6b.tar.gz
cd jpeg-6b
./configure --enable-shared && make && make install

echo "===========================";
echo "Installation de libpng";
echo "===========================";
cd /tmp/GD
wget http://djibril.developpez.com/tutoriels/perl/comment-installer-bibliotheque-gd/fichiers/libpng-1.2.48.tar.gz
tar -xzvf ./libpng-1.2.48.tar.gz && cd libpng-1.2.48
./configure && make && make install


echo "===========================";
echo "Installation de freetype2";
echo "===========================";
cd /tmp/GD
wget http://djibril.developpez.com/tutoriels/perl/comment-installer-bibliotheque-gd/fichiers/freetype-2.4.9.tar.gz
tar -xzvf freetype-2.4.9.tar.gz  && cd freetype-2.4.9
./configure && make && make install

echo "===========================";
echo "Installation de libgd";
echo "===========================";
cd /tmp/GD
wget http://djibril.developpez.com/tutoriels/perl/comment-installer-bibliotheque-gd/fichiers/pierrejoye-gd-libgd-5551f61978e3.tar.gz
tar -xvzf pierrejoye-gd-libgd-5551f61978e3.tar.gz
cd pierrejoye-gd-libgd-5551f61978e3/src
ln -s /usr/X11R6/include/fontconfig /usr/local/include
./configure && make && make install

echo "Installation du module Perl GD et GD::Text";
perl -MCPAN -e "install GD"
perl -MCPAN -e "install GD::Text"

et enregistrer sous installation-complete.sh

2.2. passer en root : dans un terminal,

% sudo passwd root
Password: (tapez ici votre mot de passe utilisateur)
Changing password for root.
New password: (Tapez ici un mot de passe root...)
Retype new password: (confirmez le mot de passe...)

2.3. lancer l'installation :

wget http://djibril.developpez.com/tutoriels/perl/comment-installer-bibliotheque-gd/fichiers/installation-complete.sh && sh /chemin/du/fichier/installation-complete.sh

répondre "y" aux questions

2.4. patienter

2.5 sortir du root : dans le terminal, taper

exit

3. lancer le script

perl 'chemin/du/script/osmdl.pl' --id=<le numéro>

Hors ligne

#20 02-11-2012 03:03:08

lajalousie
Membre
Lieu : Wien - Österreich
Inscription : 18-10-2012

Re : [Cartographie] Récupération en masse de cartes sur openstreetmap

un serveur de tile qui a un joli rendu : http://tile7.maptoolkit.net/terrain

très joli, mais inutile : http://tile.stamen.com/watercolor
uniquement aux usa : http://tile.stamen.com/terrain
contraste : http://tile.stamen.com/terrain

Dernière modification par lajalousie (02-11-2012 04:49:37)

Hors ligne

#21 02-11-2012 19:52:07

polochon777
Membre
Inscription : 09-09-2010

Re : [Cartographie] Récupération en masse de cartes sur openstreetmap

Merci,
mais l'installation de GD plante de la même manière:

**UNRECOVERABLE ERROR**
Could not find gdlib-config in the search path. Please install libgd 2.0.28 or higher.

Je pars en rando, je verrai ça la semaine prochaine  hmm

Hors ligne

#22 04-11-2012 19:55:12

Kam
Membre
Inscription : 19-01-2011

Re : [Cartographie] Récupération en masse de cartes sur openstreetmap

Vous avez bien fait de me relancer sur le sujet. Petite mise à jour:

  • Ajout d'un encart au bas de chaque carte comprenant une échelle générée automatiquement (en Km au cas où...).

5428_osmdl1021.jpeg

  • Un autre truc que je voulais faire depuis longtemps aussi (mais bien plus chiant à coder): ajout des correspondances pour chaque niveau de zoom. Par exemple, dans le cas ci-dessous (zone 15439 au zoom 13), la carte 59 au zoom 9 et la carte 959 au zoom 11 couvriront la même zone. Ca marche très bien pour passer d'une carte détaillée à une carte qui l'est moins. Dans le cas inverse (carte à faible zoom vers une carte à zoom plus élevé) je n'ai spécifié que le numéro de la première carte. Difficile de faire autrement et de toutes les lister, puisque 64 cartes au zoom 13 correspondent à une unique carte au zoom 7 par exemple.

5428_osmdl1022.jpeg

  • Correction d'un message d'erreur avec l'option --tile.

Version complète.
Mise à jour uniquement (écrasez l'ancien script osmdl avec celui-ci dans votre dossier d'installation).

NB: Comme d'hab, tout ceci n'a été que vaguement testé, mais a priori, ça marche. N'hésitez pas à me signaler d'éventuels bugs.

Au passage, si vous avez des suggestions, je suis preneur.

Comme dit plus haut, il y aura peut-être un jour une version sans dépendances extérieures et avec interface graphique, mais j'avoue n'être pas vraiment motivé en ce moment (à titre personnel, la ligne de commande me va très bien et c'est dans tous les cas plus pratique/puissant quand on n'est pas rebuté par la chose).

Dernière modification par Kam (04-11-2012 19:59:04)

Hors ligne

Pied de page des forums