FR:JOSM/Greffons/PT Assistant

From OpenStreetMap Wiki
Jump to navigation Jump to search

Documentation pour le greffon (plugin) Assistant pour les Transports publics de JOSM : Introduction

Cartographier les transports publics avec JOSM

Le greffon (plugin) valide les itinéraires (route) de transport public à partir d’un ensemble de critères et suggère, si possible, des moyens de les réparer.

Le greffon n'a pas d'interface utilisateur dédiée, il est entièrement intégré dans le noyau de JOSM validator.

Cette page "est éditée" et reflète seulement l'état actuel du greffon. Les signalements de développement peuvent se trouver ici dans l' ordre chronologique.

Une présentation du greffon à la conférence du FOSS4G (Brussels, 22.09.2016) est disponible ici.

Le code du greffon est dans le dépôt github de JOSM.

Voir aussi JOSM/Plugins/PT Assistant/Goals.

Portée

Relations d'itinéraire (route relation) pour lesquelles il est possible de signaler des erreurs et de proposer des corrections

Il y a deux versions du schéma de transport public, et certains types d'itinéraires sont mappés différemment que d'autres.

Une relation d'itinéraire est testée par le greffon si elle :

ET

ET

  • n’a pas le tag bus=on_demand (Les bus "on_demand" n’ont pas d'itinéraires fixes. Donc, des chemins (way) ne peuvent pas être ajoutés pour décrire les itinéraires).

Membres pertinents de la relation d'itinéraire (route)

Critères pour les tags "platforms" et "stop_positions" (PTStop):

Chaque arrêt correspond à un "plugin class PTStop". Si une relation d'itinéraire comporte deux membres consécutifs qui appartiennent au même arrêt (un "platform" et un "stop_position"), ils formeront un "PTStop".

Critères pour les chemins "ways"(PTWay) :
  • Ne peut pas être un "Node" de "OsmPrimitiveType"
  • Si le "OsmPrimitiveType" est "Way", le membre de la relation ne peut pas avoir de tags public_transport=platform, highway=platform ou railway=platform
  • Si le "OsmPrimitiveType" est une "Relation", cette relation imbriquée est uniquement autorisée à avoir des "Ways" en tant que membres.

Si un membre de la relation d'itinéraire ne satisfait pas à ces critères, il n'est pas ajouté au modèle, mais un avertissement "PT: Relation Member roles not match tags" apparaît.

Tests disponibles

# Message d’erreur Quel est le problème ? Que se passe-t-il si j'appuie sur le bouton "Réparer" ? Auteur
1 PT: Route type does not match the type of the road it passes on Le type d'itinéraire (p. ex. bus/tram/train etc.) doit passer d'une manière qui correspond à ce type, p. ex. les trains ont besoin de rails et les bus ne doivent pas transmettre sur les rues qui sont réservées aux piétons ou aux bicyclettes. JOSM zoome sur le problème, sélectionne la(les) voie(s) problématique(s) et ouvre l’éditeur de relation pour l'itinéraire correspondant. darya
2 PT: Road is under construction Il y a une route marquée comme étant en construction. JOSM zoome sur le problème, sélectionne la(les) voie(s) problématique(s) et ouvre l’éditeur de relation pour l'itinéraire correspondant. darya
3 PT: Route passes a oneway road in wrong direction Le chemin est tagué comme un sens unique, et l’itinéraire l’emprunte dans la mauvaise direction. Ce test fonctionne uniquement pour des chemins seuls, mais ne détecte pas les séquences plus complexes avec des chemins dans le mauvais sens et des tronçons de carrefours giratoires. JOSM zoome sur le problème, sélectionne la(les) voie(s) problématique(s) et ouvre l’éditeur de relation pour l'itinéraire correspondant. darya
4 PT: Route contains a gap that can be fixed by sorting Si les membres de la relation d'itinéraire sont analysés dans l'ordre actuel, il y a une rupture dans la continuité (un écart fictif). Si le tri était effectué, il n'y aurait pas de coupure. En outre, ce message indique qu'il n'y a pas d'autres problèmes détectés dans cet itinéraire car, en cas de vides réels (chemins absents), le tri ne serait pas suffisant pour éliminer les manques. Les membres de la relation d'itinéraire sont triés. darya
5 PT: Relation member roles do not match tags Un membre de la relation d'itinéraire ne remplit pas les critères pour PTStop ou PTWay énumérés ci-dessus dans "Membres pertinents de la relation d'itinéraire (route)" Pas de correction disponible. darya
6 PT: Route should start and end with a stop_position Il n'y a pas de stop_position au début ou à la fin de l'itinéraire. Pas de correction disponible. darya
7 PT: First or last way needs to be split Le stop_position au début/fin de l'itinéraire existe mais ce n'est pas le premier ou le dernier nœud du chemin. Pas de correction disponible. darya
8 PT: Stop_position is not part of a way Le stop_position n'est référencé d'aucune façon avec un tag de public-transport (comme platform, railway , etc.). On demande à l'utilisateur s'ils veulent changer la valeur du tag du nœud en "platform". Si l'utilisateur appuie sur "oui", le tag est corrigé. darya
9 PT: Platform should not be part of a way Le nœud "platform" fait partie d'un "way". On demande à l'utilisateur s'il veut modifier la valeur du tag vers "stop_position". Si l'utilisateur appuie sur "oui", le tag est corrigé. darya
10 PT: Stop not served L'arrêt (et ses éléments "platform" et/ou "stop_position") sont situés trop loin (> = 0,002 degrés) de n'importe quel chemin de l'itinéraire donné. Pas de correction disponible. darya
11 PT: Problem in the route segment with one automatic fix Les chemins entre deux arrêts consécutifs (comme indiqué dans la relation d'itinéraire) ne sont pas continus. Cela peut être pour diverses raisons: segments absents ou segments présents mais inutiles, mauvais classement, "ways" non découpés, etc. Les chemins du segment d'itinéraire (c-à-d la partie de l'itinéraire entre deux arrêts consécutifs) sont remplacées par le segment correct correspondant ou par les voies qui constituent l'itinéraire donné. JOSM zoome sur le problème. darya
12 PT: Problem in the route segment with several automatic fixes Les chemins (ways) entre deux arrêts consécutifs (comme indiqué dans la relation d'itinéraire) ne sont pas continus. Cela peut être dû à diverses raisons: segments absents ou présence de segments inutiles, mal triés, "ways" non découpés, etc. Les variantes du correctif sont affichées avec des couleurs différentes et JOSM zoome sur le problème. Les 5 premières variantes peuvent être affichées et marquées avec des lettres A-E. L'utilisateur peut soit sélectionner la lettre correspondante, soit appuyer sur Ech pour aucune correction. Une fois qu'une variante du correctif est sélectionnée, l'itinéraire est modifié et la fenêtre de l’éditeur de relation s'ouvre, avec les "ways" problématiques sélectionnés. darya
13 PT: Problem in the route segment with no automatic fix Les "ways" entre deux arrêts consécutifs (comme indiqué dans la relation d'itinéraire) ne sont pas continus. Cela peut être pour diverses raisons: segments absents ou segments présents inutiles, mal triés, "ways" non découpés, etc. JOSM zoome sur le problème, sélectionne le(les) "way"(s) problématique(s) et ouvre l’éditeur de relation pour l'itinéraire correspondant. darya
14 PT: Stop area relation has no stop position Il y a une relation "stop area" sans "stop_position" spécifié. Pas de correction disponible. xamanu
15 PT: Stop area relation has no platform Il y a une relation "stop area" sans "platform" spécifiée. Pas de correction disponible. xamanu
16 PT: Stop position or platform is not part of a stop area relation Tous les éléments marqués comme "stop_position" et "platform" devraient faire idéalement partie d'une relation "stop area". Pas de correction disponible. xamanu
17 PT: Route relations of stop position(s) and platform(s) of stop area members diverge Il existe un écart entre les relations d’itinéraires de "public transport" affectées aux "stop position(s)" et "platform(s)" qui font partie d'une relation "stop area". Pas de correction disponible. xamanu

Recommandations

  • Activez l'option "Utiliser la couche d'erreur" pour une meilleure visualisation des primitives problématiques (Préférences => Validateur de données => Tests => Utiliser la couche d'erreur).
  • Si vous activez l'option "Download incomplete route relation members" dans les Préférences => Validateur de données => PT_Assistant) en travaillant sur un grand ensemble de données, sélectionnez les relations d'itinéraires souhaitées avant de valider, sinon le téléchargement de membres incomplets peut prendre trop longtemps.
  • Ouvrez la fenêtre "Pile de commandes" dans JOSM, surtout si vous utilisez les correctifs automatisés pour les avertissements liés au segment d’itinéraires ("PT: Problem in the route segment..."). Cela vous aidera à voir quels changements ont été effectués et à faire un "revert" si nécessaire.

Couche pt_assistant

Le greffon ajoute une couche supplémentaire nommée "pt_assistant" à la liste des couches. Une fois qu’au moins une relation d'itinéraire pertinente a été sélectionnée, elle reçoit une coloration pourpre. Les arrêts sont numérotés selon leur ordre dans la relation.

couche de Pt_assistant montrant l'itinéraire sélectionné (#8) en violet avec les arrêts (#8 and 9) en blanc et les itinéraires qui utilisent ces arrêts en rose. Les triangles blancs simples montrent une voie à sens unique (nord), les deux triangles blancs bidirectionnels montrent une voie à sens unique unique où les véhicules de transport public sont autorisés à passer dans les deux sens (sud).

Tests "stop-by-stop" et multiples variantes de correctifs

Variantes de correctifs affichées sur la carte

Les tests #11-13 dans le tableau utilisent l'approche "stop-by-stop". Cela signifie qu'ils regardent séparément à chaque tronçon de l'itinéraire entre deux arrêts consécutifs (appelés 'route segment' dans cette documentation). Si aucune erreur n'a été trouvée dans un segment d'itinéraire, ce segment est ajouté à la liste des segments corrects. Ces tests recherchent des variantes de correction dans l'ordre suivant :

  1. Recherche, dans la liste des segments "corrects", un segment dont les premiers/derniers "ways" égale les premiers/derniers "ways" du segment d'itinéraire problématique.
  2. Essaye de ré-ordonner et de supprimer les "ways" du segment "problématique" lui-même afin d'obtenir une séquence continue de "ways" entre les deux arrêts
  3. Recherche dans la liste des segments "corrects" pour un segment dont les premiers/derniers arrêts égal aux premiers/derniers arrêts du segment d'itinéraire "problématique" (dans ce cas, la notification "Warning: the displayed fix variants are based on less strict criteria" est affiché)

Les tests "stop-by-stop" (#11-13) peuvent présenter plusieurs suggestions. Si le bouton “fix” est pressé dans de tels cas, les suggestions sont affichées à l'aide de différentes couleurs dans la couche pt_assistant. Jusqu'à 5 options de correctif peuvent être affichées. Elles sont étiquetés à l'aide des lettres A-E. L'utilisateur peut sélectionner le correctif souhaité en tapant la lettre correspondante au clavier. La touche "Esc" peut être pressée pour ne choisir aucune correctif.




Modèle de données

Le greffon classe les membres de la relation d'itinéraire dans PTStops (classe PTStop) et PTWays (classe PTWay).

Un PTStop est conçu pour modéliser un stop_position et une platform consécutifs comme un seul arrêt s'ils sont assez proches (<0,002 degrés) l'un de l'autre. Un PTStop peut stocker le stop_position et/ou la platform comme ses éléments.

Un PTWay représente les voies membres liés à la relation d'itinéraire (way-related members of a route relation). Le membre d’une relation peut être une voie ou une relation.

Les critères pour les deux "PTStop" et "PTWay" sont listés ci-dessus (Portée). Si un membre de la relation d'itinéraire ne correspond pas à la définition de l'une de ces classes, il en résulte un avertissement "PT: Relation member roles do not match tags" (#5 dans le tableau).

Bien que non utilisé (largement) dans l'ensemble actuel de tests du validateur et les correctifs, le greffon a le potentiel de gérer les membres de relation imbriqués, c'est-à-dire les cas où un membre d'une relation d'itinéraire est lui-même une relation. Les conditions préalables sont que la relation imbriquée ne peut inclure que des ways (pas de stops) et l'ordre des ways à l'intérieur de la relation imbriquée doit être correct (car il n'est pas encore validé). Pour cela, la base a été mise en œuvre dans les classes PTWay et PTDataManager.

"Stop-to-way assigner"

Les arrêts doivent être liés au "way" pertinent de leur relation d'itinéraire. En règle générale, c'est le "way" le plus proche de l'arrêt en question. La recherche du "way" correspondant dans l'ordre suivant :

  1. Vérifie si ce stop a déjà été affectée à un "way". Les stop assignés sont stockés dans une table (HashMap).
  2. Si l'arrêt a un "stop_position", il l’utilise pour trouver le "way" duquel le "stop_position" fait partie.
  3. Si les éléments de l'arrêt appartiennent à une relation "stop_area", recherche si cette "stop_area" contient un "stop_position" et utilise son "way" de référence.
  4. Recherche d'un "stop_position" à proximité du stop (seuil de distance 0,002 degrés).
  5. Utilise un algorithme "growing-bounding-boxes". Trouve des noeuds dans une zone de délimitation "bounding box" de la taille donnée (qui augmente après chaque boucle de recherche infructueuse), puis trouve les voies “ways” de l'itinéraire courant auquel ces nœuds appartiennent. S'il y a plusieurs possibilités, la voie (way) la plus proche est sélectionnée en calculant la distance d'un point à la ligne. Ce calcul est basé sur les formules pour l'aire d'un triangle (formule "Heron" 1/2 x base x hauteur).

entrées du menu "Outils"

entrées "Add stop position" et "Repeat last fix" dans le menu "Outils"

Des entrées ont été ajoutés au menu Outils de JOSM par le plugin pt_assistant :

  • "Répétez la dernière correction" (Repeat last fix) : permet d'appliquer la dernière correction du test "stop-by-stop" à d'autres itinéraires qui partagent le même segment d'itinéraire. L'entrée du menu est désactivée si le dernier correctif n'est pas disponible (par exemple, aucune erreur stop-by-stop n'a encore été corrigée) ou si aucun autre itinéraire problématique ne partage le même segment d'itinéraire.
  • "Split roundabout" : Roundabouts can be made up of 1 closed way, but this looks ugly when representing the route visually. The ways are split on those nodes that have ways, which are members of route relations (except when it's route=road). Then each route relation is treated and those ways of the roundabout that aren't needed are removed.
  • "Sort PT Route Members"
  • "Transfer details of stop to platform node"


New map modes

  • Add stop position: adds a stop_position node at a specified location, includes tags. If this is the first or the last way of the itinerary the way is split and only the part that really belongs to the route is kept.
  • Edge selection: Select several connected ways that are suitable for the mode of transport, for which the relation editor window has focus. An edge is a continuous set of ways between 'forks' or between a fork and where a stop_position is the end node of a way.

Préférences

Préférences pour le greffon “pt_assistant” avec leurs valeurs par défaut

Les paramètres utilisateur sont stockés sous "Éditer => Préférences => Validateur de données => PT_Assistant:

  • L'utilisateur peut sélectionner si les membres de la relation incomplète doivent être téléchargés. Dans le cas où une relation d'itinéraire a des membres incomplets qui n'ont pas été téléchargés, cette relation est ignorée sans validation.
  • L'utilisateur peut décider d'exclure les tests qui imposent l'ajout de relations "stop_area" pour chaque arrêt.

Voir également