Разрезание мира на полигоны равной численности населения

9

Я хотел бы разрезать мир на полигоны равной численности населения, скажем, 100 миллионов человек (начиная, например, с растровых данных о плотности населения, предоставленных НАСА). Я знаю, что это сокращение будет произвольным в том смысле, что есть много разных решений. Но это не важно, мне нужно, чтобы это было произвольно! Пожалуйста, кто-нибудь может указать мне лучший способ продолжить?

Julien
источник
Это звучит как картограмма определенного типа (или, может быть, обратная картограмма?). У этого вопроса есть графический пример, очень похожий на то, что я думаю, вы описываете, где карта составлена ​​из стандартных единиц измерения «пикселей», а фигуры с более высокими значениями имеют их больше. Хотя нет конкретного ответа о том, как это сделать, вы можете начать с поиска возможных решений.
Крис W
На самом деле поцарапать это. У меня складывается впечатление, что вы хотите взять полигоны земных масс мира и разрезать их на фигуры, которые будут различаться по размеру, но все они представляют 100 миллионов человек. Картограммы искажают формы в зависимости от значения, так что это своего рода противоположность того, что вы хотите сделать. Если у вас есть растр плотности с ячейками известного размера, вы можете преобразовать его в популяцию на ячейку, а затем, возможно, найти инструмент или анализ, который бы создавал полигоны из ячеек с общим порогом. Кажется, что в Spatial Analyst есть что-то, что могло бы сделать это, но в данный момент это ускользает от меня.
Крис W
@Julien Возможно, вы могли бы использовать подход сегментации (рост региона - см. En.wikipedia.org/wiki/Image_segmentation ) с точками посева в локальных максимумах на поверхности плотности населения. Проблема может заключаться в том, что вы можете получить многоугольники странной формы. Возможно, вам придется применить какое-то правило «округлости». В любом случае, это очень интересный вопрос, и я не могу дождаться, чтобы увидеть некоторые ответы.
WhiteboxDev

Ответы:

1

Вы можете создать сетку из маленьких квадратов, которые покрывают мир. Затем скрипт может зацикливаться на каждом соседнем квадрате и while (sum (squares.population) <1000000) {merge (squares)}. Для последнего квадрата, который заставил бы вас прыгнуть выше 1 миллиона, вы можете сделать то же самое с гораздо меньшими квадратами. Вы должны бродить по квадратам как змея, а не в линию, поэтому окончательная форма многоугольника не всегда одинакова. Вы можете использовать пространственную базу данных, такую ​​как PostGIS, для выполнения SUM и слияния (ST_UNION).

Ваш вопрос довольно интересный, держите нас в курсе ваших результатов.

syldor
источник