Message posté par : Mathieu Denat
----------------------------------------
Bonsoir tumasgiu,
Merci pour votre réponse.
Ça ne fonctionne pas du premier coup, je ne comprends pas pourquoi, mais vous m'avez
débloqué! :)
Mais en creusant dans ce sens, j'ai trouvé une alternative: faire un st_memunion suivi
d'un st_linemerge et hop ça fonctionne.
D'un point de vue géométrique, je ne comprends pas pourquoi le st_linemerge ne
fonctionne pas, si l'un⋅e d'entre vous à une idée, je suis preneur.
À bientôt.
Voici le script définitif, si ça peut servir à d'autres! ;)
-----------------
Code :
WITH
boyne AS (
SELECT
cdcourseau,
st_linemerge(st_memunion(geom)) geom --fusion (st_memunion puis st_linemerge,
mystérieux: une seule des 2 fonctions ne suffis pas!)
from referentiel.cours_eau where topooh ilike '%boyne' -- sélection de la Boyne
GROUP BY cdcourseau
)
,tmp AS (
SELECT cdcourseau, (st_dump(geom)).path[1] as idln, (st_dump(geom)).geom
from boyne )
-- from outils.cours_eau_simplifie ) --utilisé uniquement dans le cas de cours
d'eau contenant des plans d'eau
,tmp1 AS (
SELECT
cdcourseau,
idln,
floor(st_length(geom) / 500.0)::int as numcut,
(500/st_length(geom)) as frac_500m,
geom
FROM tmp)
,tmp2 as (
SELECT
t.*,
g.cutpos,
g.cutpos * frac_500m as startfraction,
least((g.cutpos * frac_500m) + frac_500m , 1) as endfraction
FROM tmp1 t
CROSS JOIN LATERAL (
SELECT cutpos
FROM generate_series(0, t.numcut) as cutpos
) g )
SELECT t.cdcourseau,
idln, numcut, frac_500m, startfraction, endfraction,
st_linesubstring(geom, startfraction, endfraction) as geom,
concat(cdcourseau,'-',to_char(row_number() over (),'FM000'))
id_troncon
FROM tmp2 t
order by 1 --id_troncon
-----------------
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=346425#p346425
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