#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
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éeCode:
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.
Hors ligne