Come creare cartogrammi di aree contigue in QGIS o R?


21

Ecco cosa voglio ottenere (a destra):

http://junkcharts.typepad.com/.a/6a00d8341e992c53ef0162fd6913e8970d-pi

Sto cercando uno strumento o un metodo per trasformare uno shapefile (con QGIS o R) in questo modulo. E attenzione: non si tratta solo di ritagliare una griglia esagonale o una griglia di esagoni! Ogni esagono dovrebbe rappresentare un numero uguale di una misura (ad esempio ogni esagono rappresenta 5.000 alberi).

Forse conosci Scapetoad! http://scapetoad.choros.ch/ Quindi, sostanzialmente, voglio produrre un output simile a scapetoad, ma con una griglia più limitata (?).

modifica: la menzione di QGis e R non è una restrizione - è proprio dove stavo cercando una soluzione. Naturalmente sono contento di qualsiasi strumento, metodo o consiglio!


4
Il titolo sull'immagine a cui fai riferimento lo nomina per te (almeno genericamente); lo stesso vale per il titolo di quella pagina dello scapetoad: è un "cartogramma". Più specificamente, si tratta di un cartogramma (contiguo) che impiega elementi esagonali.
whuber

Questo riferimento mi è stato molto utile per farlo in [r]!
jsta,

Risposte:


7

Una procedura leggermente più soddisfacente:

  1. Produrre un cartogramma su un metodo "basato sulla diffusione" (come lo scapetoad).

    In QGis:

  2. Crea un livello esagonale [Plugin> Qmarxan> Crea griglia di pianificazione] (usa il numero appropriato / desiderato di esagoni). modifica: a seconda dello scopo della mappa, la griglia di Qmarxans potrebbe essere di dubbia qualità. Il plugin mmqgis produce risultati molto migliori (i poligoni si allineano perfettamente).

  3. Unisci lo strato esagonale con il cartogramma [Vettore> Strumenti di gestione dati> Unisci attributi per posizione]

  4. Ora il nuovo strato esagonale ha tutte le proprietà / gli attributi del cartogramma ed è possibile accedere a ciascuna subunità individualmente.

  5. Per una migliore conservazione della forma delle subunità sono possibili alcune operazioni manuali di tweeking: selezionare gli esagoni e modificare gli attributi direttamente nella tabella degli attributi. Questo passaggio funziona meglio se lo strato è semi-trasparente e il cartogramma basato sulla diffusione originale è mostrato di seguito.

  6. Unione degli esagoni di una subunità in un'unità: 1. Selezionare tutti gli esagoni di una subunità (se molti: utilizzare la tabella degli attributi per la selezione). 2. 'Attiva / Disattiva modifica'> 'Unisci funzionalità selezionate'.

Soprattutto il difetto b) rimane - ma a) è risolto e anche in una certa misura c) non è più un grosso problema, b / c questo metodo non richiede molto tempo.

Modifica: il passaggio 4. (e colorato in seguito) porta a questo risultato (strato esagonale trasparente in alto, cartogramma 'basato sulla diffusione' in basso): Illustrazione del "problema delle frontiere"

Gli esagoni verde brillante prendono chiaramente una riga per molto ...

Qualche idea su come sia possibile ottenere un adattamento migliore / personalizzato degli "attributi di join"? - Sto cercando un metodo per dare all'algoritmo una sorta di soglia (come:> 50% dell'area).


Posso garantire questo approccio, l'ho fatto con successo. Non ha trovato un modo soddisfacente per unire spazialmente gli esagoni al poligono che ha la massima sovrapposizione; Ho il sospetto che avrebbe bisogno di postgresql / postgis (Unisci gli attributi per posizione corrisponde solo al primo che trova, il che potrebbe non essere ottimale)
Steven Kay

2

Nel frattempo presenterò qual è la mia idea finora:

  1. Produrre un cartogramma su un metodo "basato sulla diffusione" (come lo scapetoad).

    In QGis:

  2. Crea un livello punto [Vettore> Strumenti di ricerca> Punti regolari].

  3. Clip point-layer con cartogramma.

  4. Crea un livello esagonale [Plugin> Qmarxan> Crea griglia di pianificazione] (usa il numero appropriato / desiderato di esagoni).

  5. Conta punti per poligono [Vettore> Strumenti di analisi> Punti in poligono].

  6. Nelle proprietà del livello del livello esagonale: applica un'etichettatura (o ritaglio) basata su regole [Filtro: "PKTCNT"> = 1].

Questo è tutto ciò che ho finora.

Le carenze sono:

a) Questa è solo la forma generale (le subunità devono essere elaborate di nuovo ...)

b) Il numero di esagoni è in qualche modo arbitrario legato alla misura reale, e peggio

c) se voglio cambiare l'unità della misura (ad es. invece di 5'000 alberi per esagono, ora voglio 100'000 alberi per esagono = riducono ulteriormente la complessità / i dettagli) devo ripetere l'intera procedura.

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.