суббота, 7 апреля 2018 г.

Оценка плотности точек

Как-то мне выпало участвовать в разработке модуля оценки плотности точек в проекте IMC. Задача на первый взгляд скучная, но если вникнуть то оказывается что нужная многим и со своей внутренней спецификой.

Вообще говоря, в задаче требуется найти разбиение области содержащей точки на заданное число градаций плотности распределений и показать эти области заданными цветами.

При попытке вникнуть в правило, на основе которого надо написать функцию оценивания, выясняется, что для произвольных двух точек оцениваемые зоны могут выглядеть совершенно по-разному. Например, для двух точек могут быть выбраны зоны, их содержащие, так:
Или так:
Или даже так:
Собственно, задача сводится к тому, чтобы определить для произвольного пикселя, в котором нет точки, как оценить что в этом "пустом" месте есть плотность точек и насколько далеко от этого пикселя надо брать точки для оценивания.

В соответствующем модуле ArcGIS используется отстраивание контрольного окна (необязательно прямоугольного или круглого) относительно оцениваемой точки и для этого окна определяется сколько точек в нем оказалось. И в основном получаются сравнительно неплохие области распределений.

Я решил для оценивания плотности использовать модель гравитационного потенциала для точек равной массы. Алгоритм берет для оценивания пиксел изображения и для всех точек, попадающих в окно, строит функцию потенциала как обратно пропорциональную расстоянию до точки от центра окна или от пиксела. Все потенциалы вычисленные для пиксела складываются. И этот потенциал оценивается нормированно по размеру окна, считая его размер условно единицей.

Как и в модуле ArcGIS, требуется задавать размеры скользящего окна. Получаемые результаты приведены на изображениях ниже. на них оценивается распределение точек гидропостов.

Исходные точки гидропостов:
Настройки выполнения функции оценивания плотности точек:
Результат при выборе окна размером 10:
Результат при выборе окна размером 6:
Результат при выборе окна размером 4:
Результат при выборе окна размером 2:
Результат при выборе окна размером 1:
Результат при выборе окна размером 0.6:
В данном модуле оценивается именно плотность точек и таким способом, что все точки считаются равными по весу. На изображениях использовались точки гидропостов, каждый из которых в определенном смысле равен или равнозначен всем другим. В случае же если сами точки неравнозначны, то модуль может быть доработан и может оценивать потенциал от различных масс. Точно так же может быть доработан и модуль ArcGIS. Например, чтобы оценивать плотность населения, недостаточно оценивать плотность населенных пунктов, поскольку количество населения в каждом населенном пункте свое. В примеру, один населенный пункт Москва по количеству населения больше чем сотни мелких городков.

Поскольку модуль оценивает разбиение на области вполне правдоподобно, решили его оставить как есть. Хотя с точки зрения физики потенциала убывание потенциала не совсем то же самое что убывание плотности. И результаты разбиения на N градаций в IMC и в ArcGIS могут выглядеть не в точности равными.

Интересным следствием оценивания в обеих системах является зависимость результата от размеров скользящего окна оценивания. Если окно относительно большое, то оно эффективно выделяет относительно крупные кластеры точек. И чем окно меньше тем активнее выделяет более мелкие кластеры. В пределе при уменьшении окна размер такого кластера сходится на индивидуально каждой точке. Таким образом, если где-то увидите разбиение зон или карт или схем на области означающие некоторые плотности, например, уровень покрытия сотовой связи, то знайте маленький секрет - картинка сильно зависит от выбранного параметра построения зон, и они же могут быть построены как с выделением более мелких кластеров так и с выделением более крупных, вплоть до просто обведения всех точек большим овалом. Ну и если видите что зоны распределения показаны относительно содержательно и понятно значит тот кто их строил относится с уважением к своей аудитории.

Комментариев нет:

Отправить комментарий