Раскраска полигонов

Вопросы общего характера по ГИС и дистанционному зондированию, не связанные с конкретным ПО.
Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Раскраска полигонов

Сообщение Boris » 21 окт 2015, 20:13

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

Alexgis
Интересующийся
Сообщения: 23
Зарегистрирован: 19 окт 2015, 11:10
Репутация: 1

Re: Раскраска полигонов

Сообщение Alexgis » 22 окт 2015, 10:48

Boris,
1) Что именно должно быть разного цвета - пересечения, или пересекающиеся полигоны?
Разного цвета должны быть полигоны.
2) Есть ли наложения в месте пересечения трех и более полигонов?
Есть. Существуют области (места), в которых накладываются около 20 полигонгов.
теорема о четырёх красках здесь не применима - цветов будет больше.

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Раскраска полигонов

Сообщение Boris » 23 окт 2015, 00:07

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

Alexgis
Интересующийся
Сообщения: 23
Зарегистрирован: 19 окт 2015, 11:10
Репутация: 1

Re: Раскраска полигонов

Сообщение Alexgis » 23 окт 2015, 13:21

Пример полигонов и их раскраски
Вложения
ploly_clr.png
Раскрашенные полигоны
ploly_clr.png (7.14 КБ) 9787 просмотров
ploly.png
Полигоны
ploly.png (8.8 КБ) 9787 просмотров

KolesovDmitry
Гуру
Сообщения: 810
Зарегистрирован: 22 авг 2007, 14:58
Репутация: 123
Откуда: Казань

Re: Раскраска полигонов

Сообщение KolesovDmitry » 23 окт 2015, 13:46

Просто, чтобы лучше понять задачу -- а зачем вам их раскрашивать? Что вы потом собираетесь с этим делать?

Alexgis
Интересующийся
Сообщения: 23
Зарегистрирован: 19 окт 2015, 11:10
Репутация: 1

Re: Раскраска полигонов

Сообщение Alexgis » 23 окт 2015, 13:50

На всякий случай. Каждый полигон - одного цвета. При раскраске они не режутся.
Эффект разных цветов в примере - за счёт полупрозрачности.

Alexgis
Интересующийся
Сообщения: 23
Зарегистрирован: 19 окт 2015, 11:10
Репутация: 1

Re: Раскраска полигонов

Сообщение Alexgis » 23 окт 2015, 13:52

Полигоны это Convex hull + буфер вокруг точек, объединенных по некоторому признаку.
Вот точки и должны быть разного цвета.
KolesovDmitry писал(а):Что вы потом собираетесь с этим делать?
Показать на карте...

KolesovDmitry
Гуру
Сообщения: 810
Зарегистрирован: 22 авг 2007, 14:58
Репутация: 123
Откуда: Казань

Re: Раскраска полигонов

Сообщение KolesovDmitry » 23 окт 2015, 14:34

Alexgis писал(а):Полигоны это Convex hull + буфер вокруг точек, объединенных по некоторому признаку.
Вот точки и должны быть разного цвета.
KolesovDmitry писал(а):Что вы потом собираетесь с этим делать?
Показать на карте...
Тогда почему их просто не показать на карте так, как вы показали в примере (полупрозрачными)?

Alexgis
Интересующийся
Сообщения: 23
Зарегистрирован: 19 окт 2015, 11:10
Репутация: 1

Re: Раскраска полигонов

Сообщение Alexgis » 23 окт 2015, 14:40

Если цветов много (да ещё полупрозрачные) - их на глаз не отличить.
Т.е. невозможно сделать палитру 80 различимых цветов - даже 20 с трудом.
Задача в том, чтобы максимально уменьшить количество уникальных цветов.

На рисунке, цвета проставлены вручную. А хотелось бы, чтобы это делал автомат.

Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

Re: Раскраска полигонов

Сообщение Ariki » 23 окт 2015, 15:15

А в чём проблема? Вы правильно разобрались, что задача сводится к раскраске графа. По запросу "graph coloring algorithm" гуглится куча реализаций приближённого решения задачи:

С++
Python (исходный код библиотеки networkx)
Java

Alexgis
Интересующийся
Сообщения: 23
Зарегистрирован: 19 окт 2015, 11:10
Репутация: 1

Re: Раскраска полигонов

Сообщение Alexgis » 23 окт 2015, 15:31

Ariki, спасибо - буду смотреть!
Сейчас и используется приближённый - беда в том, что он нестабильный.
Пробовали два варианта. И тот и другой дают не оптимальный результат в зависимости от данных.

Придётся делать точный, 2000 узлов - не так много.
Алгоритм ищется, желательно на pl/sql, чтобы яву не деплоить, но не принципиально...

Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

Re: Раскраска полигонов

Сообщение Ariki » 23 окт 2015, 15:55

Приближённым жадный алгоритм раскраски является в том смысле, что он не гарантирует использование минимального количества цветов. Но гарантируется, что, например, если у вас один полигон может пересекаться максимум с 20 другими, то общее количество цветов будет не больше 21.

Точный алгоритм на таком количестве вершин использовать невозможно:
Википедия о сложности точного алгоритма

Alexgis
Интересующийся
Сообщения: 23
Зарегистрирован: 19 окт 2015, 11:10
Репутация: 1

Re: Раскраска полигонов

Сообщение Alexgis » 23 окт 2015, 16:57

Ariki писал(а):Википедия о сложности точного алгоритма
Жесть - я как-то на цифры не посмотрел сразу (((
Спасибо - похоже вопрос исчерпан...

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Раскраска полигонов

Сообщение Boris » 25 окт 2015, 19:13

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

Alexgis
Интересующийся
Сообщения: 23
Зарегистрирован: 19 окт 2015, 11:10
Репутация: 1

Re: Раскраска полигонов

Сообщение Alexgis » 26 окт 2015, 15:21

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

Ответить

Вернуться в «Общие вопросы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя