Оптимизация объединения атрибутов
-
- Новоприбывший
- Сообщения: 8
- Зарегистрирован: 02 сен 2017, 04:48
- Репутация: 0
- Откуда: Москва
Оптимизация объединения атрибутов
Добрый день! Столкнулся со следующей проблемой:
Есть слой точек и слой полигонов, задача в том, чтобы присвоить каждой точке атрибут полигона, в который она попадает.
Нужный инструмент известен: Объединение атрибутов по районам. Но тут и возникает проблема. Точек около 1,5 тыс., полигонов - около 80 тыс. При запуске алгоритма QGIS стабильно умирает - оставлял думать на 2,5 часа, результата 0 - все висит. Пробовал объединять полигоны в составные объекты - без толку. При этом те же 1,5к точек с 2-3 тыс. полигонов объединяются довольно быстро.
Вопрос - как можно оптимизировать работу алгоритма и все-таки получить результат?
Есть слой точек и слой полигонов, задача в том, чтобы присвоить каждой точке атрибут полигона, в который она попадает.
Нужный инструмент известен: Объединение атрибутов по районам. Но тут и возникает проблема. Точек около 1,5 тыс., полигонов - около 80 тыс. При запуске алгоритма QGIS стабильно умирает - оставлял думать на 2,5 часа, результата 0 - все висит. Пробовал объединять полигоны в составные объекты - без толку. При этом те же 1,5к точек с 2-3 тыс. полигонов объединяются довольно быстро.
Вопрос - как можно оптимизировать работу алгоритма и все-таки получить результат?
- jerry-maori
- Гуру
- Сообщения: 585
- Зарегистрирован: 22 авг 2012, 17:02
- Репутация: 143
- Откуда: Нижний Новгород
Re: Оптимизация объединения атрибутов
делать через питон. там можно попробовать развести по потокам.
-
- Гуру
- Сообщения: 4056
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1054
- Ваше звание: программист
- Откуда: Казань
Re: Оптимизация объединения атрибутов
не мудрите, снесите ID полигонов на мелкий растр, и сделайте выборку с растра в точках, потом по ID подцепите тематику. Все это в R (пакет raster), или вообще через утилиты GDAL, будет работать меньше минуты.
P.S. Я не знаю что там в QGIS наделали, но в нормальной системе должны быть пространственные индексы, и должно работать быстрее. Мы когда-то (лет 20 назад) выгружали охватывающие прямоугольники полигонов в базу FoxPro, запросом выбирали кандидатов для каждой точки, и потом искали пересечения только с кандидатами (такой запрос нынче можно и в Ёкселе соорудить, наверное).
-
- Гуру
- Сообщения: 5292
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1015
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Оптимизация объединения атрибутов
для этого надо заставить GDAL делать индексы при открытии каждого слояно в нормальной системе должны быть пространственные индексы
1. Загрузить в БД
2. Построить индексы
3. Выполнить запрос
- Игорь Белов
- Гуру
- Сообщения: 2231
- Зарегистрирован: 04 янв 2011, 22:00
- Репутация: 1503
- Откуда: Казань
Re: Оптимизация объединения атрибутов
Предположим, данные в шейпфайлах. Если Вы не создали пространственные индексы, сделайте это:
[Vector] → [Data management tools] → [Create spatial index]
Возможно, этого будет достаточно.
[Vector] → [Data management tools] → [Create spatial index]
Возможно, этого будет достаточно.
The purpose of computing is insight, not numbers
-
- Новоприбывший
- Сообщения: 8
- Зарегистрирован: 02 сен 2017, 04:48
- Репутация: 0
- Откуда: Москва
Re: Оптимизация объединения атрибутов
Увы, по-прежнему все висит.
-
- Гуру
- Сообщения: 5292
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1015
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Оптимизация объединения атрибутов
Потоки в Python - это не миф, всё зависит от задач - где-то от их использования можно получить выигрыш, где-то нет.
Spatial is now, more than ever, just another column- The Geometry Column.
- jerry-maori
- Гуру
- Сообщения: 585
- Зарегистрирован: 22 авг 2012, 17:02
- Репутация: 143
- Откуда: Нижний Новгород
Re: Оптимизация объединения атрибутов
Потоки в питон миф только в Windows.
В Linux -- всё ок и норм.
В Linux -- всё ок и норм.
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 793
- Ваше звание: званий не имею
- Откуда: Москва
Re: Оптимизация объединения атрибутов
По моим наблюдениям, проблемы возникают с топологически проблемными полигонами. Ну и количество вершин влияет тоже.
Если для теста построить простую прямоугольную сетку (например, штук 200 000 полигонов) и рэндомные точки в её пределах (например, штук 50 000), то объединение атрибутов проходит за считанные секунды.
Вариант через растр, который предложил gamm, самый адекватный, по-моему.
Если для теста построить простую прямоугольную сетку (например, штук 200 000 полигонов) и рэндомные точки в её пределах (например, штук 50 000), то объединение атрибутов проходит за считанные секунды.
Вариант через растр, который предложил gamm, самый адекватный, по-моему.
Редактор материалов, модератор форума
- Игорь Белов
- Гуру
- Сообщения: 2231
- Зарегистрирован: 04 янв 2011, 22:00
- Репутация: 1503
- Откуда: Казань
Re: Оптимизация объединения атрибутов
Объединять полигоны плохая идея. Напротив, нужно перед индексацией разбить их на элементарные. Если же и элементарные полигоны велики и сложны, нарезать их мелкими тайлами.
The purpose of computing is insight, not numbers
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 40 гостей