SpatiaLite operatore EXCEPT

Supponiamo di lavorare con un database spatialite e di voler confrontare due geotabelle – che hanno stessa struttura – ma aggiornate in tempi diversi oppure popolate da diversi utenti: come confrontare le due tabelle (o una selezione di campi) per selezionare le righe diverse? utilizzando l’operatore EXCEPT di SQLite:

SELECT select_list1
FROM table1
EXCEPT
SELECT select_list2
FROM table2

Questa query deve essere conforme alle seguenti regole:

  • il numero di colonne di selezione di entrambe le query deve essere uguale;
  • l’ordine delle colonne e i loro tipi devono essere comparabili.

L’operatore SQLITE EXCEPT viene utilizzato per restituire tutte le righe nella prima istruzione SELECT che nonvengono restituite dalla seconda istruzione SELECT ; confronta anche i campi geometry.

Esempio:

GeoTabella Reg2016_WGS84 e un clone Reg2016_WGS84_test, in QGIS vedo:

QGIS

modifico solo la geometria del layer Reg2016_WGS84_test (quello rosso) ed rieseguo la query:

QGIS

ottengo una riga che corrisponde alla feature modificata.

Nell’esempio ho modificato il campo geometry ma vale per qualsiasi tipologia di campo.

Come usarlo in QGIS

QGIS permette di utilizzare questo operatore su qualsiasi dataset (shapefile, CSV, ecc…) attraverso l’uso dei Virtual Layer: un esempio di uso potrebbe essere quello di controllare se due dataset (uno shapefile e un csv), messi in JOIN usando un campo comune, hanno tutti i valori del campo uguali e poter individuare quali valori sono scritti male.

Riferimenti:

Pubblicità

2 pensieri su “SpatiaLite operatore EXCEPT

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.