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 Wed 18 January 2017 14:54

MathieuR
Membre
Lieu: aix-en-provence
Date d'inscription: 16 Feb 2009
Messages: 1690
Site web

QGIS 2.2: créer table avec st_split

Auriez-vous des données test sur lesquelles tester votre code si elles ne sont pas confidentielles ?


geodata au cerema et petits billets en géomatique

Hors ligne

 

#2 Wed 18 January 2017 15:28

meonais
Participant occasionnel
Date d'inscription: 17 Jan 2017
Messages: 35

Re: QGIS 2.2: créer table avec st_split

Bonjour,

Et merci pour votre attention smile

Ci-joint les deux fichiers de test que j'utilise, et appelés dans la requête. Ce ne sont que des extraits, car j'aurai jusqu'à 16319 entités points et 20722 entités multilines...

Dernière modification par meonais (Wed 18 January 2017 15:29)


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

Hors ligne

 

#3 Thu 19 January 2017 15:31

MathieuR
Membre
Lieu: aix-en-provence
Date d'inscription: 16 Feb 2009
Messages: 1690
Site web

Re: QGIS 2.2: créer table avec st_split

Bonjour,

Vous auriez dû poser la question sur le forum base de données.

Tout d'abord, il n'est pas possible d'utiliser WITH avec une instruction CREATE.

Ensuite, la couche de points que vous soumettez est de type MULTIPOINT. Hors, ST_Split ne marche qu'avec des couches de points. Il faut donc utiliser ST_Dump en préalable.

Il se peut que le résultat du découpage soit de type GEOMETRYCOLLECTION. Pour extraire seulement les lignes, on utilise ST_CollectionExtract avec le par. 2 correspondant aux lignes.

Voici un exemple de requête SQL :

Code:

create table line_split as (
select st_collectionextract(st_split(a.geom, pt.geom),2) geom, 
a.code_hydro, a.classe, a.toponyme, a.candidat
from test as a, 
(select (st_dump(geom)).geom from conftest) as pt)

J'ai regardé les données. Vous pourriez accomplir ce que vous voulez faire : découpage d'une ligne à chaque intersection avec GRASS et l'outil v.clean tool=break

Pour la suite, merci de poster sur http://georezo.net/forum/viewtopic.php?id=100204


geodata au cerema et petits billets en géomatique

Hors ligne

 

#4 Tue 24 January 2017 13:38

MathieuR
Membre
Lieu: aix-en-provence
Date d'inscription: 16 Feb 2009
Messages: 1690
Site web

Re: QGIS 2.2: créer table avec st_split

Bonjour,

Aussi, pour information, il est conseillé d'appliquer un st_snap sur les données avant d'utiliser st_split.

Voici le code modifié, mais non testé.

st_dump permettra d'extraire les éléments de la geometrycollection, celle-ci résultant du st_split

Code:

create table line_split as (
select st_dump(st_split(st_snap(a.geom, pt.geom, 0.1), pt.geom)) geom, 
a.code_hydro, a.classe, a.toponyme, a.candidat
from test as a, 
(select (st_dump(geom)).geom from conftest) as pt)

geodata au cerema et petits billets en géomatique

Hors ligne

 

#5 Mon 03 July 2017 13:59

meonais
Participant occasionnel
Date d'inscription: 17 Jan 2017
Messages: 35

Re: QGIS 2.2: créer table avec st_split

Bonjour,

Je ne sais pas ce que j'ai fait dans les posts, il semble qu'il y ait eu doublon dans mes demandes...

J'ai résolu mon problème ici :https://georezo.net/forum/viewtopic.php?id=104853

Merci beaucoup

Hors ligne

 

Pied de page des forums

Powered by FluxBB