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Ă© ?

#1 Mon 18 January 2021 12:19

Sylvain M.
Participant assidu
Lieu: Saint-Pierre-des-Nids (53)
Date d'inscription: 8 Sep 2005
Messages: 1044

Spatialite : table / champ geometry issu d'une selection

Bonjour Ă  tous,

Je dispose, dans un BDD Spatialite, de 2 tables, dont l'une avec un champ geom (MULTIPOLYGON).
Si je créé une nouvelle table, issue de la jointure des 2 (CREATE TABLE matable AS SELECT * FROM A JOIN B on A.id = B.id), le champ geom de la table créée n'est plus reconnu comme geometry, mais comme NUM, avec du contenu hexadecimal (je crois que c'est le format BLOB de SQLite).

Pourriez-vous m'indiquer la meilleure solution pour qu'une table issue de sélection soit reconnue comme table spatiale ?

PS. : je fais mes requĂȘtes depuis le gestionnaire de BD de QGis

Dernière modification par Sylvain M. (Mon 18 January 2021 12:20)


Sylvain M.

Hors ligne

 

#2 Mon 18 January 2021 12:26

Sylvain M.
Participant assidu
Lieu: Saint-Pierre-des-Nids (53)
Date d'inscription: 8 Sep 2005
Messages: 1044

Re: Spatialite : table / champ geometry issu d'une selection

Je viens finalement d'y parvenir comme ça :

Code:

SELECT AddGeometryColumn('matable', 'geometry', 2154, 'MULTIPOLYGON', 'XY');
UPDATE matable SET geometry = geom

C'est le plus simple ?


Sylvain M.

Hors ligne

 

#3 Mon 18 January 2021 14:00

Sylvain M.
Participant assidu
Lieu: Saint-Pierre-des-Nids (53)
Date d'inscription: 8 Sep 2005
Messages: 1044

Re: Spatialite : table / champ geometry issu d'une selection

Il y avait encore plus simple :

Code:

SELECT RecoverGeometryColumn('matable', 'geom', 2154, 'MULTIPOLYGON', 'XY');

Du coup, pas besoin de créer un nouveau champ ! big_smile


Sylvain M.

Hors ligne

 

#4 Mon 18 January 2021 15:17

Sylvain M.
Participant assidu
Lieu: Saint-Pierre-des-Nids (53)
Date d'inscription: 8 Sep 2005
Messages: 1044

Re: Spatialite : table / champ geometry issu d'une selection

J'ai quand mĂȘme une petite question bonus (oui oui, je suis en monologue depuis le dĂ©but, mais peut-ĂȘtre une Ăąme charitable viendra-t-elle me sortir de cette solitude).

Suite Ă  la requĂȘte, j'ai créé un index spatial avec

Code:

SELECT CreateSpatialIndex('matable', 'geom');

Mais l'emprise de la couche reste inconnu. Il y a bien le bouton "calculer" dans QGis (cf. capture ci-jointe), mais j'imagine qu'il y a une fonction SQL équivalente ?
Pourriez-vous m'indiquer laquelle ?


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Sylvain M.

Hors ligne

 

#5 Mon 18 January 2021 16:08

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1566

Re: Spatialite : table / champ geometry issu d'une selection

Hors ligne

 

#6 Tue 19 January 2021 09:50

Sylvain M.
Participant assidu
Lieu: Saint-Pierre-des-Nids (53)
Date d'inscription: 8 Sep 2005
Messages: 1044

Re: Spatialite : table / champ geometry issu d'une selection

Super : MERCI Nicolas !! big_smile


Sylvain M.

Hors ligne

 

#7 Tue 19 January 2021 10:36

Sylvain M.
Participant assidu
Lieu: Saint-Pierre-des-Nids (53)
Date d'inscription: 8 Sep 2005
Messages: 1044

Re: Spatialite : table / champ geometry issu d'une selection

Bon, en fait ça n'a pas rĂ©solu mon "problĂšme" (mais qui n'en est peut-ĂȘtre pas un).
Je voulais mettre Ă  jour l'information stockĂ©e par QGis pour la table. Mais ce n'est peut-ĂȘtre pas vraiment nĂ©cessaire.
J'ai exĂ©cutĂ© les requĂȘtes ci-dessous, elle fonctionnent et retournent bien l'emprise de la table, mais QGis affiche encore "Emprise inconnue (calculer)" sur les infos de la table.

Code:

SELECT Extent(geom)
FROM matable;

SELECT GetLayerExtent('matable', 'geom');

SELECT UpdateLayerStatistics('matable', 'geom');

SELECT UpdateLayerStatistics('matable');

Je ne sais pas comment mettre à jour les infos lues/stockées par QGis quand on fait "calculer l'emprise".
AprĂšs, ça ne change peut-ĂȘtre pas grand chose au niveau performances, puisque l'index spatial, lui, est bien calculĂ©/stockĂ©.

Dernière modification par Sylvain M. (Tue 19 January 2021 10:39)


Sylvain M.

Hors ligne

 

Pied de page des forums

Copyright Association GeoRezo