Extraction transport en commun d'OpenStreetMap - Notice d'exécution Expertise géomatique http://carte-libre.fr [email protected] 06 89 55 75 42 Extraction transport en commun d'OpenStreetMap Notice d'exécution Version 1.0 - 22/10/13 1/4 Extraction transport en commun d'OpenStreetMap - Notice d'exécution 1. Principe de fonctionnement Overpass L'extraction de données d'OpenStreetMap se fait par l'exécution de scripts Overpass. Overpass est un langage de requête spécifique aux données OpenStreetMap. L'exécution de ces scripts est faite sur des serveurs publics. Cette approche évite l'installation et la mise en place d'une grande quantité de données en local. http://wiki.openstreetmap.org/wiki/Overpass_API http://wiki.openstreetmap.org/wiki/Overpass_API/Language_Guide Le langage existe en deux syntaxes, XML ou non. Les scripts Overpass sont envoyées par un POST HTTP au serveur. Le serveur construit la réponse et la retourne. Le fonctionnement même de l'outil fait que le téléchargement peut être assez long avec une première phase où rien n'est retourné (téléchargement en cours, mais sans transférer de données), suivi d'une seconde phase plus courte où les données sont effectivement téléchargées. La requête la plus complexe livrée ici (lignes de transport en commun) peut prendre 2h. Le temps est en partie fonction de la charge du serveur. Le résultat de la requête est un fichier « .osm » en XML. Le format est spécifique au projet OpenStreetMap. Osmosis Osmosis est un outil de manipulation de données aux différents formats OpenStreetMap. Il permet de faire des conversions de formats de fichiers et de charger et décharger des données en base. http://wiki.openstreetmap.org/wiki/Osmosis Postgres/PostGis Une fois chargées dans la base, les données doivent être traitées pour les mettre en forme puis les exporter. La préparation du traitement se fait par la création de vues. pgsql2shp Pgsql2shp est un utilitaire qui va permettre d'exporter le contenu des vues de la Base de Données au format Shapefile. 2. Installation Overpass Les requêtes Overpass s'exécutant sur des serveurs publics, il n'y a rien à installer en local. La commande « wget » est toutefois nécessaire pour lancer des requêtes. 2/4 Extraction transport en commun d'OpenStreetMap - Notice d'exécution Osmosis Osmosis est un utilitaire en java, il faut donc un environnement JRE pour l'exécuter, au moins en version 1.6. Il peut être téléchargé à cette adresse : http://bretth.dev.openstreetmap.org/osmosis-build/osmosis-latest.tgz Une fois décompressé, il faut configurer le chemin d'accès dans le Makefile. Positionner le chemin absolu ou relatif dans OSMOSIS_PATH. Postgres/PostGis Installer un serveur de base de données Postgres, en version 9 de préférence, ainsi que l'extension PostGis de Postgres en version 2 de préférence. Après avoir démarré le serveur de base de données, et sous l'utilisateur système postgres : créer un utilisateur postgres « osm » (ou plus simplement utiliser un login existant dans le système) : > createuser osm Créer une base de données (il faut que l'encodage de la base de données soit en utf8) : > createdb -O osm osm Toujours sous l'utilisateur postgres, charger les extensions hstore et postgis (les commandes pour des versions précédentes de Postgres et PostGis peuvent être différentes) : > psql osm osm=> CREATE EXTENSION hstore; osm=> CREATE EXTENSION postgis; Se connecter en simple utilisateur à la base. Si la connexion est configurée pour ce faire sans mot de passe, il faut en définir un : > psql osm osm=> ALTER USER osm WITH PASSWORD '123'; L'utilitaire Osmosis a obligatoirement besoin d'une connexion réseau et d'un mot de passe pour accéder à la base de données. Tous les autres outils sont également configurés pour les utiliser. Il faut configurer la connexion à la base de données dans le Makefile. Personnaliser les variables DB_HOST, DB_NAME, DB_USER et DB_PASSWORD. En cas de problème voir : http://wiki.openstreetmap.org/wiki/PostGIS/Installation http://wiki.openstreetmap.org/wiki/Osmosis/PostGIS_Setup SQL La base de données doit être initialisée avant d'être utilisée. Le schéma de base de données spécifique à Osmosis doit être créé : > psql osm < ../osmosis/script/pgsnapshot_schema_0.6.sql Le schéma doit être modifié pour prendre en compte les linestrings des ways automatiquement au chargement des données : > psql osm < ../osmosis/script/pgsnapshot_schema_0.6_linestring.sql Pour finir, des fonctions spécifiques à l'outil d'extraction des données de transport en commun doivent être chargées : > psql osm < CreateFunctions.sql 3/4 Extraction transport en commun d'OpenStreetMap - Notice d'exécution 3. Exécution Les exécutions sont faites par la commande « make » avec le fichier Makefile. La comme « make all » permet de lancer l'ensemble des exécutions pour tous les jeux de données. > make all Chaque étape de chaque jeu de données peut être exécutée indépendamment. Si les étapes en prérequis n'ont pas déjà été exécutées, make les effectuera également. am en ity _b pa icy rki cl e ng _re _ c pu arp nta bl i oo l.* c_ l.* t r a typ ns po e_ rt_ rou sta te. am tio * en n.* ity _c am ar_ en sh ity ari _p ng pu ark .* bl i i n c_ g . t * ran sto sp p.* ort _s typ top e_ _a rou rea te_ pu .* bl i s t o c_ p.* tra ns po rt_ sto p_ are a_ sto p .* Toutes les exécutions possibles sont détaillées dans le tableau si dessous. *.osm x x x x x x x *.osm.bz2 x x x x x x x *.shp x x x x x x x *.dbf Obtention du résultat de la requête Overpass du même nom. Compression du résultat de la requête. Export de la vue en shape file. x x Export de la vue pour les jointures x (elles n'ont pas de partie spatiale). Par exemple, pour n'effectuer que la requête Overpass pour les parkings : > make amenity-parking.osm Pour convertir en Shapefile les lignes de transport en commun : > make type-route.shp À noter le cas particulier des stops, qui utilise la même requête Overpass que type-route mais avec une extraction différente. À noter également que les tables de jointures réutilisent également d'autres requêtes Overpass et qu'elles ne peuvent pas produire un .shp (partie géographie des Shapefiles), mais uniquement une table (.dbf). 4/4