Wycinanie świata na wielokąty o jednakowej wielkości populacji

9

Chciałbym wyciąć świat na wielokąty o jednakowej wielkości populacji, powiedzmy 100 milionów osób (zaczynając na przykład od danych rastrowych dotyczących gęstości zaludnienia podanych przez NASA). Wiem, że takie cięcie byłoby arbitralne w tym sensie, że istnieje wiele różnych rozwiązań. Ale to nie ma znaczenia, muszę to być arbitralne! Czy ktoś mógłby mi wskazać najlepszy sposób postępowania?

Julien
źródło
To brzmi jak określony typ kartogramu (a może odwrotny kartogram?). To pytanie ma przykład graficzny bardzo podobny do tego, co opisujesz, gdzie mapa składa się ze standardowych pikseli „jednostek”, a kształty o wyższych wartościach mają ich więcej. Chociaż nie ma konkretnej odpowiedzi, jak to zrobić, możesz zacząć od szukania możliwych rozwiązań.
Chris W
Właściwie to podrap. Mam wrażenie, że chcesz wziąć wielokąty światowych mas lądowych i pokroić je w kształty, które różnią się wielkością, ale wszystkie reprezentują 100 milionów ludzi. Kartogramy zniekształcają kształty w oparciu o wartość, więc jest to coś przeciwnego do tego, co chcesz zrobić. Jeśli masz raster gęstości z komórkami o znanej wielkości, możesz przekonwertować go na populację na komórkę, a następnie może znaleźć narzędzie lub analizę, która stworzyłaby wielokąty z komórek o sumie określonego progu. Wygląda na to, że w Spatial Analyst jest coś, co by to zrobiło, ale w tej chwili mi ucieka.
Chris W
@Julien Być może mógłbyś zastosować metodę segmentacji (wzrost regionu - patrz en.wikipedia.org/wiki/Image_segmentation ) z punktami początkowymi w lokalnych maksimach na powierzchni gęstości zaludnienia. Problemem może być to, że możesz skończyć z dziwnie ukształtowanymi wielokątami. Być może będziesz musiał wprowadzić w życie jakąś zasadę „okrągłości”. Jakkolwiek na to spojrzeć, jest to bardzo interesujące pytanie i nie mogę się doczekać, aby zobaczyć niektóre odpowiedzi.
WhiteboxDev,

Odpowiedzi:

1

Możesz stworzyć siatkę małych kwadratów pokrywających świat. Następnie skrypt mógłby zapętlać się na każdym sąsiednim kwadracie i while (suma (kwadraty.populacja) <1000000) {scalić (kwadraty)}. Dla ostatniego kwadratu, który skoczyłby powyżej 1 miliona, możesz zrobić to samo z dużo mniejszymi kwadratami. Powinieneś wędrować po kwadratach jak wąż, a nie w linii, więc końcowy kształt wielokąta nie zawsze jest taki sam. Możesz użyć przestrzennej bazy danych, takiej jak PostGIS, aby wykonać SUMĘ i scalenie (ST_UNION).

Twoje pytanie jest dość interesujące, informuj nas o swoich wynikach.

syldor
źródło