Message posté par : Nicolas Ribot
----------------------------------------
Bonjour,
Pour trouver les points terminaux de votre réseau, c'est a dire les points non
connectés, vous pouvez extraire les startpoints et endpoints du réseau (ce sont les
candidats à traiter) et faire un GROUP BY geom pour identifier les groupes a plusieurs
points (les connexions du réseau) et les groupes avec un seul point (points terminaux).
GROUP BY geom se sert de la bbox de la geom et pas la de la geom elle-même. Si le réseau
est mal connecté (ce qui n'est pas le cas chez vous puisque vous faites du routing
avec), vous pouvez faire un GROUP BY st_expand(geom, precision) pour coller
artificiellement les points plus proches que "precision":
Ici la requête sort l'id de la ligne, true ou false pour dire si le point terminal est
un startpoint ou endpoint, et la geom du point.
-----------------
Code :
with tmp as (
select id as idline, true as startpt, st_startpoint(geom) as geom from desserte
UNION ALL
select id as idline, false as startpt, st_endpoint(geom) as geom from desserte
) select (array_agg(idline))[1] as id, (array_agg(startpt))[1] as startpt, geom
from tmp
group by geom
having count(*) = 1;
-----------------
Nicolas
----------------------------------------
Ce message est accompagné de fichiers, pour les télécharger, suivre le lien ci-dessous.
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=343652#p343652
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net