Suite

Obtenir le segment suivant du nœud le plus proche


J'essaie d'obtenir le nœud le plus proche d'un point (Id 1) . Les coordonnées (lat/long) sont saisies par un utilisateur . J'utilise certaines fonctions comme pgr_nearest_node() ou alors get_nearest_node() de la référence de la fonction get_nearest_node

1 : http://www.sqlexamples.info/SPAT/postgis_nearest_point.htm. Le problème est que le point prend le nœud le plus proche en utilisant une ligne droite entre eux (928-3670-317-929 nœuds d'identification). Comment puis-je obtenir le nœud le plus proche du réseau ? . Je pense utiliser la fonction pgr_dijkstra mais il faut un identifiant de source donc je reviens aux fonctions commentées auparavant.


Il existe peut-être un moyen plus élégant, mais la requête suivante devrait fonctionner :

avec la ligne la plus proche comme -- mettez la requête pour obtenir la ligne la plus proche dans un CTE -- utilisez le CTE deux fois (sélectionnez la source, ciblez dans l'ordre segment_table par (ST_Distance_Sphere(ST_GeomFromText('POINT(lon lat)',4326) limite 1) sélectionnez id from -- Une requête d'union pour obtenir les identifiants source et cible des sommets (select id,the_geom from segment_table_vertices_pgr p1 inner join near_line l on source = id union all select id,the_geom from segment_table_vertices_pgr p1 inner join soon_line l on target = id) a -- triez-le par distance du point et retournez l'ordre d'enregistrement par st_distance_sphere(the_geom,ST_SetSRID(ST_Point(lon,lat),4326)) limite 1