[QGIS-it-user] Comportamento indesiderato di QGIS in caso di errore in fusione linee

Stefano Romanelli romanelli.stefano a gmail.com
Mer 29 Gen 2020 05:41:47 PST


Per chiarezza quello descritto è il comportamento di QGIS non una mia
catena di lavoro.










*In pratica fondendo due linee di tipo LINESTRING che hanno un nodo in
comune la catena di lavoro che risulta è: BEGIN;  DELETE delle 2
lineeCOMMIT;BEGIN;   INSERT della nuova linea fusa.*
*COMMIT;*



Il giorno mer 29 gen 2020 alle ore 13:05 Stefano Romanelli <
romanelli.stefano a gmail.com> ha scritto:

> Buongiorno lista,
>
> volevo capire se il comportamento di QGIS descritto di seguito è corretto
> oppure se, come ritengo, possa trattarsi di bug.
>
> Lavoro con tabelle PostgreSQL. Ho testato su QGIS 2.18 e 3.4
>
> In pratica fondendo due linee di tipo LINESTRING che hanno un nodo in
> comune la catena di lavoro che risulta è:
>
> BEGIN;
>   DELETE delle 2 linee
> COMMIT;
>
> BEGIN;
>    INSERT della nuova linea fusa.
> COMMIT;
>
> Se un campo alfanumerico della tabella della nuova linea unita non
> soddisfa condizioni imposte si genera un errore ma DOPO che il primo COMMIT
> è andato a buon fine. Nel caso in cui decida di non salvare le modifiche e
> chiudere l'editing le due linee risultano comunque eliminate. Quindi
> nonostante apparentemente non abbia fatto nessuna modifica (ho fatto start
> editing, mi ha dato errore, ho chiuso l'editing senza salvare) in realtà la
> mia tabella è cambiata (e non poco!).
>
> Concettualmente mi parrebbe più opportuno:
>
> BEGIN;
>    DELETE delle 2 linee
>    INSERT della nuova linea fusa.
> COMMIT;
>
> Se invece si riesce a sanare l'errore la fusione avviene con successo.
>
> Di seguito una estrema semplificazione per riprodurre quanto sopra. In
> QGIS una volta in editing, selezionate le due linee, e usato "Fondi gli
> elementi selezionati" mettere un valore di b maggiore di a in "Fondi
> Attributi Elemento" e salvare.
>
> Si genera l'errore "
>
> Impossibile applicare le modifiche al vettore pippo
>
> Errori: SUCCESSO: 2 elementi eliminati.
>   ERRORE: 1 geometria non aggiunta.
>
>   Errori della sorgente dati:
>       Errore PostGIS nell'aggiunta delle geometrie: ERRORE:  pippo
>     CONTEXT:  funzione PL/pgSQL pippo_elimina() riga 6 a RAISE
> "
>
> Quindi abbandonare le modifiche senza salvare
>
>
> -------------------------------------------------------------------------------
>
> CREATE TABLE
>     pippo (
>         gid serial PRIMARY KEY,
>         a int,
>         b int,
>         geom geometry(LINESTRING, 3003)
>     )
> ;
>
> CREATE OR REPLACE FUNCTION pippo_elimina()
>  RETURNS trigger
>  LANGUAGE plpgsql
> AS $function$
>
> BEGIN
>     IF NEW.a < NEW.b THEN
>         RAISE EXCEPTION 'pippo';
>     ELSE
>         RETURN NEW;
>     END IF;
> END; $function$
> ;
>
> CREATE TRIGGER
>     pippo_before_insup
> BEFORE INSERT OR UPDATE ON
>     pippo
> FOR EACH ROW EXECUTE PROCEDURE
>     pippo_elimina()
> ;
>
>
> INSERT INTO
>     pippo (a,b,geom)
> VALUES
>
> (10,5,'0102000020BB0B000003000000BFD7DF8507B039419768526EEF8E5241659D8450C7B2394154EC9CFCB58E52412B15FD791CB33941C40B94587D8E5241'),
>     (15,12,
> '0102000020BB0B0000030000002B15FD791CB33941C40B94587D8E524185769A7466B639414213C1391D8F524169A67ACC3EB53941AB3EB0AB9A8E5241')
> ;
>
>
>
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.osgeo.org/pipermail/qgis-it-user/attachments/20200129/a5a309ac/attachment.html>


Maggiori informazioni sulla lista QGIS-it-user