GIS-LAB

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

Введение в геоинформационные системы

Работа с векторными данными

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

Теоретическая часть

Основной метод получения векторных данных это так называемая векторизация (иногда также не совсем корректно называемая оцифровкой), т.е. перевод растровых данных в векторные. В процессе векторизации объекты представленные на растровом изображении только визуально (на них можно посмотреть, но с ними нельзя работать) становятся отдельными векторными объектами. В качестве источника данных чаще всего используются растровые топографические данные, данные дистанционного зондирования (космические и аэроснимки).

Векторизация может проводиться в ручном, автоматическом и полуавтоматическом режиме. Как уже говорилось в разделе "растровые и векторные данные" (ссылка), векторные объекты состоят из точек-узлов (vertex, node) и линий их соединяющих (arc, sketch, line).

Специфика создания векторной информации различается в зависимости от типа редактируемых объектов (точек, линий, полигонов). Точки самые простой для создания объект требующий одного нажатия клавиши мыши, линии более сложный объект, у них есть начало, конец и направление, полигон - по сути является линией точка начала которой совпадает с точкой окончания.

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

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

Для больших объемов векторизации предназначены специальные программные пакеты, например EasyTrace, однако и сам ArcMap также предоставляет большое количество удобных инструментов для векторизации (см. например модуль ArcScan).

Необходимо отметить, что автоматическая векторизация, хотя и является более производительным процессом, не рекомендуется для небольшого количества оцифровки, так как стадия подготовки растров для векторизации и "чистки" результатов может занять большее время, чем ручная векторизация небольшой карты. Рассматривать возможность автоматической или полуавтоматической векторизации стоит, если необходимо оцифровать большое количество картографического материала.

Редактирование
Если векторизация растра может быть разовой задачей, выполняемой на этапе подготовки данных, к которой потом можно не возвращаться, то редактирование векторных данных - повседневная необходимость (редактирование так же, как правило, необходимо для «доводки» результатов векторизации, особенно автоматической).

Векторные объекты могут быть удалены, перемещены, разделены, объединены, буферизованы, может быть изменен их размер и положение отдельных узлов (изменена форма объекта). Вместе с редактированием объекта могут изменяться и его атрибутивная информация, например при разделении векторного объекта на 2 части вместе с новым, дополнительным объектом в атрибутивной таблице также создается новая запись, требующая заполнения.

Топология
Комплекс требований (правил) взаимного отношения объектов называется топологией, а данные, выполняющие все эти правила - топологически корректными. Топологическая корректность может достигаться как за счет использования специальных форматов, "следящих" за топологией, одним из таких форматов является формат геобазыданных (geodatabase), в этом формате данных объектам в одном слое и объектам разных слоев можно задавать свои правила взаимоотношений, такие как например:

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

Эти и другие правила помогают контролировать геометрическую точность данных и поддерживать взаимоотношения между ними близкие к взаимоотношениям объектов в реальном мире (например: река - линия, впадает в другую реку - заканчивается на другой линии, без перелетов или недалетов, появляющихся при оцифровке).

Для облегчения привязки одних объектов к другим в режиме создания или редактирования данных может использоваться режим привязки (snapping) новых или изменяемых узлов друг к другу (в соседних объектах) или к линиям или к конечным точкам (endpoints) линий.

Практическая часть

Скачать учебные материалы для этой главы.

В практической части этой главы Вы научитесь:

  • Создавать различные типы векторных данных используя растровые в качестве основы;
  • Использовать различные инструменты векторизации.

