Emetti automaticamente i campi uniti nel livello di input durante l'utilizzo del join spaziale

Aug 24 2020

Ad esempio, ho due strati:

  • Un layer poligonale city blockcon un campo ID city block index.
  • Un layer di punti parking lotcon un campo parking lot size.

Voglio conoscere il totale parking lot sizeper ogni caratteristica nel land uselivello, quindi utilizzo la funzione di unione spaziale. Ecco il mio flusso di lavoro:

  1. Utilizzare join attributes by location (summary)per creare un nuovo temporaneo joined layerche contenga un campo denominato parking lot size_sum.
  2. Vai al pannello delle proprietà del city blocklivello e unisciti al parking lot size_sumcampo come nuovo campo chiamato joined layer_parking lot size_sum.
  3. Nel city blocklivello, crea un nuovo campo chiamato total parking lot size.
  4. Copia i valori da joined layer_parking lot size_sume incollali in total parking lot size.
  5. Elimina il file temporaneo joined layer.

Tutto quello che voglio fare è aggiungere un nuovo campo nel city blocklivello originale riassumendo il parking lot sizecampo. Ma devo eseguire tutti i passaggi precedenti. C'è un modo più semplice per farlo?

Risposte

3 Taras Aug 24 2020 at 14:18

La soluzione che ho menzionato nei commenti.

Usa un "livello virtuale" attraversoLayer > Add Layer > Add/Edit Virtual Layer...

Con la seguente Query è possibile conoscere la 'dimensione totale del parcheggio' per ogni 'isolato' .

SELECT cb.*, SUM(pl."parking lot size") AS pl_sum
FROM "city block" AS cb
JOIN "parking lot" AS pl ON st_contains(cb.geometry, pl.geometry)
GROUP BY cb."city block index"