FR:User:Petrovsk/Osm2pgsql style

From OpenStreetMap Wiki
Jump to navigation Jump to search

Lors de l'import d'un fichier OSM dans une base PostGIS à l'aide de osm2pgsql, ce n'est pas la totalité des données qui est importée, mais celles définies par le style d'import. Ce style est un fichier listant les tags OSM définissant les éléments devant être importés. Osm2pgsl est fourni avec un style par défaut que nous pouvons modifier selon nos besoins.

Pourquoi modifier le fichier de style ?

Osm2pgsql est destiné à la base à fournir les données permettant un rendu mapnik généraliste.
On peut vouloir faire un rendu de carte personnalisé, visualiser les données dans Qgis, les analyser avec des requêtes SQL… Et pour savoir combien il y a de pistes de ski par département il faut qu'elles soient dans la base de données, et pour cela modifier le style d'importation en conséquence.

Le style par défaut

Celui-ci se nomme fort justement default.style et se trouve, du moins chez moi, dans /usr/local/share/.

Les commentaires répartis dans le fichier détaillent un peu son fonctionnement, les données apparaissent comme un tableau à quatre colonnes : OsmType, Tag, DataType et Flags.
Chaque ligne décrit l'action à mener sur une clé, un tag particulier étant la combinaison d'une clé et d'une valeur. Ainsi, chaque ligne traite d'une famille de tags, par exemple toutes les valeurs possibles de highway ou de sport.

  • La colonne OsmType indique le type de données OSM à traiter, points ou lignes (node ou way). Les polygones sont des lignes fermées et les relations regroupent indifféremment points ou lignes.
  • Tag désigne la famille de tags.
  • DataType est le type de donnée (dans la base), dans la pratique, tous les tags sont de type texte (text)
  • Flags indique l'action à appliquer aux données :
    • delete permet de supprimer des tags. L'exemple donné est celui du tag source, inutile pour le rendu (à moins de vouloir spécifiquement l'utiliser)
    • nocache indique que le tag n'est pas utilisé par des lignes et ne doit pas être stocké
    • linear est dévolu aux données linéaires (!)
    • polygon marque les éléments qui intègreront dans la base de données la table des polygones

Il est à noter que pour une même clé, les deux types de données OSM peuvent cohabiter avec des actions différentes. Par exemple le style par défaut contient la ligne suivante :

node,way   amenity      text         nocache,polygon

Modifier le style et l'utiliser lors de l'import

Pour être tranquille, faire une copie du style par défaut et le renommer. Il sera rappelé dans la ligne de commande d'import de la façon suivante : -S /chemin/vers/<nom>.style, la commande finale peut ressembler à ça :

osm2pgsql -s -d <base> -S /chemin/vers/<nom>.style <fichier>.osm

Vers la fin du fichier de style se trouve une zone prévue pour les additions, voici les miennes pour l'instant :

# additions
 node,way   piste:type        text     linear
 node,way   piste:difficulty  text     linear
 way        highspeed         text     linear
 node       mountain_pass     text     nocache
 way        boat              text     linear

Les deux premières lignes me permettent d'afficher les stations de ski et leurs pistes, la troisième indique les lignes ferroviaires à grande vitesse. La suivante ajoute les cols à la base et la dernière permet de différencier les voies navigables des autres cours d'eau.
Rien n'empêche de supprimer des lignes inutiles ou bien de passer le tag source de delete en linear pour pouvoir colorer les limites administratives selon leur source.