[OSM-dev-fr] Fichiers osm "full-history" - Création de la base de données

Ab_fab gamma.gts at gmail.com
Mar 6 Déc 10:24:02 GMT 2011


Bonjour,

J'ai fait l'installation des outils nécessaires pour la création d'une base
Postgis sous un schéma "full-history".
Puis j'ai pu créer une base de données, basée sur un extrait de la zone de
Nancy pour vérifier le bon fonctionnement de l'ensemble.
Pas de suspens, ça fonctionne bien :-)

Bémol important : les relations ne sont pas (encore) gérées, donc pas de
multi-polygons ni de relations "route"
(Désolé pour ceux qui voulaient voir l'évolution des réseaux de transport
public)

L'outil de découpage / création de base de donnée / générateur de rendu se
trouve ici
https://github.com/MaZderMind/osm-history-renderer

le readme renvoie vers un tutoriel
https://github.com/MaZderMind/osm-history-renderer/blob/master/TUTORIAL.md

Le gros morceau de l'installation est en fait d'installer Osmium, de Jochen
Topf, qui remplace ici osm2pgsql.
https://github.com/joto/osmium
Il y a une grosse liste de packages à installer. Mais ils sont clairement
décrits et chez moi c'était sans souci. Tous sont dispo sur les dépôts de
packages Ubuntu.
Bien entendu, il y a une exception, le dernier : OSMPBF, qui doit être
compilé (une fois les autres packages installés)

Une fois la compilation d'OSM Installer terminée, il n'y a plus qu'à
télécharger l'extrait de son choix
(Nancy, Paris et France sont déjà disponibles, et datent du 19/09/2011) et
créer la base Postgis

 -> Les instructions sont données pour une debian 6.0.3 et Postgis 8.3 donc
l'usage sur d'autres distributions demande quelques petits ajustements. Je
mets en [1] les commandes que j'ai utilisées la création de la base de
données sur ma config (Ubuntu 11.10 & PostgreSQL 9.1)

