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

Suite à un problème technique intervenu entre le 22 et le 23 mars, nous avons du procéder dans la soirée du 25 mars, à la restauration de la base de données du 24 mars (matinée).

En clair, nous avons perdu vos contributions et inscriptions du dimanche 24 et du lundi 25 mars.
Nous vous prions de nous excuser.

#1 Thu 16 September 2021 11:58

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

Extraire auto-intersection de MultiLineString

Bonjour,

Je dispose d'une couche de lignes de 3 entités qui s'intersectent.

https://zupimages.net/viewer.php?id=21/37/67j7.jpg

Je souhaiterais extraire les parties de lignes qui s'intersectent, et renseigner cette information d'auto-intersection dans une colonne (1 si le troncon intersecte d'autres lignes, 0 sinon par exemple).

L'objectif, c'est de transférer par la suite cette couche sur QGis et appliquer un décallage dans le style des couches extraites pour voir les zones où plusieurs lignes se croisent. Voici un exemple que j'avais réalisé sur des lignes très simples.

https://zupimages.net/viewer.php?id=21/37/yimr.jpg

Est-il possible de faire cela sur PostGis ? Je pose en pièce jointe l'exemple des lignes.

Merci.


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#2 Fri 17 September 2021 13:22

Mathieu Denat
Participant actif
Lieu: Montpellier
Date d'inscription: 5 May 2010
Messages: 110

Re: Extraire auto-intersection de MultiLineString

Bonjour Preliator,

Une piste à affiner:
- faire un dump des lignes en conservant: id, geométrie et chemin (path). En soi la géométrie et l'id suffiraient, mais le path te sera peut-être utile pour la suite?
- grouper par géométrie et stocker dans un tableau l'id de la route d'origine
- ne garder que les enregistrements pour lesquels le tableau à plus d'une valeur (les intersections donc)

Code:

with
tmp as (
    select route_id,
    (st_dump(geom)).geom geom,
    (st_dump(geom)).path id
    from test.line )

,tmp1 as (
select
    array_agg(distinct t.route_id order by t.route_id) route_id,
    t.geom,
    array_agg(t.id) id
from tmp t
group by t.geom
)

select * from tmp1
where array_length(route_id,1) > 1

A toutes fins utiles la doc w3c sur les fonctions array: https://www.w3resource.com/PostgreSQL/p … nction.php
J'ai testé vite fait, mais il semblerait que les superpositions ne ressortent pas comme il faut (voir capture en PJ).
Erreurs au niveau de la flèche et du cercle.
À creuser donc.

Dernière modification par Mathieu Denat (Fri 17 September 2021 13:23)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Mathieu
C'est en forgeant qu'on devient forgeron

Hors ligne

 

Pied de page des forums

Powered by FluxBB