GIS-LAB

Географические информационные системы и дистанционное зондирование

Ускорение геопроцессинга в fTools

voltron, 04.04.2010

Наверное, все пользователи QGIS знают о fTools и пользовались этими инструментами хотя бы один раз. ? все знают, что в быстродействие некоторых операций оставляет желать лучшего. Особенно это заметно в операциях геопроцессинга.

Низкая скорость работы стала одной из причин переписывания fTools на C++.  Кроме того, после интегрирования кода в ядро QGIS все инструменты будут доступны из Python API, а значит их можно будет использовать в плагинах, что позволит избежать дублирования кода. Если у вас есть желание помочь – заходите в analysis_branch, работы много и мы будем рады патчам.

Параллельно с переписыванием на С++ Карсон периодически улучшает основной Python-вариант. Последнее изменение направлено на ускорение операции Объединения (Union). Улучшение основано на «каскадном объединении», недавно добавленном в GEOS. Для этого пришлось немного доработать класс QgsGeometry и обновить Python байдинги.

Результаты тестирования на слое grassland.shp из набора тестовых данных QGIS впечатляющие: 86.89 сек. для «старого» алгоритма и 6.14 сек для «нового». Т. е. скорость обработки относительно небольшого слоя (около 143 объектов различной сложности) возросла в 14.15 раз! Новый алгоритм хорошо работает как с полигональными, так и с линейными объектами, кроме того, ускорятся и некоторые другие операции, использующие объединение.

?зменения в ближайшее время будут доступны в trunk. Желающие ознакомиться с алгоритмом каскадного объединения могут сделать это здесь.

Оставьте комментарий


(Геокруг)

Если Вы обнаружили на сайте ошибку, выберите фрагмент текста и нажмите Ctrl+Enter