Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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 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

 

Pied de page des forums

Powered by FluxBB