Оптимизация объединения атрибутов

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Ответить
slimfedya
Новоприбывший
Сообщения: 8
Зарегистрирован: 02 сен 2017, 04:48
Репутация: 0
Откуда: Москва

Оптимизация объединения атрибутов

Сообщение slimfedya » 06 дек 2017, 18:32

Добрый день! Столкнулся со следующей проблемой:
Есть слой точек и слой полигонов, задача в том, чтобы присвоить каждой точке атрибут полигона, в который она попадает.
Нужный инструмент известен: Объединение атрибутов по районам. Но тут и возникает проблема. Точек около 1,5 тыс., полигонов - около 80 тыс. При запуске алгоритма QGIS стабильно умирает - оставлял думать на 2,5 часа, результата 0 - все висит. Пробовал объединять полигоны в составные объекты - без толку. При этом те же 1,5к точек с 2-3 тыс. полигонов объединяются довольно быстро.
Вопрос - как можно оптимизировать работу алгоритма и все-таки получить результат?

Аватара пользователя
jerry-maori
Гуру
Сообщения: 585
Зарегистрирован: 22 авг 2012, 17:02
Репутация: 143
Откуда: Нижний Новгород

Re: Оптимизация объединения атрибутов

Сообщение jerry-maori » 06 дек 2017, 19:13

делать через питон. там можно попробовать развести по потокам.

gamm
Гуру
Сообщения: 4048
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1050
Ваше звание: программист
Откуда: Казань

Re: Оптимизация объединения атрибутов

Сообщение gamm » 06 дек 2017, 20:36

slimfedya писал(а):
06 дек 2017, 18:32
Вопрос - как можно оптимизировать работу алгоритма и все-таки получить результат?
не мудрите, снесите ID полигонов на мелкий растр, и сделайте выборку с растра в точках, потом по ID подцепите тематику. Все это в R (пакет raster), или вообще через утилиты GDAL, будет работать меньше минуты.

P.S. Я не знаю что там в QGIS наделали, но в нормальной системе должны быть пространственные индексы, и должно работать быстрее. Мы когда-то (лет 20 назад) выгружали охватывающие прямоугольники полигонов в базу FoxPro, запросом выбирали кандидатов для каждой точки, и потом искали пересечения только с кандидатами (такой запрос нынче можно и в Ёкселе соорудить, наверное).

trir
Гуру
Сообщения: 5278
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1014
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Оптимизация объединения атрибутов

Сообщение trir » 06 дек 2017, 20:48

но в нормальной системе должны быть пространственные индексы
для этого надо заставить GDAL делать индексы при открытии каждого слоя

1. Загрузить в БД
2. Построить индексы
3. Выполнить запрос

Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2229
Зарегистрирован: 04 янв 2011, 22:00
Репутация: 1501
Откуда: Казань

Re: Оптимизация объединения атрибутов

Сообщение Игорь Белов » 07 дек 2017, 08:27

Предположим, данные в шейпфайлах. Если Вы не создали пространственные индексы, сделайте это:
[Vector] → [Data management tools] → [Create spatial index]
Возможно, этого будет достаточно.
The purpose of computing is insight, not numbers

slimfedya
Новоприбывший
Сообщения: 8
Зарегистрирован: 02 сен 2017, 04:48
Репутация: 0
Откуда: Москва

Re: Оптимизация объединения атрибутов

Сообщение slimfedya » 08 дек 2017, 01:43

Игорь Белов писал(а):
07 дек 2017, 08:27
Возможно, этого будет достаточно.
Увы, по-прежнему все висит.

trir
Гуру
Сообщения: 5278
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1014
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Оптимизация объединения атрибутов

Сообщение trir » 08 дек 2017, 06:59

было
делать через питон. там можно попробовать развести по потокам.
потоки в python - это миф

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Оптимизация объединения атрибутов

Сообщение Denis Rykov » 08 дек 2017, 07:44

Потоки в Python - это не миф, всё зависит от задач - где-то от их использования можно получить выигрыш, где-то нет.
Spatial is now, more than ever, just another column- The Geometry Column.

Аватара пользователя
jerry-maori
Гуру
Сообщения: 585
Зарегистрирован: 22 авг 2012, 17:02
Репутация: 143
Откуда: Нижний Новгород

Re: Оптимизация объединения атрибутов

Сообщение jerry-maori » 08 дек 2017, 08:54

Потоки в питон миф только в Windows.
В Linux -- всё ок и норм.

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

Re: Оптимизация объединения атрибутов

Сообщение Александр Мурый » 08 дек 2017, 11:54

По моим наблюдениям, проблемы возникают с топологически проблемными полигонами. Ну и количество вершин влияет тоже.
Если для теста построить простую прямоугольную сетку (например, штук 200 000 полигонов) и рэндомные точки в её пределах (например, штук 50 000), то объединение атрибутов проходит за считанные секунды.

Вариант через растр, который предложил gamm, самый адекватный, по-моему.
Редактор материалов, модератор форума

Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2229
Зарегистрирован: 04 янв 2011, 22:00
Репутация: 1501
Откуда: Казань

Re: Оптимизация объединения атрибутов

Сообщение Игорь Белов » 08 дек 2017, 12:31

Объединять полигоны плохая идея. Напротив, нужно перед индексацией разбить их на элементарные. Если же и элементарные полигоны велики и сложны, нарезать их мелкими тайлами.
The purpose of computing is insight, not numbers

Ответить

Вернуться в «QGIS»

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

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