Comment créer des cartogrammes de zones contiguës dans QGIS ou R?

21

Voici ce que je veux réaliser (à droite):

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

Je recherche un outil ou une méthode pour transformer un fichier de formes (avec QGIS ou R) sous cette forme. Et s'il vous plaît soyez conscient: il ne s'agit pas simplement de couper une grille hexagonale ou une grille d'hexagones! Chaque hexagone doit représenter un nombre égal d'une mesure (par exemple, chaque hexagone représente 5 000 arbres).

Vous connaissez peut-être Scapetoad! http://scapetoad.choros.ch/ Donc, je veux essentiellement produire une sortie similaire à scapetoad - mais avec une grille plus restreinte (?).

edit: La mention de QGis et R n'est pas une restriction - c'est juste là que je cherchais une solution. Bien sûr, je suis satisfait de tout outil, méthode ou conseil!

Chrugel
la source
4
Le titre sur l'image que vous référencez le nomme pour vous (au moins génériquement); le titre de cette page scapetoad aussi: c'est un "cartogramme". Plus précisément, il s'agit d'un cartogramme de zone (contigu) qui utilise des éléments hexagonaux.
whuber
Cette référence m'a été très utile pour le faire en [r]!
jsta

Réponses:

7

Une procédure un peu plus satisfaisante:

  1. Produire un cartogramme sur une méthode «basée sur la diffusion» (comme scapetoad).

    Dans QGis:

  2. Créez une couche hexagonale [Plugins> Qmarxan> Créer une grille de planification] (utilisez le nombre approprié / souhaité d'hexagones). modifier: Selon le but de la carte, la grille Qmarxans peut être de qualité douteuse. Le plugin mmqgis produit de bien meilleurs résultats (les polygones s'alignent parfaitement).

  3. Rejoignez la couche hexagonale avec le cartogramme [Vecteur> Outils de gestion des données> Joindre les attributs par emplacement]

  4. Maintenant, la nouvelle couche hexagonale a toutes les propriétés / attributs du cartogramme, et il est possible d'accéder à chaque sous-unité individuellement.

  5. Pour une meilleure conservation de la forme des sous-unités, un tweeking manuel est possible: Sélectionnez le (s) hexagone (s) et modifiez le (s) attribut (s) directement dans la table attributaire. Cette étape fonctionne mieux si la couche est semi-transparente et si le cartogramme original basé sur la diffusion est illustré ci-dessous.

  6. Fusion des hexagones d'une sous-unité en une seule unité: 1. Sélectionnez tous les hexagones d'une sous-unité (si plusieurs: utilisez la table attributaire pour la sélection). 2. «bascule édition»> «fusionner les fonctions sélectionnées».

Principalement, le défaut b) demeure - mais a) est résolu et aussi dans une certaine mesure c) n'est plus un gros problème, b / c cette méthode ne prend pas beaucoup de temps.

Edit: l' étape 4. (et coloriée ensuite) conduit à ce résultat (couche hexagonale transparente en haut, cartogramme «basé sur la diffusion» ci-dessous): Illustration du "problème frontalier"

Les hexagones vert vif prennent clairement une rangée à beaucoup ...

Des idées sur la façon dont il est possible d'obtenir un meilleur / un ajustement personnalisé des «attributs de jointure»? - Je cherche une méthode pour donner à l'algorithme une sorte de seuil (comme:> 50% de la surface).

Chrugel
la source
Je peux garantir cette approche, je l'ai fait avec succès. Pas trouvé de manière satisfaisante pour relier spatialement les hexs au polygone qui a le plus grand chevauchement; Je soupçonne que cela nécessiterait postgresql / postgis (Joindre les attributs par emplacement correspond juste au premier qu'il trouve, ce qui peut ne pas être optimal)
Steven Kay
2

En attendant, je présenterai quelle est mon idée jusqu'à présent:

  1. Produire un cartogramme sur une méthode «basée sur la diffusion» (comme scapetoad).

    Dans QGis:

  2. Créez une couche de points [Vecteur> Outils de recherche> Points réguliers].

  3. Clip point-couche avec cartogramme.

  4. Créez une couche hexagonale [Plugins> Qmarxan> Créer une grille de planification] (utilisez le nombre approprié / souhaité d'hexagones).

  5. Compter les points par polygone [Vecteur> Outils d'analyse> Points dans le polygone].

  6. Dans les propriétés de la couche de la couche hexagonale: appliquez un étiquetage basé sur des règles (ou écrêtage) [Filtre: "PKTCNT"> = 1].

C'est tout ce que j'ai jusqu'à présent.

Les lacunes sont les suivantes:

a) C'est juste la forme globale (les sous-unités doivent être retravaillées ...)

b) Le nombre d'hexagones est quelque peu arbitraire lié à la mesure réelle, et pire encore

c) si je veux changer l'unité de mesure (par exemple au lieu de 5 000 arbres par hexagone, maintenant je veux 100 000 arbres par hexagone = réduire encore la complexité / le détail), je dois refaire toute la procédure.

Chrugel
la source