Skip to content

Latest commit

 

History

History
90 lines (71 loc) · 8.07 KB

Contribution.md

File metadata and controls

90 lines (71 loc) · 8.07 KB

Si vous pensez qu'une thématique manque, n'hésitez pas à nous contacter pour en discuter !
Chaque nouvelle thématique consomme des ressources sur le serveur de magOSM, nous essayons donc de privilégier des thématiques utiles au plus grand nombre.

Proposer une nouvelle couche thématique

Pour enrichir le service d'une nouvelle couche de données sur une thématique, les étapes suivantes sont nécessaires:

  • Ouvrir un pad collaboratif (Framapad ou équivalent)
  • Y renseigner 3 sections :
    • requête PGSQL correspondant à la thématique
    • style SLD qui sera utilisé par défaut pour le format WMS
    • fiche de métadonnées (le titre et la description suffisent)
  • Nous vérifions/testons vos ajouts sur le serveur
  • Vous réalisez une Pull Request sur le dépôt Github afin que votre contribution soit intégrée

Définir la requête SQL

Introduction

La base de données magOSM est basée sur Osm2pgsql qui crée notamment 3 tables d'exploitation dans le schéma magosm :

  • magosm.france_point
  • magosm.france_line
  • magosm.france_polygon

Pour créer une nouvelle thématique dans magOSM il faut commencer par créer une "vue" PGSQL.
Il est possible de s'inspirer d'une requête existante proche de votre thématique.

Syntaxe de requête pour les tags

Généralités
Lors de l'import de la donnée OSM dans la base de données PGSQL à l'aide de Osm2pgsql, les attributs (tags) les plus "fréquents" sont importés dans des colonnes dédiées (ex : l'attribut "name"), et les moins fréquents sont tous relégués dans une colonne "tags" de type hstore qui est une succession d'associations clé/valeur.

Exemple de contenu de la colonne tags :
{"colour"=>"#dda0dd", "network"=>"Agglobus Cavem", "osm_uid"=>"0", "osm_user"=>"", "route_name"=>"11: Les Deux Collines => Lycée Camus", "osm_version"=>"66", "osm_changeset"=>"0", "osm_timestamp"=>"2018-11-22T17:53:42Z", "route_pref_color"=>"0", "public_transport:version"=>"2"}.

  1. pour récupérer un attribut "fréquent" il suffit de faire un SELECT tag_frequent
    Exemple : SELECT name FROM magosm.france_line WHERE ...
  2. alors que pour récupérer un attribut "moins fréquent", il faut faire un SELECT tags->'tag_peu_frequent' AS "tag_peu_frequent"
    Exemple : SELECT tags->'network' AS "network" FROM magosm.france_line WHERE ...

La liste des attributs "fréquents" est définie par le style magosm.style utilisé par Osm2pgsql pour l'import. Si la clé de l'attribut d'intérêt n'est pas listé dans le fichier magosm.style, c'est qu'il se trouvera dans la colonne tags de type hstore.

Indexes

Pour des questions de performance, on s'assurera qu'un index est déjà défini pour la colonne de filtrage correspondant à la thématique (exemple : la colonne "building" pour les bâtiments) : vérifiez dans la liste des index existants

Attributs avec cacatères spéciaux

On adopte la convention suivante : si la clé de l'attribut utilisé contient le caractère deux-points " : " (exemple : public_transport:version) alors on remplacera le ":" par un tiret "-" dans l'alias, exemple :

  • pour un tag "fréquent" : SELECT "addr:housename" AS "addr-housename"
  • pour un tag "peu fréquent" : SELECT tags->'public_transport:version' AS "public_transport-version"

Relations

Les objets OSM de type "relation" sont également disponibles dans les tables france_line et france_polygon, avec un osm_id négatif égal à l'opposé de l'identifiant de la relation dans OSM (exemple : la ligne de bus 11: Les Deux Collines => Lycée Camus (8937340) est présente sous forme d'une multi-ligne dans la table france_line avec osm_id=-8937340).
C'est pourquoi pour la thématique des lignes de bus on requête sur osm_id<0 : v_bus_routes_line.sql
Et la ligne de bus est consultable via le portail magOSM ici.
Dans le cas où l'on voudrait également récuper la liste des arrêts de bus (nodes) associés à la relation, la liste complète des identifiants des membres de la relation est disponible dans la table france_rels et les objets nodes se trouvent dans la table france_point.

Définir le style SLD

S'inspirer d'un style existant. Exemple de styles simples :

Rédiger la fiche de métadonnées

Se limiter aux champs "Titre" et "Résumé".
Exemples pour :

Rajouter la couche dans le fichier de configuration

S'inspirer d'un couche déjà existante. Le fichier est ici. Quelques remarques :

  • L'attribut md_url ne peut pas être complété tant que nous n'avons pas ajouté la couche dans GeoServer.
  • L'attribut main_feature_infos permet d'ajouter les informations importantes sur l'objet qui vont s'afficher sur le panneau de gauche lorsqu'un objet est sélectionné sur la carte. Il existe 4 catégories high, medium, low, et no. Pour les trois premières, seul UN tag de la liste des sub_tags va réellement s'afficher : c'est celui qui aura la valeur de priorité la plus importante ET qui est contenu dans la liste des tags de l'objet sélectionné. Pour la catégorie no, tous les tags listés seront affichés.
    • Les valeurs de priority doivent débuter à 1, l'ordre n'est pas important mais il ne faut pas sauter d'entier. Par exemple, une liste avec "priority":1 puis "priority":3 sans un "priority":2 n'est pas valide.
    • Il n'y a pas de priorité pour no, les tags s'affichent dans l'ordre de la liste.
    • Rajouter si nécessaire des labels afin de mieux comprendre les valeurs qui seront affichées.

Pull request

Pour réaliser une pull request via l'interface Web de Github :