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: 995

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: 995

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: 995

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: 995

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: 1549

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: 995

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: 995

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

Powered by FluxBB