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.
Pages: 1
- Sujet précédent - Spatialite + QGis : corruption géométries lors d'un ST_UNION - Sujet suivant
#1 Fri 04 June 2021 14:49
- Sylvain M.
- Participant assidu
- Lieu: Saint-Pierre-des-Nids (53)
- Date d'inscription: 8 Sep 2005
- Messages: 981
Spatialite + QGis : corruption géométries lors d'un ST_UNION
Bonjour à tous,
Je travaille dans QGis avec des données d'une BD Spatialite.
Je dispose d'une table source (multipolygones), sur laquelle je souhaite fusionner les entités (ST_Union) selon un champ attributaire.
J’exécute donc une requête de ce type :
CREATE TABLE st_union AS
SELECT champs_unions,
st_multi(st_makevalid(st_union(geom))) as geom
FROM source
GROUP BY champs_unions;
J'execute ensuite ces requêtes pour définir cette table comme géométrique et calculer l'index spatial :
Code:
SELECT RecoverGeometryColumn('st_union', 'geom', 2154, 'MULTIPOLYGON', 'XY'); SELECT CreateSpatialIndex('st_union', 'geom');
Malheureusement, les géométries de la couche créée doivent être corrompue car les polygones s'affichent et disparaissent aléatoirement selon le niveau de zoom.
J'ai essayé de placer mon st_makevalid() à différents niveau dans la création du champ geom (par ex. : st_makevalid(st_multi(st_union(geom))) as geom) mais le résultat est corrompu dans tous les cas.
Avez-vous une idée de la cause de cette corruption ?
Sylvain M.
Hors ligne
#2 Fri 04 June 2021 15:06
- Sylvain M.
- Participant assidu
- Lieu: Saint-Pierre-des-Nids (53)
- Date d'inscription: 8 Sep 2005
- Messages: 981
Re: Spatialite + QGis : corruption géométries lors d'un ST_UNION
Bon, j'ai fini par trouver la cause du problème.
Lors de la 1ere exécution de ma requête d'union, la création avait bien fonctionné et je n'avais pas de corruption.
Mais comme j'ai mis à jour les données sources, j'ai voulu recréer la table en faisant simplement avant :
Code:
DROP TABLE st_union;
Mais cela ne supprimait a priori pas l'index spatial.
Je viens de corriger mon problème en faisant, avant la recréation :
Code:
SELECT DisableSpatialIndex('st_union', 'geom'); DROP TABLE idx_st_union_geom;
Je suis preneur de vos conseils pour la méthode la plus "propre" !
Sylvain M.
Hors ligne
Pages: 1
- Sujet précédent - Spatialite + QGis : corruption géométries lors d'un ST_UNION - Sujet suivant