Agrégation conditionnelle, casse tête
Bonjour,
Me voilà face à un épineux problème :
Je travaille sur des données géographiques routières.
Dans ma table, road j'ai (id, name, code, the_geom)
Je cherche à agréger toutes les routes qui se touchent et qui ont les mêmes noms et codes.
Pour ça j'ai 2 fonctions à ma disposition :
ST_Union(geometry, geometry)
ST_touches(geometry, geometry)
La première additionne les 2 géométries en une seule, la seconde détermine si les 2 géométries se touchent.
J'ai créer ma propre fonction d'agrégat ("geometry_sum") sur base de ST_union qui fonctionne exactement comme l'agrégat "SUM" existant dans le standart SQL
Je peux donc facilement grouper mes routes avec la requête suivante :
Code:
1 2 3
| SELECT name, code, geometry_sum(the_geom)
FROM road
GROUP BY r1.name, r1.code |
Il me reste à trouver comment faire en sorte que seules les routes qui se touchent soient groupées ...
Et là ... je sèche 8O
Il faudrait en quelque sorte que j'ai accès dans ma requête à la valeur de l'agrégat en cours pour pouvoir tester s'il touche la géométrie. (pas sûr que ce soit très clair ce que j'écris) :?
Donc je me tourne vers vos lumière en quête d'une solution.