Упражнение 1. Создание векторных данных - точки

  1. Откройте ArcMap, создайте новый проект с именем ex-19.mxd.
  2. Загрузите в проект фрагмент топографической карты topo.tif.
  3. С помощью ArcCatalog создайте новый точечный шейп-файл point.shp и задайте географическую систему координат WGS84.
  4. В атрибутивной таблице shape-файла создайте поле Height (высота) целочисленного типа.
  5. Загрузите созданный точечный слой в Вид и измените условное обозначение на более отчетливое.
  6. Подключите панель редактирования данных Editor. Для этого щелкните мышью в верхней части окна ArcMap и выберите из выпадающего списка Editor. После этого должна активироваться панель Editor.
  7. В главном меню выберите Selection - Set Selectable Layers. В тех случаях, когда в Вид загружено более одного слоя, необходимо указать тот слой, который вы собиратесь редактировать и отключить все остальные слои
  8. В панели Editor нажмите кнопку Editor и выберите Start Editing. Как вы видите, остальная часть панели Editor стала активной. В поле target необходимо указать слой, который будет редактироваться, если во фрейм данных загружена только одна векторная тема, она и появится в списке.
  9. Поле task определяет операцию которая будет проводиться во время редактирования. Для создания нового объекта необходимо указать задание Create New Feature, эта опция также появляются по умолчанию.
  10. На панели Editor выберите кнопку Sketch Tool инструмент Sketch.
  11. С помощью этого инструмента поставьте несколько точек соответствующих, например отметкам высот.
  12. После создания точки, используйте инструмент Attributes (аттрибуты) Attributesдля ввода информации о высоте.
  13. Сохраните изменения в созданном shape-файле с помощью Editor\Stop editing
  14. Сохраните проект.

Упражнение 2. Создание векторных данных - линии

  1. Если вы только что закочили Упражнение 1, оставайтесь в созданном проекте (ex-19.mxd). Если вы решили пропустить Упражнение 1, вам придется вернуться и пройти пункты 1-2 этого упражнения, чтобы создать этот проект.
  2. С помощью ArcCatalog создайте новый линейный шейп-файл Line.shp и задайте ему географическую систему координат WGS84.
  3. В атрибутивной таблице shape-файла создайте поле Name (названия) текстового типа шириной 50 единиц.
  4. Загрузить только что созданный слой в проект и измените условное обозначение для линейных объектов на более контрастное по сравнению с объектами на карте, например такое:
  5. условное обозначение для линии

  6. В панели Editor нажмите кнопку Editor и выберите Start Editing. Как вы видите, остальная часть панели Editor стала активной. В поле target необходимо указать слой Lines.
  7. панель редактирования

  8. Поле task определяет операцию которая будет проводиться во время редактирования. Для создания нового объекта необходимо указать задание Create New Feature, эта опция также появляются по умолчанию.
  9. На панели Editor выберите кнопку Sketch Tool инструмент Sketch.
  10. Увеличьте северо-западный фрагмент карты и с помощью инструмента Sketch Tool отрисуйте несколько линейных фрагментов рек, до их впадения в реку представленную как площадной символ.
  11. условное обозначение для линии

  12. Подобно тому, как мы это делали для точек, для рек, в заранее созданное поле Name можно ввести необходимые атрибуты, например названия. Это можно сделать с помощью инструмента Attributes Attributes располагающегося на панели инструментов редактирования. Если окно атрибутов пустое, это означает, что ни один из созданных объектов не выбран. Выбрать объект можно с помощью инструмента Select Features Select Features
  13. условное обозначение для линии

  14. Сохраните изменения в созданном shape-файле с помощью Editor\Stop editing
  15. Сохраните проект.

Упражнение 3. Создание векторных данных - полигоны

  1. Если вы только что закочили Упражнение 1 или 2, оставайтесь в созданном проекте (ex-19.mxd). Если вы решили пропустить Упражнение 1, вам придется вернуться и пройти пункты 1-2 этого упражнения, чтобы создать этот проект.
  2. С помощью ArcCatalog создайте новый полигональный шейп-файл Polygon.shp и задайте географическую систему координат WGS84
  3. Для этого, отройте ArcCatalog и выберите директорию, в которой хранится урок 19 (chap19). Затем, в закладке Content, в правой части окна ArcCatalog щелкните правой кнопкой. Перед вами появится меню вида:

    условное обозначение для линии

    Выберите New и из появившегося списка выберите Shapefile.

  4. В диалоговом окне создания нового шейпфайла, укажите его называние (поле Name) - Polygon, тип данных (Feature Type) – polygon.

    условное обозначение для линии

  5. Далее, нажмите кнопку Edit в разделе Spatial Reference и затем выберите – select. Это меню позволяет выбрать систему координат из списка уже существующих в составе программы ArcGIS.
  6. Из списка выберите директорию Geographic Coordinate System, далее поддиректорию World и укажите проекцию WGS 1984.prj. Нажмите кнопку Add, затем Применить и ОК и еще раз ОК (уже в окне создания шейпфайла). После этого вы должны увидеть новый шейпфайл в окне Content приложения ArcCatalog.
  7. Добавьте слой в проект ArcMap (см. предыдущее упражнение).
  8. Начните редактирование полигонального слоя (Editor -> Start Editing. Не забыть выбрать слой polygon.shp из списка поля target.)

    условное обозначение для линии

  9. Оцифровать несколько полигональных объектов речной сети. Постарайтесь оцифровать те объекты, к которым примыкают оцифрованные ранее (см. предыдущее упражнение) линейные объекты (линейная гидрография). Как вы увидите в процесс оцифровки, далеко не всегда удается сохранить правильную топологию между слоями. Так, часть оцифрованных вами линейных объектов будет «недолетать» до оцифрованного полигонального объекта, а часть – оказываться «внутри». Эти ошибки мы откорректируем в Упражнении 4 данного урока.

    условное обозначение для линии

  10. После того, как вы оцифровали несколько объектов, закончите редактирование (Editor –> Stop Editing)
  11. Сохраните проект (ex-19.mxd).

