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