Spatial Intersect

Da GfossWiki.

Indice

[modifica] Premessa

Questa guida ha lo scopo di descrivere come eseguire una Join Spaziale (Spatial Join) e calcolo di un nuovo campo (Field Calculator) con due diversi layer all'interno di un DB Postgis.
Questa operazione può essere eseguita anche con i normali e "Ready to use" strumenti di Qgis. Ma quando cominciamo a trattare con moli di dati relativamente grandi Qgis comincia ad accusare lentezza nei calcoli
Al fine di ovviare a questo problema e velocizzare il processo dovremo far ricorso all'uso di Postgis o qualsiasi altro DBMS.

[modifica] Analisi dei Dati

Dopo aver caricato all'interno del nostro DB Postgis le due tabelle con geometria secondo la procedura analizziamo i dati che abbiamo
Tabella_A con questo schema

|--zone--|--val--|--the_geom--|

ed una Tabella_B con questo schema

|--name--|--dim--|--the_geom--|

Da notare che entrambe le tabelle sono dotate di geometria propria e che tali geometrie sono sovrapposte tra loro

[modifica] Query

Il risultato che vogliamo ottenere sarà una nuova tabella con tutti i campi all'interno della Tabella_B ed in aggiunta il relativo campo "val" all'interno della Tabella_A a seconda della loro posizione. In più aggiungeremo un nuovo campo dove calcoleremo i nuovi valori derivanti da un'operazione matematica su due campi

Tradotto:

CREATE TABLE Tabella_C
AS SELECT
  tableA.name,
  tableA.dim,
  tableB.val as val,
  tableA.the_geom
FROM
  "Tabella_A" as tableA,
  "Tabella_B" as tableB
WHERE
  ST_Intersects(tableA.the_geom,tableB.the_geom);
ALTER TABLE Tabella_C
ADD COLUMN dim_new;
UPDATE Tabella_C
SET dim_new = dim [operazione] val;

Ad ogni valore della Tabella_A è stato associato il corrispettivo valore (secondo la posizione) della Tabella_B e calcolato il nuovo valore attraverso un'operazione matematica popolando il nuovo campo dim_new

[modifica] Vedi anche

Torna a HOWTOs e procedure tipo

Strumenti personali
Namespace
Varianti
Azioni
menu principale
GFOSS
Strumenti