суббота, 16 июня 2007 г.

Quantum GIS (QGIS): обзор

Quantum GIS (QGIS) представляет собой геоинформационную систему, построенную на платформе Linux/Unix. QGIS поддерживает различные векторные и растровые форматы, а также предоставляет доступ к базам данных.

Перечислим основные возможности системы:

  • Поддержка таблиц PostGIS с пространственными данными

  • Поддержка форматов shapefiles (шейпфайлы), покрытий ArcInfo, файлов Mapinfo, и других форматов, доступных через OGR

  • Поддержка растров

  • Идентификация объектов

  • Отображение аттрибутивных таблиц

  • Возможности выбора объектов

  • Экспорт в map-файл Mapserver


Планируемые возможности:

  • Редактирование shapefiles и слоев PostGIS

  • Генерирование выходных карт

  • Поддержка скриптов

  • Поддержка метаданных



Quantum GIS 0.8.0 ('Titan')

Текущая версия QGIS имеет номер 0.8.1 и была выпущена 15 июня 2007 года. В этой версии устранены замеченные ошибки. Предыдущая версия с номером 0.8.0 выпущена 29 декабря 2006 года.

Что нового в версии 0.8

  • Поддержка WMS

  • Улучшено редактирование векторной и атрибутивной информации

  • Функции измерения дополнены измерением площади

  • Поиск по атрибутам

  • Новая структура легенды

  • Переделана структура приложения для обеспечения возможности использовать библиотеки QGIS в сторонних приложениях для отрисовки карт

  • Улучшена утилита экспорта в формат MapServer

  • Добавлена прозрачность и сглаживание векторных данных (наконец-то, обязательно сделаю и выложу скриншоты)

  • GRASS теперь поддерживается на всех платформах

  • Расширенная поддержка GRASS и панель команд

  • Расширены редактирование векторных данных, включая копирование, вырезание, вставку, "клики" и редактирование вершин

  • Редактирование слоев шейпфайлов и подключаемых через библиотеку OGR (не понял, то ли только шейпы через OGR, то ли шейпы и все, что подключается через OGR, уточню)



Еще есть WFS модуль, но он еще только-только тестируется, так что о нем пока ничего не говорится в анонсе.

Еще один новый модуль "PostgreSQL Geoprocessing", хотя при беглом взгляде там обнаружилась только функция построения буфера.

Модуль GPS работает только с форматом GPX (поддержка встроена в QGIS). Для поддержки других форматов необходим GPSBabel, программа его находит, выдает список поддерживаемых форматов, но файлы не грузит. Не знаю, в чем дело, разбираться пока не хочу.

Поддержкка WMS слоев работает, программа сама знает несколько серверов, можно поэкспериментировать.

Изменений много, попробую во вторник или около того загрузить целиком векторную карту Нижнего Новгорода в формате шейпфайлов, средствами QGIS сохранить ее в PostgreSQL, попробовать редактировать из шейпфайлов и из PostgreSQL. О результатах расскажу, если кого что интересует, пишите, буду знать, на что обратить внимание.

Ну вот уже и вторник, продолжаем наше исследование. Проверим на практике, что и как. Стандартом де-факто настольных ГИС многими специалистами справедливо признан ESRI ArcView 3.2, вот с ним и будем сравнивать. Впрочем, кто не знаком с ArcView, не огорчайтесь - я просто буду рассказывать о тех особенностях, которые бросаются в глаза при поочередном использование вышеназванных программ. Кстати, сам я ArcView не использую в силу лицензионных соображений, благо альтернативы есть. А вот QGIS на мой взгляд совершенно напрасно считается альтернативой, но об этом ниже.

Запускаем QGIS, идем в главное меню и выбираем пункт Layer->Add a Vector Layer. Выбираем нужные нам шейпфайлы и добавляем их в проект. Теперь перемещаем слои в соответствии с нужным нам порядком их отрисовки. Пока список всех слоев помещается на экране, все в порядке, но как только список перестает помещаться, при перемещении элементы в легенде начинают прыгать, жутко мешая работе. Так, обнаруживаем как это обойти - создаем группы в легенде и в них распихиваем слои. Теперь если свернуть группы, то можно нормально перетаскивать слои. Что будет, если список групп не поместится на экране, думать не хочется. Да, совсем забыл - пока добавляете слои, растаскиваете их по группам и указываете параметры отображения, обязательно отключите перерисовку карты (rendering), сняв флажок в правом нижнем углу программы!

