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

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

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

Сообщение slimfedya »

Добрый день! Столкнулся со следующей проблемой:
Есть слой точек и слой полигонов, задача в том, чтобы присвоить каждой точке атрибут полигона, в который она попадает.
Нужный инструмент известен: Объединение атрибутов по районам. Но тут и возникает проблема. Точек около 1,5 тыс., полигонов - около 80 тыс. При запуске алгоритма QGIS стабильно умирает - оставлял думать на 2,5 часа, результата 0 - все висит. Пробовал объединять полигоны в составные объекты - без толку. При этом те же 1,5к точек с 2-3 тыс. полигонов объединяются довольно быстро.
Вопрос - как можно оптимизировать работу алгоритма и все-таки получить результат?
Аватара пользователя
jerry-maori
Гуру
Сообщения: 585
Зарегистрирован: 22 авг 2012, 17:02
Репутация: 143
Откуда: Нижний Новгород

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

Сообщение jerry-maori »

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

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

Сообщение gamm »

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

P.S. Я не знаю что там в QGIS наделали, но в нормальной системе должны быть пространственные индексы, и должно работать быстрее. Мы когда-то (лет 20 назад) выгружали охватывающие прямоугольники полигонов в базу FoxPro, запросом выбирали кандидатов для каждой точки, и потом искали пересечения только с кандидатами (такой запрос нынче можно и в Ёкселе соорудить, наверное).
trir
Гуру
Сообщения: 5362
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

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

Сообщение trir »

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

1. Загрузить в БД
2. Построить индексы
3. Выполнить запрос
Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2241
Зарегистрирован: 04 янв 2011, 22:00
Репутация: 1514
Откуда: Казань

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

Сообщение Игорь Белов »

Предположим, данные в шейпфайлах. Если Вы не создали пространственные индексы, сделайте это:
[Vector] → [Data management tools] → [Create spatial index]
Возможно, этого будет достаточно.
The purpose of computing is insight, not numbers
slimfedya
Новоприбывший
Сообщения: 8
Зарегистрирован: 02 сен 2017, 04:48
Репутация: 0
Откуда: Москва

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

Сообщение slimfedya »

Игорь Белов писал(а): 07 дек 2017, 08:27Возможно, этого будет достаточно.
Увы, по-прежнему все висит.
trir
Гуру
Сообщения: 5362
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

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

Сообщение trir »

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

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

Сообщение Denis Rykov »

Потоки в Python - это не миф, всё зависит от задач - где-то от их использования можно получить выигрыш, где-то нет.
Spatial is now, more than ever, just another column- The Geometry Column.
Аватара пользователя
jerry-maori
Гуру
Сообщения: 585
Зарегистрирован: 22 авг 2012, 17:02
Репутация: 143
Откуда: Нижний Новгород

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

Сообщение jerry-maori »

Потоки в питон миф только в Windows.
В Linux -- всё ок и норм.
Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

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

Сообщение Александр Мурый »

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

Вариант через растр, который предложил gamm, самый адекватный, по-моему.
Редактор материалов, модератор форума
Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2241
Зарегистрирован: 04 янв 2011, 22:00
Репутация: 1514
Откуда: Казань

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

Сообщение Игорь Белов »

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

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

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

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