Message posté par : Lsam
----------------------------------------
Bonjour,
Si tu veux pouvoir modifier ta couche CEREG_SIG à partir de cette requête qui ne
sélectionne que les doublons, il faut passer par 2 étapes :
1- enregistrer la requête sous forme d'une vue (view) dans ta base Spatialite (tu
l'exécutes dans la même fenêtre que précédemment)
-----------------
Code :
CREATE VIEW matricules_a_corriger AS
WITH doublons_matricules AS (
SELECT MAT as matricule_doublon, count(geometry) as nb_points_doublons
FROM CEREG_SIG
GROUP BY MAT
HAVING count(geometry) > 1
)
SELECT row_number() over(order by c.MAT) as id, c.MAT as matricule_incorrect, c.X, c.Y,
d.nb_points_doublons, CastToXY(c.geometry) as geom
FROM CEREG_SIG as c
JOIN doublons_matricules as d ON d.matricule_doublon = c.MAT
;
-----------------
Puis tu ouvres cette vue dans QGis, comme une table normale de ta base Spatialite.
2- créer un déclencheur (trigger) qui, lorsque tu modifies dans QGis le champ
matricule_incorrect de ta vue matricules_a_corriger, va au lieu de ça corriger la champ
MAT de ta couche d'origine CEREG_SIG :
-----------------
Code :
CREATE TRIGGER mat_corrections
INSTEAD OF UPDATE OF matricule_doublon ON matricules_a_corriger
BEGIN
UPDATE CEREG_SIG SET MAT = NEW.matricule_incorrect
WHERE CastToXY(geometry) = NEW.geom ;
END
;
-----------------
Tu exécutes cette commande dans la même fenêtre que les autres requêtes. (Attention, ça ne
fonctionne que si aucun point n'est superposé à un autre.)
Ce qui fait qu'en modifiant matricules_a_corriger tu modifies CEREG_SIG, et tes
doublons disparaîtront au fur et à mesure de tes corrections de matricules_a_corriger.
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=357484#p357484
Pour y répondre : qgis_fr(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net