Для удобства работы раскрашиваем слои как нам удобно. Сразу отметим минус - нельзя сохранить раскраску слоя в отдельный файлик, в каждом проекте слои придется оформлять заново. Указываем цвет полигонов и линий, где нужно, задаем цвет границы.



Для домов и улиц включаем отображение названий из поля атрибута LBL, настраиваем цвет и размер шрифта. И тут новые грабли - подписи слоя показываются всегда, притом перекрывают друг друга, приходится выставить диапазон масштабов, в которых слой отображается, иначе все просто ужасно. В результате карта получается бедная, хочется больше элементов отобразить, но они начинают перекрываться и сливаться.

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

При определенном увеличении карта становится более насыщенной, и все же выглядит очень непрофессионально.


Ладно, худо-бедно карту видим. Теперь попробуем идентификацию объектов на карте. Выбираем нужный слой в легенде, щелкаем на одном из объектов слоя на карте. Появляется окошко с информацией. Как и в ArcView, остается проблема определить, к какому слою относится интересующий нас объект. В mapserver такой проблемы нет, слой находится автоматически.

Есть приятная опция - в появившейся табличке отображается площадь объекта в квадратных километрах, но для малых площадей это поле не определено. Явно недоработка. Кстати, по умолчанию карта предполагается заданной в градусах и надо в глобальных настройках указать проекцию, иначе площадь будет считаться неправильно.

Еще можно посмотреть таблицу атрибутов. Первое впечатление - очень медленно работает. Второе - не хочет показывать на карте выбранный объект. Отредактировать записи вроде можно, но проверять не буду, слишком медленно и не видно на карте, что делаю, проще в OpenOffice открыть dbf файл и что надо поправить.

Создадим новый векторный слой (шейпфайл) и нарисуем в этом слое полигон. При создании слоя QGIS предлагает создать атрибуты, создадим парочку - ID типа Integer и LBL типа String. Начнем редактирование слоя, нарисуем полигон, завершим редактирование. QGIS предложит заполнить значения атрибутов нового объекта, заполняем, сохраняем. Теперь попробуем изменить созданный объект. Опять начинаем редактирование, пробуем изменить. Появляется сообщение об ошибке и предложение установить параметр Tolerance в Settings->Project Properties->General. Закрываем окно с сообщением. Снова появляется то же самое сообщение об ошибке, явный баг. Заходим в указанное меню, обнаруживаем, что параметр на самом деле называется Snapping Tolerance, устанавливаем значение 10 (метров). После чего успешно пробуем перетащить одну из вершин полигона в новое место. Ну что ж, редактирование работает, хотя опять же медленно. При каждом изменении редактируемого слоя и начале/окончании редактирования видимая область карты перерисовывается, что раздражает и замедляет работу.

Резюме: отредактировать пару объектов карты или нарисовать их вполне можно, но для постоянной работы система не годится совершенно. Интерфейс очень медленный, движок отрисовки карты примитивный. Есть интеграция с GRASS и PostGIS, возможно, на мощной машине что-то и получится, но я даже пробовать не буду. Тестирование проводилось на компьютере Celeron 2,4 GHz, 512 MB RAM, 80 Gb SATA HDD. За кадром остались такие возможности, как создание пирамидальных растров, геопривязка растров и работа с векторными форматами, отличными от шейпфайлов, но при текущем быстродействии QGIS мало у кого хватит желания и терпения добраться до этих функций. Функция создания конфигурационного файла для mapserver выглядит абсолютно нелепой - не ясно, кому нужна в mapserver карта с качеством отображения аналогичным QGIS. Лучше бы сделали наоборот - импорт файла mapserver, хотя бы тех параметров, которые в QGIS поддерживаются.

P.S. Впечатление о том, что разработчики ваяют нового Qt-шного монстра возникло еще в версии 0.3, теперь же это можно считать свершившимся фактом. Быстрее и удобнее редактировать карту через веб-интерфейс к mapserver. Рекомендую смотреть в сторону SagaGIS, много модулей и работает быстро.

Комментариев нет:


(C) Alexey Pechnikov aka MBG, mobigroup.ru