GIS-LAB

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

Учебное руководство по GRASS

13. Конвертация данных

<<< предыдущая глава | оглавление | следующая глава >>>

При работе с пространственными данными очень часто возникает задача создания векторных данных на основе растровых. Такая задача может возникать как для линейных, так и для полигональных данных. Кроме того, не менее часто, приходиться сталкиваться с обратной задачей – получения растровых данных на основе векторных. Хорошим примером такой задачи может служить процесс создания цифровой модели рельефа на основе векторного слоя изолиний. ГИС GRASS включает широкую функциональность в области конвертации данных из одного формата в другой.

13.1 Векторизация растровых данных

В ГИС GRASS растровые данных могут быть автоматически сконвертированны в векторную модель представления данных. Конвертировать растровые данные можно как в полигональные векторные слои, так и в линейные. Кроме того, на основе растровых данных пользователь может создавать векторный слой изолиний.


Рисунок 27: Модули конвертации растровых данных в векторные

Векторизация в линии и изолинии

GRASS предлагает два модуля для автоматической конвертации растровых линейных данных в векторный формат. При этом выходной тип векторных данных может быть различным. Это могут быть линии или изолинии. Для каждого типа конвертации разработан соответствующий модуль: r.to.vect и r.contour.

Для конвертации в векторный линейный слой необходимо использовать команду r.to.vect. Данный модуль поддерживает такие типы геометрии как линии, полигоны и точки. Тип линия установлен по умолчанию. В случае, если линия представленная в растровом слое слишком широка (состоит из группы пикселей), необходимо использовать инструмент r.thin. Этот модуль позволяет получить линейный растровый слой, где ширина линии будет равна одному пикселю:

r.thin in=raster out=raster_thin
r.to.vect in=raster_thin out=raster_vect feature=line

Создать слой изолиний, например с использованием растра ЦМР, можно с помощью команды r.contour. В таком случае, изолинии будут рассчитаны и отвекторизованы исходя из величины шага (расстояние между изолиниями), устанавливаемого пользователем.

Этот шаг должен быть выбран исходя с одной стороны, от разрешения растра, и с другой стороны - желаемого масштаба выходной карты.

Векторизация полигональных объектов

Для векторизации растровых данных, представляющих полигоны, можно использовать модуль r.to.vect, который включает параметр feature=area

r.to.vect in=raster_thin out=raster_vect feature=area

Сглаживание линейных и полигональных векторных слоев

В процессе конвертации растровых данных в векторные, пользователь практически всегда сталкивается с эффектом «ступенчатости» векторных линий. Эта ступенчатость зависит от разрешения растровых данных. GRASS включает специальный модуль позволяющий сглаживать этот эффект - v.clean . Этот модуль требует задания дополнительного параметра prune, определяющего степень сглаживания.


Рисунок 28: Сглаживание векторных данных

Эффект «ступенчатости» зависит от исходного разрешения растра. Его появление связано с тем, что при конвертации растра в вектор, векторизатор «двигается» не по центрам пикселей, а создает линию по краю каждого пикселя.

На рисунке 28 показан эффект сглаживания линии. В данном случает порог сглаживания установлен достаточно высоким, чтобы лучше продемонстрировать эффект сглаживания. Исходная линия показана красным цветом, линия сглаженная с использованием модуля v.clean, показана голубым

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

Необходимо еще раз отметить, что в процессе векторизации может меняться геометрия объектов. Именно поэтому, использование модуля векторизации должно осуществляться вдумчиво. Часто, определение оптимального порога сглаживания требует нескольких попыток.

Конвертация точечных данных

В силу реорганизации архитектуры представления векторных данных в GRASS 5.4 «точка» как отдельный формат (sites-format) более не существует. Точечные данные теперь обрабатываются библиотекой векторных данных. Конвертация точечных растровых данных в точечные векторные может осуществляться с помощью модуля r.to.vect с параметром feature=point.

13.2 Конвертация векторных данных в растровые

Для конвертации векторных данных (полигональных, линейных и точечных) в растровую модель представления данных необходимо использовать модуль v.to.rast. При конвертации нужно указать ряд параметров, которые будут использованы для представления выходного растра.


Рисунок 29: Модули конвертации в векторных данных в растровые [5]

Доступны следующие варианты:
attr -> Колонки атрибутивной таблицы
cat -> Значения для категорий
val -> Заданное значение
z -> Z-координата (доступна только для точечных слоев и слоев изолиний)

Для того, чтобы результирующий растр наследовал значения определенной колонки атрибутивной таблицы векторного слоя, нужно использовать параметр attr и указать колонку, значения из которой необходимо использовать. Точность конечного растра будет зависеть от указанного разрешения (задается заранее). Изменить разрешение можно с помощью модуля g.region

GRASS содержит специальный инструментарий для создания растров на основе точечных данных. В таком случае, будут использованы алгоритмы интерполяции, подробно описанные в разделе 14.1.

<<< предыдущая глава | оглавление | следующая глава >>>

Обсудить в форуме Комментариев — 5

Последнее обновление: March 23 2009