#1 Thu 16 February 2017 09:19
- fassa222
- Participant occasionnel
- Date d'inscription: 18 Jan 2012
- Messages: 36
Intersection lines et points hormis les extrémités
Bonjour,
J'ai une couche linestring et une couche point, mon objectif est de voir les points qui coupent mon linestring sans pour autant tenir en compte les extrémités de mon linestring. J'ai essayé le st_intersect mais ils me donnent les points en extrémités et c'est pas çà que je souhaite avoir.
Je travaille avec Postgresql sous postgis.
Merci pour vos réponses
Hors ligne
#2 Thu 16 February 2017 10:20
Re: Intersection lines et points hormis les extrémités
Salut, si les points des extrémités ne sont pas intersectés complétement par ton linestring peut être que tu peux regarder du côté d'un différent de st_touches() ?
Un super tuto sur ces fonctions ici :
http://www.postgis.fr/chrome/site/docs/ … ships.html
Sinon une autre idée serait de couper ton linestring par le point et faire un test sur la longueur du morceau intersecté pour ensuite exclure les points touchants des sections trop petites ?
Dernière modification par heretik25 (Thu 16 February 2017 10:24)
Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com
Hors ligne
#3 Thu 16 February 2017 10:23
- fassa222
- Participant occasionnel
- Date d'inscription: 18 Jan 2012
- Messages: 36
Re: Intersection lines et points hormis les extrémités
Bonjour heretik25,
Merci pour ta réponse. Par contre, les extrémités sont complètements intersectées avec mon mon linestring
Hors ligne
#4 Thu 16 February 2017 10:29
Re: Intersection lines et points hormis les extrémités
Salut,
Apparemment, il faudrait creuser du côté de la fonction ST_DumpPoints()
A voir si elle peut exclure les points des extrémités
Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com
Hors ligne
#5 Thu 16 February 2017 11:01
Re: Intersection lines et points hormis les extrémités
Peut être quelque chose comme ça ?
Code:
with temp as( SELECT row_number() over () as rn,count(*) over () as total_count, edge_id, (dp).path[1] As index, ST_AsText((dp).geom) As wktnode FROM (SELECT 1 As edge_id , ST_DumpPoints(ST_GeomFromText('LINESTRING(1 2, 3 4, 10 10)')) AS dp UNION ALL SELECT 2 As edge_id , ST_DumpPoints(ST_GeomFromText('LINESTRING(3 5, 5 6, 9 10)')) AS dp ) As foo) select * from temp where rn != 1 AND rn <> total_count
Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com
Hors ligne
#6 Thu 16 February 2017 12:24
- fassa222
- Participant occasionnel
- Date d'inscription: 18 Jan 2012
- Messages: 36
Re: Intersection lines et points hormis les extrémités
C'est ca que je souhaite.je ne souhaite pas extraire les points de mon ligne mais plutôt les extrémités de mon ligne
Hors ligne
#7 Thu 16 February 2017 12:33
Re: Intersection lines et points hormis les extrémités
Dans ce cas il faut modifier la clause where de cette manière
Code:
select * from temp where rn = 1 OR rn = total_count
Dernière modification par heretik25 (Thu 16 February 2017 12:33)
Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com
Hors ligne
#8 Fri 17 February 2017 09:01
- Ben22
- Participant actif
- Lieu: 33
- Date d'inscription: 11 May 2016
- Messages: 96
Re: Intersection lines et points hormis les extrémités
Vous pouvez également regarder du côté de ST_Line_Locate_Point.
Voici un exemple pour extraire tous les vertex qui ne sont pas des extrémités :
Code:
(WITH bran_p as (SELECT gckey, (st_dumppoints(geometrie)).geom as geometrie, ST_Line_Locate_Point(st_linemerge(geometrie), (st_dumppoints(geometrie)).geom) as rank FROM MultiLinestring ) SELECT t2.geometrie FROM bran_p as t2 WHERE t2.rank NOT IN (1,0) )
Dernière modification par Ben22 (Fri 17 February 2017 09:03)
Hors ligne
#9 Fri 17 February 2017 11:02
Re: Intersection lines et points hormis les extrémités
Hello Ben22,
ST_Line_Locate_Point() retourne les vertex de la ligne moi j'avais cru comprendre que la demande c'était de récupérer des points intersectés par la ligne et non les points de la ligne elle même mais je peux me tromper
En tout cas la requête est intéressante, merci pour le partage.
Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com
Hors ligne
#10 Fri 17 February 2017 14:36
- fassa222
- Participant occasionnel
- Date d'inscription: 18 Jan 2012
- Messages: 36
Re: Intersection lines et points hormis les extrémités
Bonjour heretik25 et Ben22,
Merci encore pour vos réponses. Je reprécise ma demande. En fait j'ai une couche ligne (linestring) et une couche point. Mon besoin est de voir quelle point de ma couche point coupe ma ligne. J'ai déjà tester l’intersecte, le résultat prend en compte les points en extrémité de la couche point qui intersectent les lignes de la couche ligne(ce que je ne souhaite pas). Donc je veux une méthode qui permet de supprimer les points en extrémité de la couche point qui intersectent la couche ligne. De mon coté j'ai réfléchis en décomposant les requêtes:
table: t_point ;
table:t_ligne;
---extraction des extrémités de t_ligne correspondants aux t_point
create table noeudextrem as
select distinct(nd.nd_code), cbl.cm_code, nd.geom from t_ligne cbl join t_point nd on st_dwithin(st_startpoint(cbl.geom),nd.geom,.01) union all
select distinct(nd.nd_code), cbl.cm_code, nd.geom from t_ligne cbl join t_point nd on st_dwithin(st_endpoint(cbl.geom),nd.geom,.01);
---Suppression des extrémités des lignes correspondants aux points
DELETE FROM t_point as t WHERE t.nd_code in (select nd_code from noeudextrem) RETURNING *;
---t_point qui coupent t_ligne
select * from t_point as pc join t_ligne cbl on ST_intersects (pc.geom,cbl.geom)
J'ai essayer de faire tout ça dans une requête récursive mais ca bloque au niveau du DELETE FROM. Si quelqu'un peut faire tout ça dans une seule requête,je suis preneur.
Cordialement.
Hors ligne
#11 Fri 17 February 2017 14:41
- Ben22
- Participant actif
- Lieu: 33
- Date d'inscription: 11 May 2016
- Messages: 96
Re: Intersection lines et points hormis les extrémités
effectivement heretik, je pensais qu'il s'agissait d'une découpe par les vertex, mea culpa
Dernière modification par Ben22 (Fri 17 February 2017 14:41)
Hors ligne