Proiettare l'attributo da un livello poligonale all'altro in QGIS?


16

Ho 2 strati poligonali che possono essere trovati qui . I due strati si sovrappongono. Il primo contiene una mappa delle contee tedesche nel 1928 e il secondo le contee come sono nel 2014.

Il livello 2014 contiene informazioni sulla popolazione (chiamata Bev nel set di dati). È possibile proiettare l'attributo della popolazione da un livello poligonale all'altro?

Per essere un po 'più specifico:

Considera la situazione in cui ho 2 contee nel livello con l'attributo popolazione ma nella stessa area sull'altro livello c'è solo 1 contea. QGIS può aggregare la popolazione delle due contee e scrivere queste informazioni nell'altro livello?

Se funziona, c'è anche un modo per farlo quando il livello con le informazioni ha in un'area specifica solo 1 contea ma ci sono 2 contee nell'altro livello? In questo caso, vorrei dividere la popolazione in proporzione alla dimensione della contea.


Questa risposta dovrebbe iniziare su un flusso di lavoro generale: gis.stackexchange.com/a/136820/10919
Tom

penso che il link sopra menzionato sia un buon punto di partenza, ma (!) implica che la popolazione sia equamente distribuita all'interno dei poligoni interessati. il che non è un dato di fatto
Robert Tuw,

2
... scusa il limite di tempo di 5 minuti. continua: e se si confrontano entrambi questi file di forme, c'è una differenza significativa nel livello di dettaglio - che si traduce in una miriade di poligoni del nastro ... dai un'occhiata a [link] ( dropbox.com/sh/7w97kjey33k7jdi/ AAARDwyyMryOBwjtY6IrFsh9a? Dl = 0 ). se in quel momento avessi informazioni sull'area abitata i risultati potrebbero essere migliorati in modo significativo
robert tuw

... ad es. i dati sul landcover del corine libero potrebbero aiutare a identificare l'area attualmente occupata e quindi migliorare i risultati dell'allocazione della popolazione basata sull'area.
Robert Tuw,

Risposte:


8

Disclaimer:

  1. Credo in questo caso particolare che sarebbe molto più accurato utilizzare i dati sulla popolazione a partire dal 2014 come strato di punti con il maggior numero possibile di dettagli (centroide di periferie, città, villaggi ...)

  2. Se BEV_ è davvero popolazione, allora ci sono alcuni valori davvero strani come GEN = Uelzen, BEV_ = 92553 in cui questo poligono viene confrontato con l'area dell'immagine satellitare di Google delle dimensioni del fango di un massimo di pochi campi da calcio.

Se vuoi davvero ottenere valori numerici in base al rapporto tra l'area del poligono si sovrappone tra i livelli (L1 = contee_2014, L2 = impero tedesco 1928):

  1. Prima di qualsiasi calcolo suggerisco di utilizzare i sistemi di coordinate proiettati in unità di misura, rispettivamente unità di misura quadrata per area. In questo caso ho usato EPSG: 3857
  2. In L1 usa Field Calculator , crea la colonna " Area " e compila con $ area
  3. Livelli di intersezione - Strumenti vettoriali / di geoprocessing / Intersezione ... - Input = L1, Intersect = L2
  4. Nel livello intersecato utilizzare Field Calculator , creare una colonna per la popolazione regolata dalla nuova area " PopArea " e riempire con "Popolazione" * $ area / "Area"
  5. Sciogli il livello intersecato con la Casella degli strumenti di elaborazione : trova Dissolve poligoni
    • scegli una colonna di valori poligonali unici come "Nome" da L2
    • seleziona Calcola min / max / somma ... e calcola su " PopArea "
    • il livello finale avrà la colonna sum_diss che è ciò che stai cercando (in questo caso specifico, popolazione adattata per 1928 contee dal 2014)

Se hai fatto tutto bene, dovresti ottenere circa 77 milioni di persone distribuite in base all'area delle contee L2 su 81 milioni in L1.

inserisci qui la descrizione dell'immagine


Grazie per la tua risposta. Per quanto riguarda i primi due punti: ho anche cercato di ottenere ciò che voglio con i centroidi. Funzionava abbastanza bene ma soprattutto per i poligoni più piccoli la corrispondenza non funzionava molto bene. Penso che i dati sulla popolazione siano stati in qualche modo confusi. Ma questo è solo un piccolo problema che posso risolvere da solo.
Alex

@Alex Credo che usare punti o centroidi in questo caso sia troppo dal mio punto di vista dalla soluzione che definirei sufficiente a causa di una sovrapposizione molto casuale. In questo modo perderai troppi dati.
Mirò

9

Se capisco correttamente la tua domanda, questo potrebbe risolvere la tua prima domanda. Ho fatto un test rapido e il seguente metodo sembra funzionare, ma vale la pena dare un'occhiata più da vicino per verificare se è corretto.

  1. creare punti casuali nel livello del 1928 (i centroidi potrebbero funzionare meglio. Dovrai controllare);
  2. intersecare il livello punti con il livello 2014 (il livello punti dovrebbe essere il livello di input);
  3. Unisci attributi per posizione. Il livello target è il livello 2014 e il livello punti è il livello join. Usa contiene come predicato geometrico. Lasciare il riepilogo degli attributi come predefinito (prima funzionalità individuata). Conservare tutti i record nella casella a discesa Partecipa alla tabella.

Verifica se il livello di output è corretto.

Se possibile, eseguilo tramite la casella degli strumenti di elaborazione in qgis (non devi salvare ogni livello, ma salvalo come livello temporaneo).

Non sono esattamente sicuro di ciò che comporta la tua seconda domanda. potresti elaborare?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.