Archives de catégorie : Initiations

Open Street Map

Finix
le 7 décembre 2007

Présentation de OpenStreetMap par Ludovic

Le projet open street map est un projet de cartographie libre, au sens de l’open source (la copie des cartes IGN est interdite). Certaines cartes contiennent des « easter eggs », des erreurs volontaires pour repérer les copies.
Les raisons pour participer à la fabrication d’une cartographie libre :
-les cartes changent peu
-les GPS se démocratise
-la mise à jour est rapide
Il ne faut pas confondre libre et gratuit. Google map est gratuit mais n’est pas libre, on ne peut pas le modifier, sauf à avoir accès par un compte Gmail qui est facile à désactiver.

Actuellement, deux compagnies privées se partagent le marché mondial de la cartographie : Navteq et Teleatlas. TomTom veut racheter l’une des compagnies.
Le GPS explose. D’où des projets libres :
Openstreetmap
un point c’est tout
-et d’autres…

Comment participer à OSM?

La cartographie a besoin de sources qui vont servir à tracer les cartes en requérant du temps de calcul pour pourvoir les utiliser.

Sources

Les GPS peuvent être utilisés pour relever les traces.
On trouve
-des GPS USB non autonomes, à brancher sur un ordinateur, aux environs de 30 €, idem avec liaison bluetooth ou série
-des loggers, autonomes récupèrent les points, à rentrer ultérieurement dans un ordinateur, aux environs de 60 €
-des GPS type Carmin aux environs de 150 €
-certains GPS de voiture enregistrent les points

Certains organismes participent.
On peut faire des observations directes : nom de rue, présence de stop, d’une boite aux lettres.
Imagerie aériennes. OSM a eu un accord avec Yahoo pour utiliser les images aériennes.

Tracé de la carte

Les traces apparaissent dans différents formats : GPX (OSM et beaucoup d’autres), KML (google), NMEA (marine). Il existe des logiciels qui font les conversions de format tel que GPS Babel (logiciel libre).
L’exploitation se fait à l’aide de logiciels à installer comme JOSM, ou des applications flash comme Potlach, ou autres. JOSM fait l’agrégation de la carte, de la trace GPS, des photos aériennes.

Calcul de la carte

Une fois réalisé les modifications, on envoie la carte à OSM. OSM recalcule la carte.
On peut participer au calcul en installant chez soi un petit programme qui s’appelle TilesAtHome. Le programme tourne en arrière-plan en priorité basse et ne gène pas l’utilisation de l’ordinateur.
OSM récupère les routes et les transforme en images.

Utilisation

On peut utiliser OSM en se rendant sur le site

Le site fournit une carte OSM plus régulièrement mise à jour.
Les données peuvent être téléchargées.
Parmi les logiciels qui utilisent ces informations, on trouve :
-road map
-navit
-GPS drive
-pyroute
-road nav
-yamap

Utilisation de JOSM

JOSM: editor OpenStreetMap

Installation de JOSM
– install Java (JRE 1.5 minimum)

  • ubuntu: sudo aptitude install sun-java6-jdk
  • debian: apt-get install sun-java6-jdk

– télécharger JOSM

  • http://josm.openstreetmap.de/download/josm-latest.jar

– démarrage

  • java -jar josm.jar

– installation de plugins

  • menu edit/preference: click sur la prise de courant (plugins)
  • cliquer sur « download list »
  • sélectionner:
    • wms plugins
    • yahoo wms
  • cliquer sur OK, puis oui
  • redémarrer JOSM, pour quitter, menu « File/exit »
  • voir section « démarrage » ci-dessus

– Configuration Plugin

  • menu edit/preference: click sur Yahoo WMS Server
  • remplir « firefox profile » avec « osmconfig » par exemple
  • cliquer sur « create »
  • firefox se lance sur un nouveau profile (pour ne pas écraser le profile de l’utilisateur courant).
  • dans la page web qui s’affiche, cliquer sur « make changes » pour autoriser la methode javascript dump et le recouvrement de session.
  • cliquer sur « autoriser » et ensuite fermer ce profile firefox.
  • dans la fenêtre preference, cliquer sur Ok
  • dans le menu WMS, il y aura maintenant un item « Yahoo »
  • cliquer dessus pour ajouter Yahoo dans les layers quand vous aurez choisi votre zone (voir ci-dessous).

– Sélectionner une zone à cartographier

  • choisir une zone sur http://www.openstreetmap.org/ en zoomant
  • cliquer sur « permalink » en bas a droite
  • copier l’url ainsi obtenu
  • démarrer JOSM
  • cliquer sur le lien « Download some data »
  • coller l’URL dans « Bounding Box »/URL from openstreet map »
  • cliquer sur OK
  • utiliser le zoom pour cadrer la portion à cartographier

