-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Route ou rue en plusieurs branches (rue en T, route à chaussées séparées, rue en morceaux disjoints …) #713
Comments
Moi je ne m'embêterai pas côté code et je permettrai cela. |
@jjacquelinet J'ai mis un tableau récapitulatif du comportement avant/après Je crois qu'il manque dans ce que j'ai écrit le mécanisme qui permettrait de couvrir le cas de la rue vauvenargues, c'est-à-dire un linéaire avec un trou de taille acceptable, qu'on voudrait "combler" le temps de relier les points demandés |
Beau travail !! Pour le trou de la rue Vauvenargues, pour moi il faut combler avec le réseau existant (dans ce cas, un petit bout de la rue Championnet), dont on retire la géométrie à la toute fin. |
Comment ça se calcule ? Je dirais comme ça...
|
Peut-être qu'utiliser directement ST_DWithin sera plus efficace ? (à ne pas confondre avec ST_DFullyWithin ;)) Mais je vais vérifier si on a besoin de faire ça. En effet, c'est inutile si on arrive à modifier le coût (basé sur la longueur) des tronçons de rue ou de route à chaque requête (pondération |
Pour retirer la géométrie, en fait : un calcul d'itinéraire nous retourne une liste d' |
Je me dis qu'à force de vouloir absolument obtenir une géométrie pour ces cas "complexes" on risque de sur-interpréter là où l'utilisateur devrait rentrer beaucoup plus de détails... Le cas des rues / routes à plusieurs voies est dans ce ticket #424 J'aurais le même questionnement, à quoi ressemblent les arrêtés pris sur ces arrêtés, arrive-t-il qu'ils bloquent TOUT le boulevard (donc la solution proposée pourrait fonctionner, seulement une voie (donc #424), autre ? À un moment est-ce qu'un dessin sur une carte ne serait pas plus simple pour ces cas-là... ? Est-ce que notre énergie est mieux focalisée sur ces cas complexes, ou bien sur le shipping de données existantes aux GPS ? Pas facile de donner une direction et des priorités mais il faut faire attention au scope creep car la modélisation de la voirie est très complexe avec plein de cas, il faut aussi qu'on dise stop pour l'instant on va traiter ça et le reste tant pis, erreur... à mon humble avis... |
Je comprends tout à fait tes craintes de trop vouloir en faire, d'"écraser la mouche avec le marteau", mais on fait d'une pierre deux coups : on traite à la fois les cas simples et les cas complexes avec un seul algorithme, qui n'est pas si compliqué. Pour l'instant je crois qu'on se focalise sur l'interdiction totale, sur toutes les chaussées de la route ou de la rue, et sur toutes les voies de chaque chaussée. Il n'y a pas encore de notion de spécification de direction, de chaussée ou de voie particulière, j'ai bon ?
Je pense aussi que c'est dans ces derniers cas (chaussées multiples, voies multiples) qu'un dessin sur une carte permettra aux cas les plus complexes d'être traités. |
Je reviens sur ce que j'ai écrit hier : "calculer tous les chemins accessibles à partir d'un nœud" : on y arrive aussi en sélectionnant les géométries par le nom de rue ou de route, évidemment 😵💫 … et ça "casse" la sélection entre deux numéros de rue ou entre deux PR vu qu'on part dans tous les sens. |
Résultat d'un point avec @mmarchois Vu les remarques de Waze #716 relatifs aux "segments", on devrait peut-être étudier sérieusement la piste de passer à une représentation basée sur les "tronçons de route" BD TOPO (la table voie nommée est obtenue par concaténation de tronçons portant sur la même voie donc théoriquement tout ce qu'on peut faire aujourd'hui peut aussi être fait en partant des tronçons) En effet une fois qu'on a les tronçons de route, on peut faire les opérations plus avancées comme du calcul d'itinéraire pour déterminer la suite de tronçons à sélectionner entre les deux points demandés (du N° untel à l'intersection untelle...). On peut aussi donner la localisation découpée en tronçons à Waze Mathieu est en train d'importer la table En attendant d'explorer la table, stand by |
Je pense me replonger sur ce problème maintenant qu'on peut travailler avec les tronçons grâce à #793. |
@MathieuFV Est-ce que tu penses avoir rencontré ce problème récemment, par ex pour la saisie des arrêtés JO ? Si oui tu as des exemples ? Je pense qu'on en est toujours à bien définir le problème et surtout à trancher quel résultat on attend en fonction de quelle situation... À comparer aussi avec des arrêtés réels : quand il y a un terre plein central (cas d'une voie de transports en commun), est-ce qu'un arrêté qui va du N° X au N° Y précise le côté concerné ? |
Voici un exemple pratique : La zone rouge JO qui concerne Paris centre a pour une de ses limites l'avenue Franklin Delano Roosevelt entre le Cour la Reine et l'Avenue des Champs Elysées. Comme l'avenue Franklin Roosevelt a une contre allée (comme c'est beaucoup le cas dans les beaux quartiers de Paris) on a un dédoublement de l'avenue. Quand je demande à obtenir uniquement la section de l'avenue Franklin Roosevelt qui m'intéresse j'ai donc un problème de géocodage (voir capture d'écran). A noter que ce cas existe plus généralement dès lors qu'on demande le calcul d'une intersection entre une voie dédoublée et une autre voie. J'aurais pourtant besoins de ne localiser ma restriction de circulation que sur la section (allée + contre allée) de l'avenue entre les deux extrémités que j'ai citées, car la section au Nord de l'Arc de Triomphe est en zone bleue. Ca soulève aussi une autre question, quid d'une situation où je ne souhaiterais obtenir que la contre allée dans localisation par exemple ? Est-ce que l'utilisation de la table tronçons de route nous amène des solutions pratiques pour choisir, sur les rues qui possèdent plusieurs voies, celle qui nous intéresse ? |
Je t'avoue qu'une option qu'on pourrait envisager c'est que quand cette erreur se présente, on permette de sélectionner les tronçons qui nous intéresse précisément... (sur une carte typiquement) Car je pense, au final, que dans ces cas ambigus où cette erreur se produit, il n'y a probablement pas de solution calculatoire toute faite |
Je reproduis la même erreur que toi, y compris en mettant pour le point A le numéro d'adresse "1" (juste avant le cours la Reine) et pour le point B le numéro d'adresse "43" (le dernier avant les Champs), donc je dirais plus généralement que le problème de géocodage se présente quand, pour un même point auquel on souhaite rapprocher un linéaire, la géométrie dans la BD TOPO possède deux linéaires. Ici on voit qu'à la hauteur du point d'adresse "1" il y a deux linéaires en parallèle : l'avenue Roosevelt et sa contre-allée.
C'est la limite du géocodeur qui prend en entrée le libellé d'une voie... Etant donné que l'avenue et sa contre-allée ont le même libellé de voie dans la BD TOPO (et le même ID dans la BAN), le géocodeur ne peut pas faire la différence entre les deux. Sachant que la seule chose qui compte pour la diffusion dans Waze c'est que le point de début soit suffisament rapproché du début du segment, et que le référentiel Google Maps est foutu un peu différemment mais si notre géocodage se rapproche au début du tronçon, ça fonctionnerait. Il y a certainement quelque chose qu'il faudrait explorer dans ce gécodage en particulier. Le résultat du géocodage dans nos données devrait être la totalité de la géométrie récupérée depuis la BD TOPO comme sur cette capture : MAIS : ce n'est pas grave que les deux soient mélangés car pour accéder à la contre-allée il faut passer par l'avenue donc ne pas indiquer la contre-allée comme fermée n'a aucune utilité. Autre réflexion / idée de solution : proposer une troisième option en "type de point" (en plus de "Numéro d'adresse" et "Intersection") : "Début de la voie" qui correspondrait au début du tronçon situé au début de la voie. Ici par exemple, en mettant "Début de la voie" au lieu de l'intersection avec le cours la Reine, le calcul de section aurait fonctionné.
On avait évoqué cette solution pour le long terme. Ca reviendrait à développer une UI assez similaire à celle du Map Editor de Waze mais basée sur le référentiel BD TOPO plutôt que sur celui de Google Maps. Je ne sais pas si ça a déjà été fait... ? Dans l'écosystème OSM iD propose une telle UI clé en main et qui pourrait éventuellement être forké. Sur l'échelle du skateboard à la voiture on est carrément sur un avion privé. :) |
Le "Début de la voie" n'est pas forcément évident à trouver dans les données BD TOPO. Il faut croiser le sens de numérisation (ordre des points dans la géométrie) avec le sens de circulation, si tant est que par "début de la voie" on veut bien dire "début du point de vue du sens de circulation" Sinon, j'ai regardé les points d'intersection obtenus par DiaLog {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"name": "Av CE",
"marker-color": "red"
},
"geometry": {
"type": "Point",
"coordinates": [
2.3101193921858396,
48.868981243824564
]
}
},
{
"type": "Feature",
"properties": {
"name": "RP CE",
"marker-color": "blue"
},
"geometry": {
"type": "Point",
"coordinates": [
2.31007992448164,
48.86875318199477
]
}
},
{
"type": "Feature",
"properties": {
"name": "Cours La Reine",
"marker-color": "black"
},
"geometry": {
"type": "Point",
"coordinates": [
2.3102801848319183,
48.864919820961255
]
}
}
]
} On voit déjà qu'en fait l'extrémité nord qui correspondrait à ton dessin Johan est obtenue quand on choisit "Rond point des Champs Elysées" et pas l'Avenue (dont le point d'intersection tombe au milieu du rond point, paradoxalement) Autre point de donnée : si je choisis Rond point des CE + Impasse d'Antin, ça fonctionne. Pourtant la contre allée est déjà là entre ces deux endroits, mais elle n'a pas été incluse dans la section {"type":"GeometryCollection","geometries":[{"type":"LineString","coordinates":[[2.310146487,48.868736778],[2.310137212,48.868819464]]},{"type":"LineString","coordinates":[[2.310165793,48.868411326],[2.310164072,48.868438297],[2.310146487,48.868736778]]},{"type":"LineString","coordinates":[[2.31017149,48.868289947],[2.310165793,48.868411326]]},{"type":"LineString","coordinates":[[2.310182372,48.868085859],[2.310173163,48.868266574],[2.31017149,48.868289947]]},{"type":"LineString","coordinates":[[2.31020557,48.867672293],[2.310182372,48.868085859]]},{"type":"LineString","coordinates":[[2.310234144,48.867161629],[2.31020557,48.867672293]]}]} Et pour info, voici ce que DiaLog considère être la voie entière pour l'avenue FDR, on voit bien que la contre allée entre le rond point et l'impasse fait bien partie de la géométrie {"type":"MultiLineString","coordinates":[[[2.310283707,48.865889338],[2.310282564,48.865563768],[2.310282166,48.865490919]],[[2.310032478,48.872815544],[2.310023582,48.873075403]],[[2.310039832,48.872569167],[2.310032943,48.872780472],[2.310032478,48.872815544]],[[2.310047281,48.871389272],[2.310039832,48.872569167]],[[2.310036702,48.87054113],[2.310046263,48.871363185],[2.310047281,48.871389272]],[[2.31020557,48.867672293],[2.310182372,48.868085859]],[[2.31017149,48.868289947],[2.310165793,48.868411326]],[[2.310146487,48.868736778],[2.310137212,48.868819464]],[[2.309994234,48.868292523],[2.310022246,48.86751565],[2.310043261,48.867164126]],[[2.310234144,48.867161629],[2.31020557,48.867672293]],[[2.310253544,48.866828983],[2.310234144,48.867161629]],[[2.310043261,48.867164126],[2.310057179,48.866936672],[2.310064704,48.866780229]],[[2.310283707,48.865889338],[2.310094608,48.865860369],[2.310116814,48.865212966],[2.310280185,48.864919821]],[[2.310282166,48.865490919],[2.310280565,48.865096995],[2.310280185,48.864919821]],[[2.310036702,48.87054113],[2.310067364,48.869873094],[2.310076038,48.869732846],[2.310075127,48.869698666],[2.31007405,48.869677075]],[[2.31007405,48.869677075],[2.31009016,48.869284155],[2.310101572,48.869143023]],[[2.310270301,48.866284075],[2.310283707,48.865889338]],[[2.310064704,48.866780229],[2.310083272,48.866304581],[2.310270301,48.866284075]],[[2.310253544,48.866828983],[2.310270301,48.866284075]],[[2.310165793,48.868411326],[2.310164072,48.868438297],[2.310146487,48.868736778]],[[2.310182372,48.868085859],[2.310173163,48.868266574],[2.31017149,48.868289947]]]} |
Je vais approfondir les champs de Il y a aussi le champ |
On a bien une différence : la contre-allée est en importance 5 alors que la chaussée principale est en importance 4. |
Notes diverses
Situation actuelle
On ne peut calculer une section que si les deux points demandés peuvent être rattachés à la même "ligne" (LINESTRING). Cette ligne doit être continue
Cela exclue tous les cas où la section désirée comporte une rupture de ligne, telle qu'un embranchement, un trou (même petit), un rond-point, ou autre
C'est notamment problématique pour les départementales passant d'une chaussée unique à deux chaussées avec terre plein central
Rappel : actuellement DiaLog n'a pas de notion de sens de circulation, c'est le ticket #528
Définitions
Exemples
Questions ouvertes
Proposition
Fermer toutes les chaussées suffisamment proches des points de début / fin définis par l'utilisateur
Pseudo-code :
ST_Buffer
)pgrouting
)Intérêt de la proposition
Cette approche couvre-t-elle efficacement les cas ci-dessus ?
❌ = Erreur / Aucun résultat, 🆗 = Obtention d'un résultat (mais est-ce celui qu'on veut ?)
The text was updated successfully, but these errors were encountered: