Наверное, все пользователи 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. Желающие ознакомиться с алгоритмом каскадного объединения могут сделать это здесь.