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

Suite à un problème technique intervenu entre le 22 et le 23 mars, nous avons du procéder dans la soirée du 25 mars, à la restauration de la base de données du 24 mars (matinée).

En clair, nous avons perdu vos contributions et inscriptions du dimanche 24 et du lundi 25 mars.
Nous vous prions de nous excuser.

#1 Mon 18 January 2021 12:19

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

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

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

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

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

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

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

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