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 block
con un campo IDcity block index
. - Un layer di punti
parking lot
con un campoparking lot size
.
Voglio conoscere il totale parking lot size
per ogni caratteristica nel land use
livello, quindi utilizzo la funzione di unione spaziale. Ecco il mio flusso di lavoro:
- Utilizzare
join attributes by location (summary)
per creare un nuovo temporaneojoined layer
che contenga un campo denominatoparking lot size_sum
. - Vai al pannello delle proprietà del
city block
livello e unisciti alparking lot size_sum
campo come nuovo campo chiamatojoined layer_parking lot size_sum
. - Nel
city block
livello, crea un nuovo campo chiamatototal parking lot size
. - Copia i valori da
joined layer_parking lot size_sum
e incollali intotal parking lot size
. - Elimina il file temporaneo
joined layer
.
Tutto quello che voglio fare è aggiungere un nuovo campo nel city block
livello originale riassumendo il parking lot size
campo. 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"