– Editer des points

  • avec ou sans la carte yahoo cliquer sur « Draw nodes A » dans la barre d’outil a gauche
  • tracer les points sur la carte
  • déplacer les points en cliquant sur « Select, Move and rotate Object »
  • effacer les points en cliquant d’abord sur « Delete nodes » et ensuite selectionner les points a effacer.
  • utiliser menu Presets pour choisir une proprietes pour les points qui sont traces (routes, parking …)

– Sauver les points

  • menu save

Compiler des sources

Compiler des sources
——————–

Installer les outils pour compiler (debian)
– binutil
– gcc
– make
– verifier que les includes (fichier.h dans /usr/include) sont presents

Tester les outils de compil
taper en mode console:
=> gcc
si le compilateur gcc est present il y a une erreur du style: « no input file » autrement erreur: « command not found »

Compiler les sources
——————–
– recuperer les sources d’une application (par exemple: www.squeak.org)

– installer les sources
gzip: si le fichier de sources est un tar.gz => tar xzvf fichier.tar.gz
bunzip: si le fichier de sources est un tar.bz2 => tar xjvf fichier.tar.bz2

– premiere chose a faire, lire les fichiers README et/ou INSTALL qui indiqueront la facon de compiler et d’installer les sources (quelque fois ca varie un peu en fonction des sources, comme c’est le cas pour squeak)

– preparer la compilation des sources
taper: ./configure a la racine des sources
(pour squeak, le README nous indique une ligne de commande differente, mais le resultat est identique)

Que fait Configure ? :
———————-
– Teste les caractéristiques du système local
– Produit un header optionnel ‘config.h’ (par défaut)
– Construit le ou les Makefile(s)
– Produit les fichiers de contrôle ‘config.status config.log’
S’il manque des librairies ou des outils de compilation sur le systeme, Configure finira par une erreur.

– compiler les sources
taper: make

Make prend en entree le fichier Makefile qui a ete
genere par configure, il utilise comme point d’entree dans ce fichier, le label (« target »): ‘all:’ qui est suivi des targets a executer. Ensuite chaque target contient des instructions (gcc …) a realiser pour compiler les sources.

Si les outils de compilation ont trouve un erreur, make ne terminera par la compilation et il faudra la corriger et recommencer.
(comme pour squeak, ou il manquait les libX11-dev sur une des machines).

En cas d’echec lors de la compilation, il faut nettoyer les fichiers makefile ayant ete crees automatiquement lors de la compilation avant de recommencer une nouvelle compilation.

Cela se fait grace à la commande:
make clean

– installation
une fois le programme compile, il est opportun de le placer dans un repertoire ou l’ensemble des utilisateurs du systeme pourront le trouver pour l’utiliser
(/usr/local/bin …).

Pour cela, passer en mode administrateur (root) et taper:
make install

La target « install » s’occupe de l’installation de l’application, aussi bien les binaires que la doc, les librairies necessaires et compilees pour cette application.

– tester le binaire
Il est possible de tester le binaire avant son installation (apres le make).

Dans le cas de squeak, il est important de telecharger en plus l’image (le systeme squeak qui contient les outils, l’environnement graphique … de squeak), le programme squeak (le binaire compile ci-dessus) n’etant qu’une machine virtuelle qui va executer le code machine squeak qui se trouve dans l’image a telecharger.

– fin

Paquetage Debian

Création d’un paquet Debian
—————————
Le système de gestion des paquets Debian est complexe et n’est pas forcément convivial pour les novices. Mais il a l’avantage d’être puissant.

Dans cet exercice, on va essayer de clarifier un peu le processus de création d’un paquet pour son installation sur un système de fichier, en partant du plus loin que l’on peut pour un paquet, à ses sources.

Choisir son source
——————
Pour commencer, il faut avoir des sources sous la main
pour construire un exécutable qui fonctionne.

Par exemple le source hello-1.0.tar.gz
que l’on avait presque reussi a fabriquer la derniere fois !!
que vous trouverez a l’adresse:
http://christian.jacolot.free.fr/Finix/Initiations/hello-1.0.tar.gz

Avant de créer le paquet
————————
Verifier que vous avez tous les outils pour creer le paquet debian:
– dh_make
– fakeroot
Sinon, il faut les installer avec « apt-get install ».

Placer le paquet source « hello » dézippé, détarré,
dans un répertoire « paquetdebian ».
– mkdir paquetdebian
– cp hello-1.0.tar.gz paquetdebian
– cd paquetdebian
– tar xzvf hello-1.0.tar.gz

Généralement on obtient:
paquetdebian/hello-1.0/

Glisse toi dans le répertoire:
– cd hello-1.0

Maintenant utilise la commande:
– dh_make -e adresse_email -f ../hello-1.0.tar.gz

Un menu s’affiche, pour l’instant choisir « s » comme « single »,
et normalement c’est tout, le programme s’occupe de tout.

