Suite

Utiliser l'algorithme Pgrouting dijkstra dans PostGIS?

Utiliser l'algorithme Pgrouting dijkstra dans PostGIS?


Je possède deux tables, une avec des rues et une avec des points, j'utilise la table avec les routes pour calculer les itinéraires avec l'algorithme dijkstra. Mais je veux quand quelqu'un ajoute un point dans la table Point et que ce point fait partie de la table des routes à partir des rues, alors comment je fais en sorte que l'algorithme dijkstra ne prenne pas en compte cette route qui contient ce point, lorsqu'il calcule un itinéraire.


Si je veux passer de A -> B, donnez-moi le chemin de lecture le dikjstra . Je veux que si je mets un point comme le point d'image, le dijkstra change la voie et me donne la voie orange. Puis-je faire cela?


Si vous pouvez croiser le point avec la table contenant les enregistrements avec la géométrie de la ligne, vous pouvez alors obtenir un enregistrement unique de la ligne qui croise le point. Disons que la colonne contenant l'identification unique estidentifiant, et la droite qui coupe le point a unidentifiant = 12. Ensuite, votre requête pgRouting ressemblerait à ceci (modifié à partir des exemples répertoriés ici):

SELECT seq, id1 AS nœud, id2 AS edge, coût FROM pgr_dijkstra( 'SELECT id, source, cible, coût FROM edge_table WHERE id <> 12', 7, 12, false, false );

LeO id <> 12est l'élément clé : il exclut cette arête particulière de la prise en compte de votre requête sur le chemin le plus court.

Notez que cela peut empêcher de trouver une solution, auquel cas un coût très élevé peut être plus approprié que de l'exclure complètement.


Voir la vidéo: Geometry Creation and Manipulation Using PostGIS. PostGIS Baby Steps