J'ai suivi la méthode la plus simple, qui consiste à utiliser le même nom
d'utilisateur que de base de données.
C'est pas le top pour un usage "sérieux", et on peut utiliser l'argument
--dsn dans la commande pour préciser les accès à la base de donnée
(voir le readme.md [2] pour plus d'infos)

J'ai fait l'opération sur le plus petit (Nancy)
 $wget
ftp://ftp5.gwdg.de/pub/misc/openstreetmap/osm-full-history-extracts/110919/pbf/europe/france/nancy.osh.pbf
$ osm-history-importer nancy.osh.pbf5
Et tout s'est passé sans encombres.

J'ai fait l'essai de la requête sur les longueurs de voirie après qu'elle
ait été ajustée par Peter Körner, pour coller avec le schéma de la bdd [3].
La réponse arrive quelque part entre 200 et 500 ms pour cette petite zone
(je n'ai pas gardé la trace des résultats exacts, mais ça donne une idée)
En ajustant la date de départ (2010-01-01 dans la requête initiale), j'ai
pu observer les variations des résultats (cf. [4])

Comme par exemple la variation du kilométrage de voirie résidentielle, par
incrément annuel jusqu'à la dernière date valide (18 sept. 2011)
(valeurs à ne considérer qu'en relatif, puisque la projection est 900913
dans la requête)

Date        |   km
-------------------
2008-01-01  |   78
2009-01-01  |  198
2010-01-01  |  315
2011-01-01  |  415
2011-09-18  |  594

Voilà pour les premiers essais. C'est plutôt encourageant.

L'étape suivante intéressante serait de mettre en place une bdd
avec l'extrait france sur un serveur osm-fr,
Permettre d'y faire d'autres requêtes (par une interface de query  [5] ->
en lecture seule et avec un time-out of course),
Présenter les résultats sous une forme attrayante sur le site principal.

Il y a d'abord une contrainte d'espace disque pour la France, la base
devant être un peu plus grosse que la base actuelle d'un extrait
équivalent.
Pas vraiment de contrainte concernant la vitesse de l'import initial et de
la tenue à jour (pas de diff à appliquer) :
le planet "full-history" n'est actualisé que quelques fois par an au mieux.

On pourra aussi regarder plus dans le détail comment fonctionnent les
rendus pour maîtriser la chaine de "production" jusqu'à obtenir une video
_ dans un format libre et répandu, propre, léger, à la bonne résolution
(web, HD, full HD),
_ Pour une zone géographique donnée,
_ Dans la période et au pas de temps la mieux adaptée.
 _ avec les règles de rendu de son choix (ce sont des feuilles de style xml
Mapnik)


==========================================================
[1] Commandes ajustées pour Ubuntu 11.10 et PostgreSQL 9.1

    $sudo -u postgres createdb -E UTF8 -O fabien fabien
    $ sudo -u postgres createlang plpgsql fabien
    $ echo "CREATE EXTENSION hstore;" | psql -d fabien
    $ echo "CREATE EXTENSION btree_gist;" | psql -d fabien
    $ sudo -u postgres psql fabien
</usr/share/postgresql/9.1/contrib/postgis-1.5/postgis.sql
    $ sudo -u postgres psql fabien
</usr/share/postgresql/9.1/contrib/postgis-1.5/spatial_ref_sys.sql
    $ echo 'GRANT ALL ON geometry_columns TO fabien' | sudo -u postgres
psql fabien
    $ echo 'GRANT ALL ON spatial_ref_sys TO fabien' | sudo -u postgres psql
fabien

    $wget
ftp://ftp5.gwdg.de/pub/misc/openstreetmap/osm-full-history-extracts/110919/pbf/europe/france/nancy.osh.pbf
    $ osm-history-importer nancy.osh.pbf5
[2] https://github.com/MaZderMind/osm-history-renderer/blob/master/README.md

[3] Requête SQL
    select tags->'highway' AS highway,

      count(way),
         round(sum(ST_Length(way)) / 1000) as kilometers
    from hist_line

         where tags ? 'highway' AND
        tags->'highway'
         IN (
           ('motorway'),
           ('trunk'),
           ('primary'),
           ('secondary'),
           ('tertiary'),
           ('unclassified'),
           ('residential'),
           ('track'),
           ('path'),
           ('footway')
        )
    AND '2010-01-01' BETWEEN valid_from AND COALESCE(valid_to, '9999-12-31')
    group by tags->'highway';

 [4] Résultats des Requête SQL

2008-01-01

"unclassified";44;19
"secondary";81;116
"primary";73;138
"track";1;1
"motorway";36;68
"trunk";2;2
"tertiary";83;58
"residential";186;78
_______________________

2009-01-01

"unclassified";93;34
"secondary";188;166
"primary";120;159
"track";1;1
"footway";36;10
"motorway";42;64
"trunk";10;6
"tertiary";189;119
"path";3;3
"residential";582;198
_______________________

2010-01-01

"unclassified";129;30
"secondary";254;174
"primary";117;147
"footway";216;35
"track";18;29
"motorway";47;64
"trunk";19;17
"tertiary";220;131
"path";34;30
"residential";985;315
_______________________

2011-01-01

"unclassified";138;30
"primary";194;171
"secondary";263;191
"footway";273;40
"track";34;40
"motorway";48;64
"trunk";19;17
"tertiary";215;123
"path";102;55
"residential";1404;415
_______________________

2011-09-18
"unclassified";156;45
"primary";207;164
"secondary";290;190
"footway";310;53
"track";78;67
"motorway";53;61
"trunk";25;23
"tertiary";280;147
"path";130;63
"residential";2102;594

[5] http://www.gis.hsr.ch/wiki/PostGIS_Terminal
-- 
ab_fab <http://wiki.openstreetmap.org/wiki/User:Ab_fab>
"Il n'y a pas de pas perdus"
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://lists.openstreetmap.org/pipermail/dev-fr/attachments/20111206/8bc76a3c/attachment-0001.html>


Plus d'informations sur la liste de diffusion dev-fr