Скорость рендеринга в QGIS. Часть 1

Одна из проблем QGIS — скорость отрисовки векторных слоёв. О ней знает большинство пользователей и все разработчики.

Одни мучаются молча; другие мучаются и постоянно тычут в сторону JOSM, рассказывая какой он замечательный; третьи строят пространственные индексы и опять мучаются (эффект есть только в определенных условиях). Кое-кто отказываются от shape-файлов и переходит на SpatiaLite (намного быстрее, но есть другие проблемы), кто-то решает проблему еще более радикально.

Сказать, что разработчики ничего не делают и закрывают глаза на проблему тоже нельзя. Работы ведутся, пусть и очень медленно. И сейчас ситуация намного лучше, чем пару лет назад, хотя простор для оптимизации еще есть. Кардинально улучшила бы ситуацию многопоточная отрисовка, реализованная в threading_branch, но увы… Мартин обещал заняться этим вопросом, но когда именно не это случится неизвестно.

Я тоже решил посмотреть как можно улучшить ситуацию, но прежде чем браться за код прогнал несколько тестов. Сразу оговорюсь, результаты и методика не претендуют на истину в последней инстанции. Цели получить рафинированные результаты у меня не было.

Тестирование проводил на своем ноутбуке (Intel Celeron T3000 Dual Core, 1.8 GHz, 2 Gb RAM, работает под управлением 32-х разрядной Slackware 13.37). Тепличных условий не создавал: помимо терминала, в котором и выполнялись тесты, был запущен Firefox с одной пустой вкладкой, в трее болтались PSI+, wicd и Liferea.

QGIS была пересобрана в режиме RelWithDebInfo со стандартными для Slackware ключами оптимизации -O2 -march=i486 -mtune=i686, а все сторонние модули были удалены. Для тестов использовалась утилита qgis_bench, позволяющая оценивать скорость отрисовки как отдельных слоёв так и целых проектов.

В качестве исходных данных использовалось 5 векторных слоёв:

  • слой road-l-osm из набора geosample (5911 объектов)
  • слой дорог highway-line из ГИС-Лабовских осмовыгрузок за 29.02.2012, самостоятельно обрезанный по границам Киева оттуда же (18314 объектов)
  • слой дорог highway-line из ГИС-Лабовских осмовыгрузок за 29.02.2012 на территорию Москвы (86227 объектов)
  • слой дорог highway-line из ГИС-Лабовских осмовыгрузок за 29.02.2012 на территорию Московской области (111912 объектов)
  • слой дорог highway-line из ГИС-Лабовских осмовыгрузок за 29.02.2012 на территорию Украины (207818 объектов)

Для каждого слоя было создано 3 проекта:

  • простая отрисовка (стиль Simple line, цвет линии — черный, толщина — 0.26)
  • сложный стиль (взял стиль «Pedestrian way» из стандартного набора условных знаков)
  • отрисовка по правилам (использовался стиль highway-line, подписи отключались)

Каждый проект три раза скармливался qgis_bench вот такой командой

qgis_bench --iterations 3 project.qgs

затем результаты усреднялись. И вот что получилось при стандартных настройках отрисовки QGIS (кеширование отключено, сглаживание линий включено).

Далі буде…

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

*