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

Pour sécuriser votre compte sur les forums du GeoRezo, nous demandons de changer votre mot de passe.

Vous allez recevoir un message pour effectuer ce changement de mot de passe.

Merci de bien respecter les règles préconisées.

#1 Mon 18 January 2021 12:19

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

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

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

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

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

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

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

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