filyb.info

Tag - Cartographie

Fil des billets - Fil des commentaires

mardi 15 juillet 2008

Intégrer une carte OpenStreetMap dans votre site web

Depuis que Google a mis à disposition son service Google Maps, les petits bouts de carte se sont mis à fleurir un peu partout sur la toile. Il faut indiquer un lieu ? Pas de problème, on va mettre une Google Map... Mieux ! On va mettre une OpenStreetMap !

J'ai testé plusieurs solutions pour obtenir une carte sympathique, facile à mettre en place, et avec du code valide. On commence par oublier l'onglet Export du site principal d'OpenStreetMap.

La meilleure solution que j'ai trouvé consiste à passer par Mapstraction. Il s'agit d'une bibliothèque javascript libre d'abstraction d'API. Concrètement, avec le même code, vous pouvez afficher une carte Google, Yahoo!... ou OpenStreetMap (voir la démonstration OpenStreetMap et OpenLayers – notez que OpenLayers est une bibliothèque javascript libre pour mettre en place des slippy maps).

Passons aux travaux pratiques. Voici ce que l'on aimerait obtenir :

Voir la carte sur OpenStreetMap.

Voici une carte tout à fait respectables, avec quelques POI marqués. Le seul inconvénient : les bulles des POI sont... moches.

Comment mettre cela en place ? Simple, voici le code :

    <!-- DIV xhtml de la carte. La taille peut être spécifiée soit ici,
         dans l'attribut style, soit dans les css.
    -->
    <div id="demo-map" style="width: 600px; height: 600px;"></div>
    <p><a
    href="http://openstreetmap.org/?lat=43.5945&lon=1.4496&zoom=12"
    hreflang="en" title="Site du projet OpenStreetMap">
        Voir la carte sur OpenStreetMap.
    </a></p>
    
    
    <!-- Inclusion des bibliothèques javascript OpenLayers et Mapstraction -->
    <script
        type="text/javascript"
        src="http://openlayers.org/api/OpenLayers.js"
    ></script>
    <script
        type="text/javascript"
        src="http://mapstraction.com/svn/source/mapstraction.js"
    ></script>
    
    <script type="text/javascript">
    // Initialisation de la carte.
    var mapstraction = new Mapstraction('demo-map','openlayers');
    mapstraction.addControls({
        pan: true, 
        zoom: 'small',
        map_type: true 
    });
    // Centrer la carte sur toulouse
    var toulouse = new LatLonPoint(43.60277,1.44371);
    mapstraction.setCenterAndZoom(toulouse, 12);
    
    // Ajouter des points (avec leur latitude et longitude) :
    //
    // Comment récupérer la latitude et la longitude d'un point ?
    // 1. Aller sur http://openstreetmap.org/
    // 2. Cliquer sur l'onglet "Export" (en haut)
    // 3. Dans "Format to Export", choisir "Embeddable HTML"
    // 4. Cliquez sur "Add a marker to the map"
    // 5. Cliquez sur la position souhaitée sur la carte (ne pas hésiter à
    //    zoomer !)
    // 6. La latitude et la longitude s'affichent en dessous.
    
    // Cinéma Utopia
    utopia = new Marker(new LatLonPoint(43.60394,1.44679))
    utopia.setInfoBubble('Cinéma Utopia Toulouse');
    mapstraction.addMarker(utopia);
    
    // Toulibre - Groupe d'utilisateurs de logiciels libres toulousain
    toulibre = new Marker(new LatLonPoint(43.60834,1.44461))
    toulibre.setInfoBubble('GUL Toulibre');
    mapstraction.addMarker(toulibre);
    
    // Un point au hasard
    hasard = new Marker(new LatLonPoint(43.58484,1.38883))
    hasard.setInfoBubble('Un point au hasard');
    mapstraction.addMarker(hasard);
    
    </script> 

Il y a même des jolis commentaires pour tout vous expliquer ! Notez l'astuce pratique pour récupérer les coordonnées d'un point. Pour le lien Voir la carte sur OpenStreetMap, vous pouvez simplement copier l'adresse de permalien de la vue que vous souhaitez sur le site principal d'OpenStreetMap.