Modifier quelques fichiers
————————–
Le programme précédent a crée un répertoire debian dans le répertoire hello-1.0 et a crée un fichier hello-1.0.orig.tar.gz dans le répertoire père de hello-1.0 (dans paquetdebian).

Ensuite, on peut eventuellement modifier quelques fichiers dans le répertoire debian:
– control: ajouter des commentaires
– copyright: placer un copyright
– changelog: avec le programme dch ajouter un petit commentaire
– rules: ne rien toucher là-dedans pour l’instant
Les autres fichiers ne sont pas utiles pour notre exemple et peuvent rester dans le répertoire.

Créer le paquet hello
———————
Dans le répertoire hello-1.0, taper la commande:
– dpgk-buildpackage -rfakeroot

Et magique, ca marche tout seul, on trouve dans le répertoire père de hello-1.0 les fichiers suivants (dans le repertoire paquetdebian):
– hello_1.0-1.diff.gz
– hello_1.0-1.dsc
– hello_1.0-1_i386.changes
– hello_1.0-1_i386.deb
– hello_1.0.orig.tar.gz

Ensuite …
On peut installer le paquet binaire hello_1.0-1_i386.deb sur son système:
– dpkg -i hello_1.0-1.i386.deb

Ceci était un petit exemple de manipulation de paquets et d’outils debian.

Paquetage GNU

* Fabriquer un paquetage pour les sources (the GNU build system).

– Installer les outils pour fabriquer un paquetage GNU (debian)
* autoscan
* automake
* autoconf

– Ecrire un programme C:
* mkdir finixware; cd finixware
* mkdir src; cd src
* vim finixware.c
#include

int main()
printf(« Hello the FinixWorldn »);
return 0;

– Compiler et tester le programme C:
* gcc -o finixware finixware.c

– Paquetage
* outil: autoscan
– permet d’aider a la creation d’un fichier configure.ac (les besoins du source: include, librairie …)
– tester la portablilite (entre systeme Unix) des methodes et des fonctions
– creer un fichier vide: configure.ac
=> cd finixware
=> touch configure.ac
=> autoscan
=> cp configure.scan configure.ac (copier le fichier)
– ajouter des elements dans configure.ac
=> AC_INIT(finixware, 1.0)
=> AM_INIT_AUTOMAKE
=> AC_CONFIG_FILES([Makefile])

* aclocal
– permet de creer les macros pour le deploiement futur sur une autre machine
– rendre independant de la pateforme l’utilisation des outils qui vont suivre
* creer squelette Makefile.am
– vim Makefile.am
bin_PROGRAMS = finixware
finixware_SOURCES = finixware.c
* autoheader
– creation du fichier config.h.in (qui va servir pour configure)
=> autoheader
* automake
– creer le fichier Makefile.in
– automake necessite les fichiers suivant:
# install-sh
# missing
# INSTALL
# NEWS
# README
# AUTHORS
# ChangeLog
# COPYING
# depcomp
– automake avec l’option « -a » permet de generer certain de ces fichiers:
# install-sh
# missing
# INSTALL
# COPYING
# depcomp
– les autres sont a creer (dans notre exemple, ils seront vides):
=> touch NEWS README AUTHORS ChangeLog
=> automake -a (qui va creer le fichier Makefile.in)

* autoconf
– permet de creer le fichier configure.in (qui va servir pour configure)
=> autoconf

* Tester le configure
– ./configure (pour voir si ca marche)

* Creer le paquetage
– fournir un fichier src.tar.gz (ou tar.bz2)
– fichier de type finixware-1.0.targ.gz (voir le fichier configure.ac pour les parametres)
– contenant les sources, les fichiers pour compiler.
=> make dist-gzip (ou dist-bzip2)
– on obtient le fichier suivant: finixware-1.0.tar.gz

* Tester le paquetage
– mkdir ../finixware-test
– cp finixware-1.0.tar.gz ../finixware-test/
– cd ../finixware-test/
– tar xzvf finixware-1.0.tar.gz
– cd finixware-1.0

– ./configure
– make
– make install
– which finixware (normalement celui qui se trouve dans /usr/local/bin)
– finixware (executer)
=> Hello the FinixWorld

et voila le resultat 🙂

– fin
– Annexe
– fichier configure.ac
______________________
#

    – Autoconf


      # Process this file with autoconf to produce a configure script.

      AC_PREREQ(2.59)
      AC_INIT(finixware, 1.0)
      AM_INIT_AUTOMAKE
      AC_CONFIG_SRCDIR([src/finixware.c])
      AC_CONFIG_HEADER([config.h])

      # Checks for programs.
      AC_PROG_CC

      # Checks for libraries.

      # Checks for header files.

      # Checks for typedefs, structures, and compiler characteristics.

      # Checks for library functions.
      AC_CONFIG_FILES([Makefile])
      AC_OUTPUT
      ______________________

      – fichier finixware.c
      ______________________
      #include

      int main()
      printf(« Hello the FinixWorldn »);
      return 0;

      ______________________