#1 Thu 03 September 2015 23:29
- Lsam
- Participant assidu
- Date d'inscription: 27 Nov 2013
- Messages: 157
[Spatialite] opérations spatiales sur des lignes
Bonjour,
Ça fait pas mal de temps que j'utilise Spatialite avec des couches de points ou de polygones, mais pour la première fois je dois travailler sur des lignes.
Je souhaiterais trouver la fonction pour sélectionner les portions communes entre les lignes de 2 couches. J'ai regardé du côté de ST_SHAREDPATHS mais le résultat de la requête suivante ne renvoie que des données avec des géométries NULL :
Code:
select st_sharedpaths(couche1.geometry,couche2.geometry) from couche1,couche2
Il y a un truc que je dois pas piger. Quelqu'un pourrait m'aider ?
Merci
Lsam
Hors ligne
#2 Tue 08 September 2015 17:11
- Lsam
- Participant assidu
- Date d'inscription: 27 Nov 2013
- Messages: 157
Re: [Spatialite] opérations spatiales sur des lignes
Personne n'a une petite idée ? Y compris sur PostGIS ?
Hors ligne
#3 Wed 09 September 2015 09:01
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: [Spatialite] opérations spatiales sur des lignes
Bonjour,
Rapidement, comme ca: votre requete n'a pas de clause WHERE: normal que la plupart des couples geom1, geom2 ne partagent pas de partie commune, donc que le resultat soit null.
Essayez en rajoutant une clause style "where st_intersects (geom1, geom2)"
Nicolas
Hors ligne
#4 Wed 09 September 2015 16:38
- Lsam
- Participant assidu
- Date d'inscription: 27 Nov 2013
- Messages: 157
Re: [Spatialite] opérations spatiales sur des lignes
Bonjour,
Merci, effectivement cette clause était indispensable. Vu que mes données provenaient de highways d'OSM, il y avait pas mal d'erreurs de géométrie qui faisaient en plus planter QSpatialite ou Spatialite GUI.
J'ai donc adapté et complété :
Code:
select pi.OGC_FID, st_sharedpaths(pi.GEOMETRY,vo.Geometry) as the_geom from vo, pi where st_intersects(pi.GEOMETRY, vo.Geometry) and ST_IsValid(pi.GEOMETRY) and ST_IsValid(vo.GEOMETRY) group by 1 having the_geom not null
Mais le résultat est incomplet, seuls quelques tronçons communs sont retournés, pas tous. Cf. l'image jointe où le résultat en rouge ne reflète pas bien les segments communs entre les lignes noires et vertes.
[img]http://pix.toile-libre.org/upload/img/1441809441.png[/img]
Dernière modification par Lsam (Wed 09 September 2015 16:39)
Hors ligne