Алгоритм создания полигонов(без Тизена/Вороного)

#python #shapely #voronoi

Вопрос:

Я пытался создать пользовательские регионы для штатов. Я хочу заполнить карту штата, используя область влияния точек.

Изображение ниже представляет то, что я пытался сделать. На левом изображении показаны точки, и я просто хочу заполнить все области, как на правом изображении. Я использовал Вороного/Тизена, но это оставляет некоторые точки за пределами области, так как для окраски многоугольника требуется только центроид.

Есть ли какой-либо алгоритм или процесс для достижения этого?, сейчас я использую в Python. введите описание изображения здесь

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

1. Создайте ячейку вороного из каждой точки по отдельности, а затем объедините полученные полигоны, которые имеют общий атрибут

Ответ №1:

Вы определили свою основную проблему: вы использовали кластерный алгоритм Вороного, который слишком прост для вашего приложения. Вам нужно применить ту же алгебру к самим точкам, а не к региону как единому статистическому объекту.

С этой целью я настоятельно рекомендую многоклассовый алгоритм SVM (Машина опорных векторов), который определит наибольшие разрывы между идентифицированными областями (классами) точек. Используйте модификацию ядра Гаусса (очень низкой степени) для обработки нелинейных границ. Вы почти наверняка получите простые кривые вместо линий.