Упражнение 4. Привязка одних объектов к другим при редактировании (snapping)

  1. Для выполнения этого упражнения вам понадобится проект с созданными линейным и полигональным наборами объектов из Упражнений 2 и 3.
  2. Как уже указывалось в предыдущем упражнении, при оцифровке речных объектов разных типов (в данном случае линейного и полигонального) появились некоторые неточности (недолеты и перелеты), как это показано на картинке внизу. Для того чтобы провести топологическую коррекцию данных, нам потребуется задействовать несколько специальных инструментов меню Редактирования (Editor).

    условное обозначение для линии

  3. Откройте проект ex-19.mxd (в нем должны хранится оцифрованные ранее линейный и полигональный слои – line.shp и polygon.shp соответственно)

    условное обозначение для линии

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

    условное обозначение для линии

  5. Для того, чтобы исправить топологию между слоями в меню Редактирования (Editor), нажмите на пункт Snapping.

    условное обозначение для линии

  6. После того, как вы нажмете на пункт Snapping в рабочем окне проекта откроется дополнительные окно – окно выбора параметров Snapping. В этом окне вы можете задавать условия «прилипания» объектов друг к другу. Существует три варианта работы с «прилипанием»: прилипание узлов (Vertex), прилипание дуг (Edge) и прилипание концевых узлов (End) объекта. Чаще всего, вы будете использовать прилипание узлов и концевых узлов.

    условное обозначение для линии

  7. В предложенном меню отметьте галочкой для слоя line прилипание узлов (Vertex) и концевых узлов (End), а для полигонального слоя отметьте галочкой прилипание узлов (Vertex) и конечных узлов (End).

    условное обозначение для линии

  8. В меню Редактирования (Editor) нажмите на раздел Опции (Options). В этом меню вы можете задавать такие параметры прилипания как «расстояние между узлами и дугами» - snapping tolerance, «автоматическое прилипание при сокращении расстояния между узлами до определенного» - sticky move tolerance и другие параметры.

    условное обозначение для линии

  9. Задайте параметры прилипания так, как указано на картинке выше. Эти параметры могут варьироваться в зависимости от того, с какой точностью были оцифрованы объекты. Чем больше расстояние между линейным и полигональным слоем – тем большим надо ставить величину tolerance.
  10. Начните редактирование линейного слоя. В меню задач (tasks) укажите Modify feature

    условное обозначение для линии

  11. Выделите линию для редактирования (это должна быть та линия, которую необходимо прилепить к узлам границ полигонального слоя). Нажмите кнопку Sketch tool и выделите узел линии, который необходимо «прилепить» к границе полигонального слоя.

    условное обозначение для линии

  12. Начните сдвигать этот узел в сторону границы полигонального слоя. Через некоторое время вы обратите внимание, что конец линии автоматически «прилепился» к ближайшему узлу на границе полигонального слоя.

    условное обозначение для линии

  13. После того, как узел линейного слоя «прилип» к узлу полигонального слоя окончите редактирование линии двойным щелчком мыши.

    условное обозначение для линии

  14. Убедитесь, что линия действительно была прилеплена к полигональному слою (увеличьте до максимума этот участок карты).

    условное обозначение для линии

  15. Закончите редактирование слоя (Editor -> Stop Editing).

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

Последнее обновление: November 29 2008