Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Wed 20 June 2018 13:49

tematim
Juste Inscrit !
Date d'inscription: 27 Oct 2017
Messages: 7

Détecter les linestring en y et obtenir les points de séparation

Bonjour,

Je dois ajouter des éléments dans un réseau de linestring ordonnées d'un nœud maitre.
Je suis en SRID 2154.

Voici deux cas d'exemples :

Code:

"LINESTRING(890523.700571345 6411239.74867723,890521.03928381 6411220.37201695,890507.281769636 6411220.60267211,890495.651439927 6411195.15820796)"
"LINESTRING(890523.700571345 6411239.74867723,890521.03928381 6411220.37201695,890513.157487788 6411196.55307941)"

Code:

"LINESTRING(887383.164323609 6408817.04180761,887368.622455488 6408797.9614047,887355.705527693 6408781.88262288)"
"LINESTRING(887383.164323609 6408817.04180761,887368.622455488 6408797.9614047,887348.542909006 6408780.5274959)"

J'ai une requête qui retourne la liste des tous les points par rapport à une linestring et qui compare cette liste à elle même pour trouver les équivalences:

Code:

with contenu_geom as (SELECT ST_X(ST_PointN(geom,num)) as x,ST_Y(ST_PointN(geom,num)) as y,geom, code FROM (
select inf1.code, inf1.geom
, generate_series(1, (select ST_NumPoints(geom) from (select geom FROM matable where code = inf1.code) as line)) as num
from matable as inf1 where inf1.code in (liste d'ids)
) as u)

SELECT c1.code, c1.y, c1.x, ST_SetSRID(ST_MakePoint(c1.x, c1.y), 2154) as point
, (SELECT c2.code FROM contenu_geom as c2 where c1.x = c2.x and c1.y = c2.y and c1.code <> c2.code limit 1 offset 0) as cm0
 FROM contenu_geom as c1
where c1.code in (liste d'ids)
) as g where g.cm0 is not null

Mais je n'arrive pas à correctement identifier tous les points de séparations, est-il possible de m'aider ?

Hors ligne

 

Pied de page des forums

Powered by FluxBB