|
При работе с пространственными данными очень часто
возникает задача создания векторных данных на основе растровых. Такая задача
может возникать как для линейных, так и для полигональных данных. Кроме того,
не менее часто, приходиться сталкиваться с обратной задачей – получения растровых
данных на основе векторных. Хорошим примером такой задачи может служить
процесс создания цифровой модели рельефа на основе векторного слоя изолиний. ГИС
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 04 2008 (Наверх)
|