#1 Mon 02 February 2015 13:41
- Yann legros
- Juste Inscrit !
- Date d'inscription: 27 Oct 2010
- Messages: 5
QGIS & Spatialite : créer une colonne geometry valide
Bonjour,
Dans le cadre de la mise en place d'une base de données SQLite gérée avec QGIS et QSpatialite, j'ai importé une table non spatiale comportant une colonne X et une colonne Y (coordonnées en degrés décimaux).
Pour générer ma table spatiale, j'effectue les étapes suivantes :
Code:
CREATE TABLE 'matable' AS Select * , ST_Geomfromtext('POINT ('||long_x_1_Dd||''||lat_y_1_Dd||')') AS geometry From 'table_source'
Pour vérifier le résultat, j’exécute :
Code:
Select "matable".'geometry' as geometry, astext(geometry) as texte from "matable"
Ce qui me donne :
geometry text
GeomObject POINT(45.91 -19.62)
J'exécute ensuite, pour mettre à jour la colonne geometry :
Code:
Select Recovergeometrycolumn ( "matable" , 'geometry', 4326, 'POINT', 2) from "matable"
Et je n'ai pas de résultat.
Quelqu'un a-t'il déjà été confronté à ce problème ?
Y-a t'il une erreur dans la syntaxe ?
Merci d'avance
Yann
Hors ligne
#2 Mon 02 February 2015 16:16
- cyrille
- Participant assidu
- Date d'inscription: 7 Feb 2006
- Messages: 401
Re: QGIS & Spatialite : créer une colonne geometry valide
plutot que de coincer pourquoi ne pas faire le travail sous Qgis ? tu crées le shape que tu importe dans ta base spatialite ?
Hors ligne
#3 Mon 02 February 2015 17:07
- Lsam
- Participant assidu
- Date d'inscription: 27 Nov 2013
- Messages: 157
Re: QGIS & Spatialite : créer une colonne geometry valide
Bonjour,
Et je n'ai pas de résultat.
Que voulez-vous dire pas là ? La commande me paraît bonne et il est aussi normal qu'elle ne renvoie aucun résultat.
Est-ce que la couche peut être cartographiée dans QGis désormais ?
Si ce n'est pas le cas, la commande a sans échoué du fait d'une géométrie MULTIPOINT au lieu de POINT ?
Dernière modification par Lsam (Mon 02 February 2015 17:10)
Hors ligne
#4 Mon 02 February 2015 17:07
- Yann legros
- Juste Inscrit !
- Date d'inscription: 27 Oct 2010
- Messages: 5
Re: QGIS & Spatialite : créer une colonne geometry valide
Oui, c'est d'ailleurs ce que je me suis résigné à faire, mais j'aimerais comprendre.
Hors ligne
#5 Mon 02 February 2015 20:45
- Yann legros
- Juste Inscrit !
- Date d'inscription: 27 Oct 2010
- Messages: 5
Re: QGIS & Spatialite : créer une colonne geometry valide
Lsam, j'ai bien essayé également de remplacer "POINT' par 'MULTIPOINT', mais le résultat ne rend toujours pas une table spatiale avec géométrie valide.
Le problème ne peut-il pas venir du format des coordonnées d'origine ?
Hors ligne
#6 Mon 02 February 2015 21:32
- Lsam
- Participant assidu
- Date d'inscription: 27 Nov 2013
- Messages: 157
Re: QGIS & Spatialite : créer une colonne geometry valide
ST_Geomfromtext('POINT ('||long_x_1_Dd||''||lat_y_1_Dd||')')
Essaiez de refaire cette commande en indiquant le SRID :
Code:
create "ma_table" as select *, Geomfromtext('POINT ('||long_x_1_Dd||' '||lat_y_1_Dd||')', 4326) as "Geometry" from "table_source"
Plus simple il y a aussi
Code:
MakePoint("table_source"."long_x_1_Dd", "table_source"lat_y_1_Dd, 4326)
Avez-vous commencé par déclarer votre base comme spatiale ? Avec :
Code:
SELECT InitSpatialMetaData();
Dernière modification par Lsam (Mon 02 February 2015 21:33)
Hors ligne
#7 Tue 03 February 2015 08:54
- Yann legros
- Juste Inscrit !
- Date d'inscription: 27 Oct 2010
- Messages: 5
Re: QGIS & Spatialite : créer une colonne geometry valide
Bonjour, un grand merci à Lsam pour m'avoir aidé à trouver la solution à mon problème.
Voici les commandes qui fonctionnent, c'est à dire qui permettent de générer, avec QSpatialite, une table spatiale de points visualisable dans QGIS, à partir des valeurs X et Y contenues dans une table non spatiale importée à partir d'un fichier CSV :
Tout d'abord, dans le tableur ayant servi à créer la table source, veiller à ce que les données X et Y soient bien au format standard avec un point à la place de la virgule.
Ensuite, dans QSpatialite :
Code:
CREATE TABLE 'matable' AS Select * , ST_Geomfromtext ('MULTIPOINT ('||long_x_1_Dd||''||lat_y_1_Dd||')', 4326) AS geometry From 'table_source'
Petite vérification, pour constater que la colonne géométrie est bien au format WKT :
Code:
Select 'matable'.'geometry' as geometry, astext(geometry) as texte from 'matable'
Mise à jour de la colonne géométrie :
Code:
Select Recovergeometrycolumn ( "matable" , 'geometry', 4326, 'MULTIPOINT', 2) from "matable"
Bonne journée.
Yann
Hors ligne
#8 Tue 03 February 2015 10:16
- Lsam
- Participant assidu
- Date d'inscription: 27 Nov 2013
- Messages: 157
Re: QGIS & Spatialite : créer une colonne geometry valide
Bonjour,
Ce n'est pas une solution mais un contournement ;-)
Je ne comprends pas pourquoi votre couche a une géométrie de MULTIPOINT alors qu'elle provient bien d'un fichier de points "simples". C'est du détail mais autant ne pas faire n'importe quoi avec les géométries.
Cette commande doit fonctionner :
Code:
CREATE TABLE "matable" AS Select * , ST_Geomfromtext ('POINT ('||"long_x_1_Dd"||' '||"lat_y_1_Dd"||')', 4326) AS "geometry" from "'table_source"
D'autre part la géométrie n'est pas stockée au format WKT, c'est votre requête avec la fonction AsText qui l'affiche dans ce format.
Hors ligne
#9 Wed 04 February 2015 07:21
- Yann legros
- Juste Inscrit !
- Date d'inscription: 27 Oct 2010
- Messages: 5
Re: QGIS & Spatialite : créer une colonne geometry valide
Merci Lsam,
Effectivement, tout ceci est encore bien empirique dans mon approche, je vous remercie de me corriger.
Bonne journée.
Hors ligne