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 Fri 03 July 2020 19:40

preliator
Participant assidu
Date d'inscription: 17 Nov 2018
Messages: 433

Couper une ligne sur un polygone

Bonjour,

Je dispose d'un couche multilineString qui représente des routes. J'aimerais couper cette couche de route sur un polygone de département. Voici une image de ce que j'aimerais faire (couper les routes situées dans le cercle rouge) :

https://zupimages.net/viewer.php?id=20/27/h1sg.png

Pour cela, mes recherches m'ont guidé vers St_Split :

Code:

select routes.id, ST_Split(routes.geom, departement.geom) as geom
from routes, departement
where st_intersects(departement.geom, routes.geom) and code_insee = '07'

Malheureusement, la requête ne finit jamais, malgré les index spatiaux. Est-ce que j'ai oublié une jointure ?

Merci.

Dernière modification par preliator (Fri 03 July 2020 19:43)

Hors ligne

 

#2 Mon 06 July 2020 10:36

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

Re: Couper une ligne sur un polygone

Bonjour,

C'est plutot une intersection que vous voulez faire, entre le dept et les routes.

Prenez d'abord toutes les routes qui intersectent le dept:
select route
from route join departement on st_intersects (geom, geom).

Ensuite si vous voulez vraiment découper les routes sur le bord du dept, vous pouvez extraire le contour du dept en linestring et découper chaque route concernée avec cette linestring, ou découper le dept en petits morceaux (st_subdivide) et découper les routes qui dépassent (et uniquement elles) avec les bouts de départements (ca sera bcp plus rapide que de le faire avec le departement entier, qui représente un très grand polygone (par rapport aux data) et donc prend du temps a traiter)

Nicolas

Hors ligne

 

Pied de page des forums

Powered by FluxBB