#1 Thu 08 October 2015 11:06
- JulieDubois
- Participant occasionnel
- Date d'inscription: 3 Jul 2015
- Messages: 13
QGIS 2.10.1 : Spatialite st_distance
Bonjour à tous,
J'ai une couche de points (t_points) et une couche de lignes (t_ecoulements) et cherche à savoir quelle est la ligne la + proche du point choisi en calculant les distances.
Mon script :
Code:
SELECT t_points.point POINT, t_ecoulements.id NOM, st_distance (st_geomfromtext(t_points.geometrie, 2154),st_geomfromtext(t_ecoulements.geometrie, 2154)) as DISTANCE FROM t_points, t_ecoulements WHERE t_points.point = 628 ORDER BY DISTANCE LIMIT 1
Pour obtenir les colonnes t_points.geometrie et t_ecoulements.geometrie, j'ai utilisé la calculatrice de champs avec l'expression "geom_to_wkt($geometry)"
La colonne DISTANCE renvoie uniquement des valeurs NULL, y'a t il une erreur dans mon code ?
Merci !
Julie
Hors ligne
#2 Thu 08 October 2015 14:39
- Lsam
- Participant assidu
- Date d'inscription: 27 Nov 2013
- Messages: 157
Re: QGIS 2.10.1 : Spatialite st_distance
Bonjour,
Il est inutile d'employer st_geomfromtext puisque tu disposes d'un champ geometrie dans ta table spatialite.
Voici une requête à tester :
Code:
SELECT t_points.point POINT, t_ecoulements.id NOM, min(st_distance(t_points.geometrie,t_ecoulements.geometrie)) as DISTANCE FROM t_points, t_ecoulements WHERE t_points.point = 628 GROUP BY 1,2
Dernière modification par Lsam (Thu 08 October 2015 14:40)
Hors ligne
#3 Thu 08 October 2015 15:40
- Lsam
- Participant assidu
- Date d'inscription: 27 Nov 2013
- Messages: 157
Re: QGIS 2.10.1 : Spatialite st_distance
En fait, j'ai comme un doute, tes champs geométrie sont du texte ? Pourquoi faire cette transformation en texte dans QGis puis la reconversion en géométrie dans Spatialite alors que tu peux importer facilement tes objets avec Qspatialite ?
Hors ligne
#4 Thu 08 October 2015 16:34
- JulieDubois
- Participant occasionnel
- Date d'inscription: 3 Jul 2015
- Messages: 13
Re: QGIS 2.10.1 : Spatialite st_distance
Merci pour cette réponse.
Il y a bien une colonne "geom" qui a été créée je pensais qu'elle contenait uniquement le type de la géométrie (MULTILINESTRING ou POINT).
En utilisant
Code:
SELECT t_points.point POINT, t_ecoulements.id NOM, min(st_distance(t_points.geom,t_ecoulements.geom)) as DISTANCE FROM t_points, t_ecoulements WHERE t_points.point = 628 GROUP BY 1,2
ma colonne DISTANCE reste NULL...
EDIT : Finalement ca marche avec ce code, mais je n'ai pas vraiment d'explications ..
Dernière modification par JulieDubois (Thu 08 October 2015 17:03)
Hors ligne