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

Printemps des cartes 2024

#1 Wed 04 June 2014 11:47

Géronimo
Participant occasionnel
Date d'inscription: 21 May 2014
Messages: 14

intersection polyligne / polygone excluant le contour du polygone

Bonjour à tous,

J'ai un dernier problème à résoudre et j'en aurai fini avec mon projet, tout du moins pour les requêtes SQL sur postgresql.


J'aimerais savoir s'il existe une fonction pour une requête SQL qui permette d'intersecter un polygone avec une polyligne en excluant les polylignes qui toucheraient exclusivement le contour du polygone.
Pour être clair, j'ai un cours d'eau (donc une polyligne) qui traverse plusieurs zones de formation à silex qui se touchent (donc des polygones). Ce cours d'eau est tronçonné en fonction de ces zones de formation à silex. C'est-à-dire, que chaque tronçon est délimité par chaque polygone des zones de formation à silex. Ainsi, si j'effectue une intersection simple de type ST_Intersect, l'identifiant de la zone de formation à silex va être renseigné à la fois pour le tronçon qui la traverse, mais aussi pour les 2 tronçons qui sont en amont et en aval du polygone. Du coup, si j'effectuais une intersection qui exclue le contour du polygone de la zone de formation à silex, cette zone ne donnerait plus son identifiant qu'au tronçon qui la traverse.


J'espère avoir été assez clair. Je vous remercie de votre attention.

Hors ligne

 

#2 Wed 04 June 2014 12:25

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1536

Re: intersection polyligne / polygone excluant le contour du polygone

Bonjour,

Oui: avec PostGIS, il est possible de décrire toutes les relations spatiales entre objets, soit par des fonctions directes (st_intersects, st_touches, st_overlaps, etc.) soit avec la fonction générique st_relate, qui permet d'exprimer les relations spatiales attendues entre deux objets géo.

Dans votre cas, il faut utiliser deux fonctions: st_intersects et st_touches:

select st_intersection(line.geom, poly.geom)
from line, poly
where st_intersects (line.geom, poly.geom)
and not st_touches(line.geom, poly.geom);

Nicolas

Hors ligne

 

Pied de page des forums

Powered by FluxBB