filyb.info

Tag - Informatique

Fil des billets - Fil des commentaires

lundi 1 septembre 2008

En vrac de rentrée

mardi 22 juillet 2008

Lier vos billets DotClear 2 avec OpenStreetMap

Le but est, à partir d'un billet de blog, écrit à l'aide DotClear 2, de géolocaliser le billet (donc inscrire dans le billet des informations géographiques le concernant), et de lier cela à OpenStreetMap.

Avant tout, signalons l'existence de Dotmap, une extension de géolocalisation très complète, mais ne supportant pas OpenStreetMap (mais je l'ai suggéré à l'auteur, et c'est dans la roadmap, via Mapstraction. La solution que je propose est beaucoup plus légère et rudimentaire. À vous de voir.

Nous allons simplement nous contenter d'ajouter dans le billet des informations de géolocalisation (latitude, longitude), exploitable via le microformat geo, et d'afficher cela sous forme de lien vers OpenStreetMap. À noter que l'on pourrait sans problème afficher en plus une carte OpenStreetMap, mais je trouve que cela alourdi beaucoup la page pour pas grand chose. Pour voir un exemple de ce que cela donne, regardez sous le billet Tonight in Toulouse, en bas des informations sur le billet : un joli lien vous mène vers l'endroit en question, sur le site principal d'OpenStreetMap.

Nous allons passer par le plugin Mymeta, qui permet d'ajouter des méta-données personnalisées aux billets. Dans notre cas, voici les méta-données en question : Liste des méta pour le lien OSM

place_name et zoom sont ici uniquement pour avoir un lien sympathique. Une fois les méta-données créées, vous avez la possibilité de les renseigner pour chaque billet. Si vous laissez tout vierge, il n'y aura pas de lien. Par contre, sinon, remplissez tout, le code que je vais donner ensuite n'aime pas trop se débrouiller avec la moitié des informations.

Pour récupérer ces informations, vous pouvez par exemple utiliser le site principal d'OpenStreetMap et son adresse Permalink en bas à droite : vous trouverez dans cette adresse les coordonnées actuelles, ainsi que le niveau de zoom.

Téléchargez maintenant le fichier _osm_link.html, et placez-le dans le dossier tpl de votre thème. Pour afficher le lien, il vous suffit de modifier le fichier tpl/post.html de votre thème, et de placer là où vous voulez insérer le lien :

{{tpl:include src="_osm_link.html"}}

Cela insérera le lien dans des balise <li>, parce que ça m'arrange. Vous pouvez les supprimer de _osm_link.html.

Normalement, vous devriez déjà avoir quelque chose de fonctionnel. Pour agrémenter le tout, vous pouvez utiliser l'icône Geotag. Téléchargez-le, et insérez quelque chose comme ceci dans votre feuille de style :

.geo:before {
    content:url(img/geotag_16.png)"\0000a0";
}

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...

samedi 12 juillet 2008

Baratinons

Peut-être le buzz de l'ouverture de Identi.ca est parvenu jusqu'à vos oreilles ? Encore un autre service de microblog, comme Twitter et co. ! Sauf que non. Cette fois, c'est une initiative intéressante, conçue avec un peu de réflexion, et qui n'est pas un danger pour Internet.

OpenMicroBlogging

La plus grande différence, c'est que ce service est basé sur une spécification ouverte, OpenMicroBlogging. Cette spécification permet de construire une fédération de serveurs de microblogs, ce qui permet, comme pour Jabber, de construire une architecture décentralisée, sans que ce soit au détriment de la communication entre les différents éléments de la fédération.

De plus, OpenMicroBlogging se base sur des technologies du même genre, comme OAuth ou YADIS.

Laconica

Le deuxième intérêt de Identi.ca, c'est le logiciel qui fait tourner le serveur. Il s'agit de Laconica, un logiciel libre sous licence AGPL 3. Outre le fait que l'on puisse examiner le fonctionnement du logiciel, on peut ainsi monter son propre serveur OpenMicroBlogging à l'aide de ce logiciel (ce qui permet, soit dit en passant, d'être certain que le logiciel que l'on utilise est bien celui dont on a les sources).

Laconi.ca est encore très jeune, mais possède déjà plusieurs fonctionnalités utiles, comme des fils de syndication pour suivre les discussions, d'un support de Jabber pour envoyer ou recevoir des messages, la possibilité d'utiliser OpenID pour l'authentification, ou encore une représentation FOAF des profiles.

Le troisième intérêt de Laconica, c'est qu'il propose (on peut bien sûr changer cela, puisque le logiciel est libre, mais autant le garder) à tous les utilisateurs de publier leurs messages sous CC-BY 3.0. Ces trois points font des serveurs basés sur Laconica des services respectants la définition Open Service.

Un peu de baratin

Du coup... j'ai installé Laconica sur The Fool. Il est ici : baratin.filyb.info. Les inscriptions sont ouverts, vous pouvez y passer si ça vous chante. Faut pas croire pour autant que je vais moi aussi me mettre au microblog ! Ça m'a l'air bien trop chronophage (quoique... non ! J'y résisterai !)

Feednotice

Et histoire de microbloguer sans rien faire, j'ai codé un script python qui permet de poster sur des comptes d'un site tournant avec Laconica les nouveautés d'un fil de syndication. C'est ce qui poste les entrées du carnet et du carnet photo sur mon compte.

Le script est disponible en pièce jointe. Il nécessite l'installation de feedparser. Il s'exécute par ./feednotice.py subscription_file interval, où subscription_file est un fichier où sont renseignés les fils de syndication à poster, et interval est le nombre de minutes entre chaque vérification. Le fichier subscription_file doit être formaté de cette manière :

# username  password    site                        feed
thesa,      motdepasse, http://baratin.filyb.info,  http://filyb.info/feed/atom
thesa,      motdepasse, http://baratin.filyb.info,  http://filyb.info/gallery/feed/rss2/811

Il faut noter que ce script est censé tourner en permanence. Il ne gère pas de cache des fils déjà lu, et poste les articles dont la date est supérieure à la date de dernière vérification. Cette date de dernière vérification est initialisée à la date de lancement du script, donc si vous arrêtez le script et le relancez plus tard, les articles dans l'intervale ne seront pas postés.

- page 2 de 53 -