FR:JOSM/Greffons/PT Assistant

From OpenStreetMap Wiki
Jump to navigation Jump to search

Documentation pour le greffon Assistant pour les Transports Publics de JOSM (pt_assistant) : Introduction

Cartographier les transports publics avec JOSM

Le greffon 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 du Validateur de JOSM.

Cette page "est éditée" et reflète seulement l'état actuel du greffon. L'avancement du travail peut se trouver ici (en), dans l'ordre chronologique.

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

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

Voir aussi les Objectifs (en).

Champ d’application du greffon

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 l’attribut bus=on_demand (Les bus "on_demand" (TAD) n’ont pas d'itinéraires fixes, mais disposent généralement d'une liste de stations auxquelles ils peuvent s'arrêter (certains opérateurs de réseau peuvent ajouter des arrêts supplémentaires après une réservation spécifique et une autorisation, si la sécurité de l'arrêt et les conditions de circulation locales le permettent). Il n'est donc pas possible d'ajouter des chemins pour décrire ces itinéraires.

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

Critères pour les attributs "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 nœud "Node" de "OsmPrimitiveType"
  • Si le "OsmPrimitiveType" est "Way", le membre de la relation ne peut pas avoir d’attributs 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" (PT: Les rôles des membres de la relation ne correspondent pas aux attributs) 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: Le type d’itinéraire ne correspond pas au type de route sur lequel il passe Le type d'itinéraire (p. ex. bus/tram/train etc.) doit passer sur un chemin qui corresponde à ce type, p. ex. les trains ont besoin de rails et les bus ne doivent pas circuler dans 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: La route est en construction C’est 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: l’itinéraire passe une route à sens unique dans la mauvaise direction Le chemin a un attribut l’indiquant en 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: Le trajet contient un trou qui peut être corrigé par un tri 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: Les rôles des membres de la relation ne correspondent pas aux attributs 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: l’itinéraire doit commencer et se terminer par 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: Le premier ou le dernier chemin doit être divisé 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: La position d’arrêt ne fait pas partie d’un chemin Le stop_position n'est référencé par aucun chemin avec un attribut de public-transport (comme platform, railway , etc.). On demande à l'utilisateur s'ils veulent changer la valeur de l’attribut du nœud en "platform". Si l'utilisateur appuie sur "oui", l’attribut est corrigé. darya
9 PT: L’arrêt (platform) ne doit pas faire partie d’un chemin Le nœud "platform" fait partie d'un "way". On demande à l'utilisateur s'il veut modifier la valeur de l’attribut du nœud à "stop_position". Si l'utilisateur appuie sur "oui", l’attribut est corrigé. darya
10 PT: arrêt non desservi 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: problème dans le trajet avec une correction automatique 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 chemins qui constituent l'itinéraire donné. JOSM zoome sur le problème. darya
12 PT: Problème dans le trajet avec plusieurs corrections automatiques 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, chemins "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 les lettres A-E. L'utilisateur peut soit sélectionner la lettre correspondante, soit appuyer sur Echap 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 chemins "ways" problématiques sélectionnés. darya
13 PT: Problème dans le trajet sans correction automatique Les chemins "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 inutiles présents, mal triés, chemins "ways" non découpés, etc. Correction désactivée darya
14 PT: La relation de zone d’arrêt n’a pas de stop position Il y a une relation "stop area" sans "stop_position" spécifié. Pas de correction disponible. xamanu
15 PT: la relation de zone d’arrêt n’a pas de plateforme Il y a une relation "stop area" sans "platform" spécifiée. Pas de correction disponible. xamanu
16 PT: Stop La position ou la plate-forme ne fait pas partie d’une relation de zone d’arrêt 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: Les relations d’itinéraire de la (des) positions d’arrêt et la (les) plateforme(s) d’éléments de zone d’arrêt divergent 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 le calque d'erreur" pour une meilleure visualisation des primitives problématiques (Préférences => Validateur de données => Tests => Utiliser le calque d'erreur).
  • Si vous activez l'option "Télécharger les membres incomplets de la relation d’itinéraire" dans les "Préférences => Paramètres PTAssistantPlugin => Validateur" 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: problème dans le trajet..."). Cela vous aidera à voir quels changements ont été effectués et à faire un "revert" si nécessaire.

Calque pt_assistant

Le greffon ajoute un calque supplémentaire nommé "pt_assistant" à la liste des calques.

Le calque s'affichera dès que l'utilisateur sélectionnera une relation d'itinéraire. Bien qu'il soit principalement destiné aux relations de transport public, il s'activera également pour les relations à vélo ou à pied. 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.

