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 !
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 ?
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
Bonjour,
Extent(geom) (http://www.gaia-gis.it/gaia-sins/spatia … 5.0.0.html)
Nicolas
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 !!
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