Jak tworzyć ciągłe kartogramy powierzchni w QGIS lub R?

21

Oto, co chcę osiągnąć (po prawej):

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

Szukam narzędzia lub metody do przekształcenia pliku kształtu (z QGIS lub R) w tę formę. I pamiętaj: nie chodzi tylko o przycięcie sześciokątnej siatki lub siatki sześciokątów! Każdy sześciokąt powinien reprezentować taką samą liczbę miar (np. Każdy sześciokąt reprezentuje 5000 drzew).

Może wiesz o scapetoad! http://scapetoad.choros.ch/ Zasadniczo chcę stworzyć wynik podobny do scapetoad - ale z bardziej ograniczoną siatką (?).

edytuj: Wzmianka o QGis i R nie jest ograniczeniem - tylko tam szukałem rozwiązania. Oczywiście jestem zadowolony z każdego narzędzia, metody lub porady!

Chrugel
źródło
4
Tytuł obrazu, do którego się odwołujesz, nazywa go dla ciebie (przynajmniej ogólnie); podobnie tytuł strony ładującej scapet: jest to „kartogram”. Mówiąc dokładniej, jest to (ciągły) kartogram obszaru, który wykorzystuje elementy sześciokątne.
whuber
To odniesienie było dla mnie bardzo przydatne, aby to zrobić w [r]!
jsta

Odpowiedzi:

7

Nieco bardziej satysfakcjonująca procedura:

  1. Utwórz kartogram metodą „opartą na dyfuzji” (np. Scapetoad).

    W QGis:

  2. Utwórz warstwę heksagonalną [Wtyczki> Qmarxan> Utwórz siatkę planowania] (użyj odpowiedniej / pożądanej liczby sześciokątów). edycja: W zależności od celu mapy siatka Qmarxans może mieć wątpliwą jakość. Mmqgis plugin daje znacznie lepsze wyniki (wielokąty wyrównać idealnie).

  3. Połącz warstwę heksagonalną z kartogramem [Wektor> Narzędzia zarządzania danymi> Połącz atrybuty według lokalizacji]

  4. Teraz nowa warstwa heksagonalna ma wszystkie właściwości / atrybuty z kartogramu i można uzyskać dostęp do każdej podjednostki osobno.

  5. W celu lepszego zachowania kształtu podjednostek możliwe jest ręczne modyfikowanie: Wybierz sześciokąt (y) i zmień atrybuty bezpośrednio w tabeli atrybutów. Ten krok działa najlepiej, jeśli warstwa jest półprzezroczysta, a oryginalny kartogram oparty na dyfuzji pokazano poniżej.

  6. Scalanie sześciokątów podjednostki w jedną jednostkę: 1. Wybierz wszystkie sześciokąty podjednostki (jeśli wiele: użyj tabeli atrybutów do wyboru). 2. „Przełącz edycję”> „Scal wybrane funkcje”.

Głównie brakuje b) pozostaje - ale a) zostało rozwiązane, a także do pewnego stopnia c) nie jest już dużym problemem, b / c ta metoda nie zajmuje tyle czasu.

Edycja: Krok 4. (i pokolorowane później) prowadzi do tego wyniku (przezroczysta warstwa sześciokąta u góry, poniżej kartogram „oparty na dyfuzji”): Ilustracja „problemu z granicą”

Jasnozielone sześciokąty wyraźnie zajmują jeden rząd za dużo ...

Jakieś pomysły, w jaki sposób można uzyskać lepsze / niestandardowe dopasowanie „atrybutów łączenia”? - Szukam metody nadania algorytmowi pewnego rodzaju progu (na przykład:> 50% powierzchni).

Chrugel
źródło
Mogę ręczyć za to podejście, udało mi się to. Nie opracowano zadowalającego sposobu przestrzennego łączenia heksów z wielokątem, który ma największe zachodzenie na siebie; Podejrzewam, że potrzebowałby postgresql / postgis (łączenie atrybutów według lokalizacji odpowiada tylko pierwszemu, który znajdzie, co może nie być optymalne)
Steven Kay
2

Tymczasem przedstawię mój dotychczasowy pomysł:

  1. Utwórz kartogram metodą „opartą na dyfuzji” (np. Scapetoad).

    W QGis:

  2. Utwórz warstwę punktową [Wektor> Narzędzia badawcze> Zwykłe punkty].

  3. Klip punktowa warstwa z kartogramem.

  4. Utwórz warstwę heksagonalną [Wtyczki> Qmarxan> Utwórz siatkę planowania] (użyj odpowiedniej / pożądanej liczby sześciokątów).

  5. Policz punkty na wielokąt [Wektor> Narzędzia analizy> Punkty w wielokącie].

  6. We właściwościach warstwy warstwy heksagonalnej: zastosuj etykietowanie (lub obcinanie) oparte na regułach [Filtr: „PKTCNT”> = 1].

To wszystko, co do tej pory mam.

Niedociągnięcia to:

a) To tylko ogólny kształt (podjednostki muszą zostać ponownie opracowane ...)

b) Liczba sześciokątów jest nieco dowolna w stosunku do rzeczywistej miary i gorzej

c) jeśli chcę zmienić jednostkę miary (np. zamiast 5 000 drzew na sześciokąt, teraz chcę 100 000 drzew na sześciokąt = dalsze zmniejszenie złożoności / szczegółów), muszę ponownie wykonać całą procedurę.

Chrugel
źródło