Bonjour à tous,
Je travaille actuellement avec PostGIS et sollicite votre aide pour la problématique suivante :
J'ai une table qui contient des câbles, une autre qui contient des sites. Un câble a un site d'origine, et un autre d'extrémité, ceux-ci sont connus par jointure sur un code de référence, mais un câble a aussi des site de passages entre les 2.
Je retrouve ces sites de passage grâce à une jointure géométrique :
Et ça fonctionne bien, je retrouve bien les sites que je souhaite. Le problème est que ces sites sont dans le mauvais ordre par rapport à la direction du câble : le site d'origine est affiché en dernier, celui d'extrémité en premier :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 FROM table_cable LEFT JOIN table_site ON ST_DWITHIN(table_cable.geom, table_site.geom, 0.2)
table_cable.code table_cable.origine table_cable.extremite table_site.code_site code_ABC 1 4 4 code_ABC 1 4 3 code_ABC 1 4 2 code_ABC 1 4 1
Or je vise le résultat suivant :
table_cable.code table_cable.origine table_cable.extremite table_site.code_site code_ABC 1 4 1 code_ABC 1 4 2 code_ABC 1 4 3 code_ABC 1 4 4
J'ai vérifié les données visuellement sur QGis, les câbles sont bien orientés dans la bonne direction, j'ai aussi essayé avec une clause ORDER BY par rapport au point d'origine du câble :
Mais cela ne fonctionne pas, les câbles n'étant pas toujours en ligne droite, le point d'extrémité peut se retrouver plus proche à vol d'oiseau du point d'origine que d'autres sites de passage qui doivent apparaitre avant dans mon tri.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ORDER BT ST_DISTANCE(ST_STARTPOINT(table_cable.geom), table_site.geom)
Je ne suis pas un expert en SIG et je n'ai pas trouvé de solution en écumant Google, aussi je m'en remet à vous au cas où quelqu'un aurait une suggestion ?
Edit : j'ai aussi essayé un ST_REVERSE, sans aucun changement
Partager