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 Thu 07 April 2011 11:34

matieu_dumo
Participant actif
Lieu: Questembert
Date d'inscription: 15 Mar 2006
Messages: 135
Site web

Postgis (1.4) découper polyligne par des points

Bonjour,

Je souhaite découper une polyligne (multitude d'objets fusionné en un seul) par une table de points.
Ce sont des données OSM. J'explique la procédure :
1/ J'ai éclaté la table route d'un territoire pour obtenir des objets lignes
2/ J'ai créé une table de points avec les extrémités de chaque ligne en renseignant le nombre de lignes que chaque point connecte.
3/ J'ai fusionné en un seul objet l'ensemble des lignes
4/ Je souhaite découper cette polyligne au niveau de chaque point connectant au minimum 3 lignes

C'est à cette dernière étape que je bloque, voici la requête utilisée

Code:

DROP TABLE if exists "10_p024_theix".mbh_osm_motor_roads_net;
CREATE TABLE "10_p024_theix".mbh_osm_motor_roads_net AS
  SELECT ST_Intersection(r.the_geom, b.the_geom) AS the_geom
  FROM "10_p024_theix".intersections_routes b, "10_p024_theix".mbh_osm_motor_roads_fus r
  WHERE ST_Intersects(r.the_geom, b.the_geom);

2 sujets en rapport...
http://georezo.net/forum/viewtopic.php?id=65790
http://georezo.net/forum/viewtopic.php?id=70890

Si quelqu'un a une idée, n'hésitez pas.

Merci

Dernière modification par matieu_dumo (Thu 07 April 2011 11:34)

Hors ligne

 

#2 Fri 08 April 2011 11:48

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

Re: Postgis (1.4) découper polyligne par des points

matieu_dumo a écrit:

Bonjour,

Je souhaite découper une polyligne (multitude d'objets fusionné en un seul) par une table de points.
Ce sont des données OSM. J'explique la procédure :
1/ J'ai éclaté la table route d'un territoire pour obtenir des objets lignes
2/ J'ai créé une table de points avec les extrémités de chaque ligne en renseignant le nombre de lignes que chaque point connecte.
3/ J'ai fusionné en un seul objet l'ensemble des lignes
4/ Je souhaite découper cette polyligne au niveau de chaque point connectant au minimum 3 lignes

C'est à cette dernière étape que je bloque, voici la requête utilisée

Code:

DROP TABLE if exists "10_p024_theix".mbh_osm_motor_roads_net;
CREATE TABLE "10_p024_theix".mbh_osm_motor_roads_net AS
  SELECT ST_Intersection(r.the_geom, b.the_geom) AS the_geom
  FROM "10_p024_theix".intersections_routes b, "10_p024_theix".mbh_osm_motor_roads_fus r
  WHERE ST_Intersects(r.the_geom, b.the_geom);

2 sujets en rapport...
http://georezo.net/forum/viewtopic.php?id=65790
http://georezo.net/forum/viewtopic.php?id=70890

Si quelqu'un a une idée, n'hésitez pas.

Merci


Bonjour,

Pourriez-vous expliquer un peu plus les differentes procedures ?

1/ Qu'entendez-vous par eclater la table pour obtenir des lignes ? ce n'etait pas deja des lignes dans la table initiale ? Ou vous avez decoupé ces lignes au niveau des intersections qu'elles faisaient entre elles ?

3/ Fusion en une multilinestring contenant toutes les lignes de l'etape 1, ou juste une linestring ?

Dans la clause Where, ne manque-t-il pas la condition sur le nombre de lignes connectées par les points ?
Eventuellement, pourriez envoyer une image du reseau aux differentes etapes ?

Merci
Nicolas

Hors ligne

 

#3 Mon 11 April 2011 09:03

matieu_dumo
Participant actif
Lieu: Questembert
Date d'inscription: 15 Mar 2006
Messages: 135
Site web

Re: Postgis (1.4) découper polyligne par des points

Bonjour,

merci de se pencher sur mon problème. je vais essayer d'être clair.

ce n'etait pas deja des lignes dans la table initiale ?


Ce sont bien des lignes mais elles ne sont pas organisées comme je le souhaiterais. Une image de la table initiale (cf 1)

Ou vous avez decoupé ces lignes au niveau des intersections qu'elles faisaient entre elles ?


C'est ce que je cherche à à faire.

1/ Qu'entendez-vous par eclater la table pour obtenir des lignes ?


Diviser les lignes initiales à chaque sommet les composant (cf 2)
Voici la requête :

Code:

SELECT a.gid,a.osm_id,a."name",a.ref,a."type",a.oneway,a.bridge,a.maxspeed,a.mbh_id,
geom(dump(intersection(a.the_geom,b.the_geom))) AS the_geom
FROM "10_p024_theix_analyse".osm_route a,"10_p024_theix_analyse".osm_route b
WHERE 
intersects(a.the_geom,b.the_geom)

Après le 1 et le 2, j'arrive à ça (cf 2_noeuds).
Une image du 3 et 4 (cf 3)

Dans la clause Where, ne manque-t-il pas la condition sur le nombre de lignes connectées par les points ?


La condition n'est pas dans la where car j'ai stocké les résultats de la requête précédente (point connectant au minimum 3 lignes) dans une table.


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

Hors ligne

 

Pied de page des forums

Powered by FluxBB