#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