calque de Pt_assistant montrant l'itinéraire sélectionné (#8) en violet avec les arrêts (#8 et 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 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 'route segment', ce segment est ajouté à la liste des segments corrects. Ces tests recherchent des variantes de correctif 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 'route segment' problématique.
  2. Essaye de ré-ordonner et de supprimer les chemins "ways" du segment "problématique" lui-même afin d'obtenir une séquence continue de chemins "ways" entre les deux arrêts
  3. Recherche dans la liste des segments "corrects" pour un segment dont les premiers/derniers arrêts sont égaux aux premiers/derniers arrêts du 'route segment' problématique (dans ce cas, la notification Avertissement: les variantes de correction affichées sont basées sur des critères moins stricts est affichée)

Les tests "stop-by-stop" (#11-13) peuvent présenter plusieurs suggestions. Si le bouton “Réparer le problème” est pressé dans de tels cas, les suggestions sont affichées à l'aide de différentes couleurs dans le calque pt_assistant. Jusqu'à 5 options de correctif peuvent être affichées. Elles sont étiquetées à l'aide des lettres A-E. L'utilisateur peut sélectionner le correctif souhaité en tapant la lettre correspondante au clavier. La touche "Echap" peut être pressée pour ne choisir aucun 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 chemins membres liés à la relation d'itinéraire (way-related members of a route relation). Le membre d’une relation peut être un chemin 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: Les rôles des membres de la relations ne correspondent pas aux attributs " (#5 dans le tableau).

Bien que non utilisé (largement) dans l'ensemble actuel des tests du validateur et des 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 chemins (ways, pas de stops) et l'ordre des chemins à l'intérieur de la relation imbriquée doit être correct (car il n'est pas encore validé). Dans la base, cette fonctionnalité a été implémentée dans les classes PTWay et PTDataManager.

"Stop-to-way assigner" (Attribution de l'arrêt à la voie)

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

  1. Vérifie si ce stop a déjà été affectée à un chemin (way). Les stops assignés sont stockés dans une table (HashMap).
  2. Si l'arrêt a un "stop_position", il l’utilise pour trouver le chemin (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 chemin (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 nœuds 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 chemins (ways) de l'itinéraire courant auquel ces nœuds appartiennent. S'il y a plusieurs possibilités, le chemin (way) le 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).

Éléments du menu "Transport public"

Ajout du menu "Public Transport"

Un menu specifique a été ajouté aux menus de JOSM par le greffon avec les éléments :

  • Découper le rond-point : Les giratoires peuvent être constitués d'un seul chemin fermé, mais cela n'est pas très esthétique lorsque l'on représente visuellement l'itinéraire. Les chemins sont divisés au niveau des nœuds qui comportent des chemins, lesquels sont membres de relations d'itinéraire (sauf lorsque route=road). Ensuite, chaque relation d'itinéraire est traitée et les chemins du giratoire qui ne sont pas nécessaires sont supprimés.
  • Transférer les détails de l’arrêt au nœud plateforme :
  • Trier les membres de la relation route :
  • Assistant PT :
  • Visualiser les lignes de transport public :
  • Distance entre les arrêts :
  • Personnaliser l’arrêt :

Nouveaux modes de carte et ajout au menu Mode

"Ajout des éléments « Position d'arrêt » et « Sélection des bords » dans le menu Mode

Deux éléments ont été ajoutés au menu Mode de JOSM par le greffon pt_assistant :

  • Ajouter la position d'arrêt : ajoute un nœud stop_position à un emplacement spécifié, y compris les attributs. S'il s'agit du premier ou du dernier segment de l'itinéraire, celui-ci est divisé et seule la partie qui appartient réellement à l'itinéraire est conservée.
  • Sélection des 'bords' : sélectionne plusieurs chemins connectés qui conviennent au mode de transport pour lequel l'éditeur de relations est actif. Un 'bord' est un ensemble continu de chemins entre des « bifurcations » ou entre une bifurcation et un point d'arrêt qui est le nœud final d'une voie.

























Préférences

Paramètres pour le greffon pt_assistant

Les paramètres utilisateur sont stockés sous "Éditer => Préférences => Paramètres PTAssistantPlugin :

  • Validateur :
    • 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.
  • Déplacer les détails vers les nœuds situés à proximité de highway/railway
  • Assistant de routage :
  • Mode de modélisation du découpage du chemin au début/fin des relations d'itinéraire :

Voir également