Maintenant, vous n'avez plus d'excuse ! Si vous voulez mettre une carte sur votre site, copiez ce code. (Non, l'excuse OpenStreetMap est incomplet pour la zone que je veux afficher ne tient pas. Allez sur place, complétez OpenStreetMap, et retournez à votre site web.)

lundi 14 juillet 2008

OpenStreetMap : dessinons un monde libre

Parlons un peu du projet OpenStreetMap. Son but est simple : recartographier le monde entier, et mettre disposition les données sous une licence libre (en l'occurrence la licence By-SA 2.0).

Des données cartographiques libres, pour quoi faire ?

Quel intérêt tout cela peut-il bien avoir ? Avec une carte libre, vous pouvez :

  • Utiliser les données comme bon vous semble.
  • Diffuser ces données autour de vous : car non, photocopier une carte IGN n'est pas autorisé.
  • Modifier les données : suite à des travaux dans votre quartier, la carte de Michelin ne correspond plus. Certes vous pouvez griffonner au stylo dessus, mais ce n'est pas conseillé si cette carte est informatique (du moins, pas pour votre écran). Alors qu'une carte libre peut être mise à jour, complétée... librement.
  • Réutiliser ces données de la façon que vous voulez : en faire une carte des chemins pédestres, un plan pour que vos invités trouvent le lieux de votre mariage... les possibilités sont immenses.

En bref, les intérêts sont les mêmes que ceux des logiciels libres par rapport aux logiciels privateurs.

Comment cela fonctionne ?

Le projet OpenStreetMap en lui-même correspond principalement à une base de donnée. Cette base de donnée contient un ensemble de points et de lignes, sur lesquels on peut ajouter des informations ou tags. Il n'y a pas de limite, n'importe quelle information peut être ajoutée (cela va des routes aux toilettes publics). Le tout est de se mettre d'accord sur quel tag représente quelle information. Une liste officielle de tags existe, ainsi qu'un processus pour y ajouter de nouveaux tags.

Ensuite, suivant les utilisations de OpenStreetMap, des logiciels vont extraire certaines données de la base, et en effectuer un rendu graphique. La carte visible sur le site principal est générée à l'aide du logiciel Mapnik, tandis que la carte d'Information Freeway a elle été créée par Osmarender et tiles@home (en cherchant bien, vous noterez des différences : chaque logiciel ne dessine qu'un nombre limité et défini de tags, et pas forcément de la même manière).

Comment contribuer ?

Contribuer revient à ajouter des données dans la base. Pour les ajouter, il faut les récupérer, ces données. Mais attention : les données provenant d'autres cartes (IGN, Michelin, Google) ne sont pas libres et ne doivent pas être recopiées. Les propriétaires de ces cartes y placent même des erreurs volontaires pour démasquer les contrefaçons.

La source principale de données d'OpenStreetMap, c'est un gentil contributeur armé d'un récepteur GPS. En enregistrant son parcours (une trace GPS) ainsi que des données supplémentaires (nom de la rue, etc), il relève les informations sur le terrain, qui ne sont pas, elles, soumise au droit d'auteur (heureusement !).

Il existe aussi quelques autres sources de données. Yahoo! a ainsi autorisé l'utilisation de ses images satellite (pas les cartes !) pour y faire un relevé manuel. Cela ne dispense bien sûr pas d'aller relever les informations sur le terrain.

L'idée d'OpenStreetMap est d'être un wiki de la cartographie. Ainsi, comme sur un wiki, il suffit, sur le site principal, de cliquer sur l'onglet Edit (en haut) pour modifier la carte. Cela ouvre un éditeur nommé Potlatch (en Flash, malheureusement). Il est ainsi possible de corriger des informations erronées, ou d'en rajouter. Voir l'aide de Potlatch.

Il est aussi possible d'utiliser un logiciel installé sur votre ordinateur, tel que JOSM, bien plus complet et plus performant.

Une autre façon d'aider très simplement peut être l'utilisation d'OpenStreetBug pour ajouter très facilement des commentaires sur la carte, et ainsi indiquer des erreurs ou des choses à faire.

Alors, si vous souhaitez contribuer, rendez-vous sur le wiki, où vous trouverez un guide pour débuter. N'oubliez pas non plus de vous inscrire à la liste de discussion francophone !

Qu'est-ce que cela donne ?

Comment peut-on utiliser ces cartes ? Si tout est théoriquement possible, un certain nombre d'usage est déjà réalisable :

  • Le le site principal propose déjà une jolie carte glissante (à la manière de Google Maps), avec une fonction de recherche (qui utilise aussi GeoNames, des données géographiques libres). Notez aussi l'onglet Export, qui permet de récupérer, par exemple, une image à partir de la carte.
  • OpenStreetMap dans votre récepteur GPS : c'est possible pour les Garmins. Vous pouvez notamment télécharger des cartes de France.
  • Si la carte du le site principal est surtout une carte routière, il est tout à fait possible d'avoir des cartes pour d'autres usages. La Cycle Map (aussi disponible sur la carte principale en cliquant sur le + en haut à droite) permet d'obtenir une carte des pistes cyclables, tandis qu'OpenPisteMap est dédié aux stations de ski.

D'autres usages sont possibles, je ferai probablement quelques billets sur l'intégration d'OpenStreetMap dans un site web. Et peut-être que bientôt il sera possible de faire des calculs d'itinéraires...