Работа с векторными данными в ГИС SAGA: различия между версиями

Материал из GIS-Lab
Перейти к навигации Перейти к поиску
 
(не показана 51 промежуточная версия этого же участника)
Строка 3: Строка 3:
{{Аннотация|Описание инструментария SAGA для работы с шейп-файлами на примере векторизации фрагмента топографической карты}}
{{Аннотация|Описание инструментария SAGA для работы с шейп-файлами на примере векторизации фрагмента топографической карты}}


Несмотря на аналитическое назначение и направленность на работу с растровыми данными, SAGA содержит необходимый набор инструментов для создания, редактирования и базового анализа шейп-файлов.
Несмотря на аналитическое назначение и направленность на работу с растрами, SAGA содержит необходимый набор инструментов для создания, редактирования и базового анализа векторных данных.
В качестве подложки для векторизации в данной статье будет использован лист топографический карты [http://sunsite.berkeley.edu/EART/x-ussr/100k/M-37-121.jpg М-37-121] в ПСК UTM WGS 84, [http://gis-lab.info/qa/georef-saga.html процедура привязки] которого была рассмотрена ранее.


== Создание и редактирование полигонального векторного слоя ==
В качестве основы для векторизации в данной статье будет использован фрагмент листа топографический карты [http://sunsite.berkeley.edu/EART/x-ussr/100k/M-37-121.jpg М-37-121] в ПСК UTM WGS 84, [http://gis-lab.info/qa/georef-saga.html процедура привязки] которого была рассмотрена в предыдущей статье.
 
<span style="color:red">'''NB'''</span> Обратите внимание, что в создаваемые векторные слои проекция растровой подложки, на основе которой они создаются, закладывается по умолчанию, но не присваивается автоматически. Чтобы дополнить файл информацией о проекции воспользуйтесь модулем <tt>Projection – Proj.4 => Set Coordinate Reference System</tt>, работа которого рассматривалась  [http://gis-lab.info/qa/georef-saga.html#.D0.9D.D0.B0.D0.B7.D0.BD.D0.B0.D1.87.D0.B5.D0.BD.D0.B8.D0.B5_.D0.B8.D0.B7.D0.B2.D0.B5.D1.81.D1.82.D0.BD.D0.BE.D0.B9_.D1.81.D0.B8.D1.81.D1.82.D0.B5.D0.BC.D1.8B_.D0.BA.D0.BE.D0.BE.D1.80.D0.B4.D0.B8.D0.BD.D0.B0.D1.82_.28.D0.93.D0.A1.D0.9A_Pulkovo_1942.29 ранее].
 
== Создание и редактирование векторных данных ==
 
Для удобства работы сначала ограничим полигоном область интереса, а затем векторизируем горизонтали и точечные высотные отметки, лежащие в ее пределах.
 
=== Полигоны ===


На вкладке <tt>Modules</tt> двойным щелчком мыши запускаем модуль <tt>Shapes – Tools => Create New Shapes Layer</tt>. В диалоговом окне модуля задаем имя нового шейп-файла <tt>Name</tt> – ''area_plg'', а в поле <tt>Shape Type</tt> из выпадающего списка выбираем <tt>Polygon</tt>. Прочие параметры (<tt>Number of Attributes, Attributes</tt>) пока оставляем без изменений и нажимаем <tt>Okay</tt>. Перейдя на вкладку <tt>Data</tt> можно видеть, что в списке слоев данных появился новый элемент группы <tt>Shapes</tt> – полигон ''area_plg''.
На вкладке <tt>Modules</tt> двойным щелчком мыши запускаем модуль <tt>Shapes – Tools => Create New Shapes Layer</tt>. В диалоговом окне модуля задаем имя нового шейп-файла <tt>Name</tt> – ''area_plg'', а в поле <tt>Shape Type</tt> из выпадающего списка выбираем <tt>Polygon</tt>. Прочие параметры (<tt>Number of Attributes, Attributes</tt>) пока оставляем без изменений и нажимаем <tt>Okay</tt>. Перейдя на вкладку <tt>Data</tt> можно видеть, что в списке слоев данных появился новый элемент группы <tt>Shapes</tt> – полигон ''area_plg''.
Строка 13: Строка 20:
  |-valign="center"
  |-valign="center"
  |[[Файл:saga_vector_01.png|450px|thumb|center]]
  |[[Файл:saga_vector_01.png|450px|thumb|center]]
  |[[Файл:saga_vector_02.png|300px|thumb|center]]
  |[[Файл:saga_vector_02.png|250px|thumb|center]]
|}
|}


Строка 26: Строка 33:
Для начала редактирования вернитесь на вкладку <tt>Data</tt> и щелкнув по имени слоя ''area_plg'' правой кнопкой мыши из контекстного меню выберите пункт <tt>Edit => Add Shape</tt>.
Для начала редактирования вернитесь на вкладку <tt>Data</tt> и щелкнув по имени слоя ''area_plg'' правой кнопкой мыши из контекстного меню выберите пункт <tt>Edit => Add Shape</tt>.


[[Файл:saga_vector_05.png|center]]
[[Файл:saga_vector_05.png|400px|thumb|center]]


Воспользовавшись инструментами  [[Файл:saga_georef_zoom.png]] <tt>Zoom</tt> и  [[Файл:saga_georef_pan.png]] <tt>Pan</tt>, увеличьте и удобно расположите в окне участок топокарты размером, например, 5×5 квадратов. Определившись с фрагментом для векторизации, на панели инструментов выберите  [[Файл:saga_georef_action.png]] <tt>Action</tt>. Фиксируя узлы по углам (щелчок левой кнопкой мыши), нарисуйте соответствующий квадрат. Для остановки процесса редактирования полигона в последнем узле сделайте также щелчок правой кнопкой мыши.
Воспользовавшись инструментами  [[Файл:saga_georef_zoom.png]] <tt>Zoom</tt> и  [[Файл:saga_georef_pan.png]] <tt>Pan</tt>, увеличьте и удобно расположите в окне участок топокарты размером, например, 5×5 квадратов. Определившись с фрагментом для векторизации, на панели инструментов выберите  [[Файл:saga_georef_action.png]] <tt>Action</tt>. Фиксируя узлы по углам (щелчок левой кнопкой мыши), нарисуйте соответствующий квадрат. Для остановки процесса редактирования полигона в последнем узле сделайте также щелчок правой кнопкой мыши.


[[Файл:saga_vector_06.png|700px|thumb|center]]
[[Файл:saga_vector_06.png|400px|thumb|center]]


В месте правого щелчка появится контекстное меню, в котором нужно убрать галочку  рядом с <tt>Edit Selected Shape</tt>. Когда программа предложит сохранить изменения, согласитесь и нажмите <tt>Да</tt>. При этом внешний вид нарисованного полигона изменится - он станет непрозрачным.
В месте правого щелчка появится контекстное меню, в котором нужно убрать галочку  рядом с <tt>Edit Selected Shape</tt>. Когда программа предложит сохранить изменения, согласитесь и нажмите <tt>Да</tt>. При этом внешний вид нарисованного полигона изменится - он станет непрозрачным.
Строка 50: Строка 57:
После сохранения файла настроим параметры отображения слоя. Для начала щелчком инструмента [[Файл:saga_georef_action.png]] <tt>Action</tt> в любом месте за пределами полигона, снимем выделение элемента. В окне свойств объекта (справа) в блоке <tt>Display</tt> изменим параметр <tt>Fill Style</tt> на <tt>Transparent</tt> (это сделает полигон прозрачным внутри), а потом определим свойства границы <tt>Outline</tt>, установив параметры цвета <tt>Color – Red</tt> и толщины линии <tt>Size – 2</tt>. Для применения внесенных изменений нажимаем <tt>Apply</tt>.
После сохранения файла настроим параметры отображения слоя. Для начала щелчком инструмента [[Файл:saga_georef_action.png]] <tt>Action</tt> в любом месте за пределами полигона, снимем выделение элемента. В окне свойств объекта (справа) в блоке <tt>Display</tt> изменим параметр <tt>Fill Style</tt> на <tt>Transparent</tt> (это сделает полигон прозрачным внутри), а потом определим свойства границы <tt>Outline</tt>, установив параметры цвета <tt>Color – Red</tt> и толщины линии <tt>Size – 2</tt>. Для применения внесенных изменений нажимаем <tt>Apply</tt>.


[[Файл:saga_vector_11.png|200px|thumb|center]]
[[Файл:saga_vector_11.png|200px|thumb|center|последовательность шагов настройки параметров отображения]]


== Создание и редактирование линейного векторного слоя ==
=== Линии ===


На вкладке <tt>Modules</tt> двойным щелчком мыши запускаем модуль <tt>Shapes – Tools => Create New Shapes Layer</tt>. В диалоговом окне модуля задаем имя нового шейп-файла <tt>Name</tt> – ''relief_pln'', а в поле <tt>Shape Type</tt> из выпадающего списка выбираем <tt>Lines</tt>. Прочие параметры (<tt>Number of Attributes, Attributes</tt>) оставляем без изменений и нажимаем <tt>Okay</tt>. Перейдя на вкладку <tt>Data</tt> можно видеть, что в списке слоев данных появился новый элемент группы <tt>Shapes</tt> – линия ''relief_pln''.
На вкладке <tt>Modules</tt> двойным щелчком мыши запускаем модуль <tt>Shapes – Tools => Create New Shapes Layer</tt>. В диалоговом окне модуля задаем имя нового шейп-файла <tt>Name</tt> – ''relief_pln'', а в поле <tt>Shape Type</tt> из выпадающего списка выбираем <tt>Lines</tt>. Прочие параметры (<tt>Number of Attributes, Attributes</tt>) оставляем без изменений и нажимаем <tt>Okay</tt>. Перейдя на вкладку <tt>Data</tt> можно видеть, что в списке слоев данных появился новый элемент группы <tt>Shapes</tt> – линия ''relief_pln''.
Строка 59: Строка 66:
  |-valign="center"
  |-valign="center"
  |[[Файл:saga_vector_12.png|thumb|450px|center]]
  |[[Файл:saga_vector_12.png|thumb|450px|center]]
  |[[Файл:saga_vector_13.png|thumb|300px|center]]
  |[[Файл:saga_vector_13.png|thumb|250px|center]]
|}
|}


Строка 72: Строка 79:
Для начала редактирования слоя вернемся на вкладку <tt>Data</tt> и в контекстном меню слоя ''relief_pln'' выберем пункт <tt>Edit => Add Shape</tt>.
Для начала редактирования слоя вернемся на вкладку <tt>Data</tt> и в контекстном меню слоя ''relief_pln'' выберем пункт <tt>Edit => Add Shape</tt>.


[[Файл:saga_vector_15.png|center]]
[[Файл:saga_vector_15.png|400px|thumb|center]]
 
При помощи инструментов [[Файл:saga_georef_zoom.png]] <tt>Zoom</tt> и [[Файл:saga_georef_pan.png]] <tt>Pan</tt> увеличьте и удобно расположите в окне часть рабочего фрагмента топокарты. Определившись с начальной горизонталью, перейдите в режим [[Файл:saga_georef_action.png]] <tt>Action</tt> и фиксируя узлы в перегибах (левый щелчок мыши) отрисуйте соответствующую линию. Чтобы остановить процесс редактирования в последнем узле сделайте правый щелчок мышью. В месте правого щелчка появится контекстное меню, в котором нужно убрать галочку рядом с <tt>Edit Selected Shape</tt>. Когда программа предложит сохранить изменения, согласитесь и нажмите <tt>Да</tt>. Повторяя предыдущие действия, т.е. добавляя новый элемент для каждой изолинии, векторизируйте все горизонтали выбранного фрагмента (и основные, и дополнительные).
 
Процесс редактирования векторных слоев в SAGA упрощается возможностями:
 
* <u>параллельного использования инструментов</u>. Например, в процессе проведения линии может возникнуть необходимость подвинуть карту или увеличить/ уменьшить ее. Для этого не нужно останавливать редактирование – просто выберите необходимый инструмент ([[Файл:saga_georef_pan.png]] <tt>Pan</tt>, [[Файл:saga_georef_zoom.png]] <tt>Zoom</tt> или [[Файл:saga_georef_fullext.png]] <tt>Zoom To Full Extent</tt>). Воспользуйтесь им, чтобы, например, переместить карту, а затем снова нажмите [[Файл:saga_georef_action.png]] <tt>Action</tt> – курсор автоматически перейдет в режим редактирования в том самом месте, где вы вынуждены были прерваться;
 
* <u>повторного редактирования элементов</u>. В том случае, если вы хотите модифицировать фрагмент уже проведенной линии, выделите ее [[Файл:saga_georef_action.png]] <tt>Action</tt> - протяните курсор по линии, удерживая нажатой левую кнопку мыши, и она подсветится красным цветом. После этого из контекстного меню слоя выберите <tt>Edit => Edit Selected Shape</tt>.
 
[[Файл:saga_vector_16.png|400px|thumb|center]]
 
Вид выбранной линии изменится таким образом, что станут видимыми узловые точки. Для их редактирования воспользуйтесь [[Файл:saga_georef_action.png]] <tt>Action</tt>, который в зависимости от объекта наведения, может работать в режимах:
 
[[Файл:saga_vector_17.png|25px|left]] - выделение узла левым щелчком мыши, изменение его местоположения при движении мыши с нажатой левой кнопкой, удаление <tt>Delete</tt>'ом с клавиатуры;<br clear="both" />
[[Файл:saga_vector_18.png|25px|left]] - добавление узловых точек.<br clear="both" />
 
Для сохранения внесенных изменений из контекстного меню слоя выберите пункт <tt>Edit</tt> и снимите галочку с <tt>Edit Selected Shape</tt>;
 
* <u>добавления части объекта</u>. Иногда возникает необходимость создания так называемых составных объектов (multipart fetaures): например, когда горизонталь прерывается или выходит за границы векторизируемого участка и возвращается. В таком случае из пункта редактирования контекстного меню слоя следует выбрать <tt>Edit => Add Part</tt>.
 
<span style="color:red">'''NB'''</span> Элемент к которому добавляется часть, должен находиться в режиме редактирования.
 
[[Файл:saga_vector_19.png|400px|thumb|center]]
 
В результате будет создан объект, состоящий из нескольких фрагментов, но ГИС будет воспринимать его как единый элемент шейп-файла, представленный одной строкой атрибутивной таблицы.
 
* <u>удаления элементов</u>. Для этого выделите изолинию [[Файл:saga_georef_action.png]] <tt>Action</tt> и нажмите <tt>Delete</tt> с клавиатуры.


При помощи инструментов [[Файл:saga_georef_zoom.png]] <tt>Zoom</tt> и [[Файл:saga_georef_pan.png]] <tt>Pan</tt> увеличьте и удобно расположите в окне часть рабочего фрагмента топокарты. Определившись с начальной горизонталью, перейдите в режим [[Файл:saga_georef_action.png]] <tt>Action</tt> и фиксируя узлы в перегибах (левый щелчок мыши) отрисуйте соответствующую линию. Чтобы остановить процесс редактирования в последнем узле сделайте правый щелчок мышью. В месте правого щелчка появится контекстное меню, в котором нужно убрать галочку рядом с <tt>Edit Selected Shape</tt>. Когда программа предложит сохранить изменения, согласитесь и нажмите <tt>Да</tt>.
По окончании редактирования сохраните файл: из контекстного меню ''relief_pln'' выберите <tt>Save As…</tt> и укажите путь к рабочей папке проекта на диске.
 
=== Точки ===
 
На вкладке <tt>Modules</tt> двойным щелчком мыши запускаем модуль <tt>Shapes – Tools => Create New Shapes Layer</tt>. В диалоговом окне модуля задаем имя нового шейп-файла <tt>Name</tt> – ''relief_pnt'', а в поле <tt>Shape Type</tt> из выпадающего списка выбираем <tt>Point</tt>. Прочие параметры (<tt>Number of Attributes, Attributes</tt>) оставляем без изменений и нажимаем <tt>Okay</tt>. Перейдя на вкладку <tt>Data</tt> можно видеть, что в списке слоев данных появился новый элемент группы <tt>Shapes</tt> – точки ''relief_pnt''.


{|align="center"
{|align="center"
  |-valign="center"
  |-valign="center"
  |[[Файл:saga_vector_07.png]]
  |[[Файл:saga_vector_20.png|450px|thumb|center]]
  |[[Файл:saga_vector_08.png]]
|[[Файл:saga_vector_21.png|250px|thumb|center]]
|}
 
Двойным щелчком добавим новый слой на карту. Перейдя на вкладку <tt>Maps</tt> увидим, что карта <tt>M-37-121_utm</tt> содержит уже четыре элемента – растровый слой ''M-37-121_utm'', созданные ранее векторные слои ''area_plg'', ''relief_pln'' и новый точечный слой ''relief_pnt''.
 
{|align="center"
|-valign="center"
|[[Файл:saga_vector_03.png]]
|[[Файл:saga_vector_22.png]]
|}
 
Для начала редактирования слоя вернемся во вкладку <tt>Data</tt> и в контекстном меню слоя ''relief_pnt'' выберем пункт <tt>Edit => Add Shape</tt>.
 
[[Файл:saga_vector_23.png|400px|thumb|center]]
 
При помощи [[Файл:saga_georef_zoom.png]] <tt>Zoom</tt> и  [[Файл:saga_georef_pan.png]] <tt>Pan</tt> увеличьте и удобно расположите в окне часть рабочего фрагмента топокарты. Определившись с высотной отметкой, [[Файл:saga_georef_action.png]] <tt>Action</tt> поставьте точку.
 
<span style="color:red">'''NB'''</span> Если вы не хотите создавать составной объект (multipart feature), после постановки каждой точки необходимо отключать галочку рядом с <tt>Edit Selected Shape</tt>.
 
[[Файл:saga_vector_24.png|400px|thumb|center]]
 
Таким образом, для корректного представления всех высотных отметок нам необходимо каждый раз добавлять новый элемент. Когда программа предложит сохранить изменения, согласитесь и нажмите <tt>Да</tt>. По окончании редактирования сохраните файл: из контекстного меню ''relief_pnt'' выберите <tt>Save As…</tt> и укажите путь к рабочей папке проекта на диске.
 
== Заполнение атрибутивной таблицы ==
 
Чтобы открыть атрибутивную таблицу слоя, выберите из его контекстного меню пункт <tt>Attributes => Show</tt>.
 
{|align="center"
|-valign="center"
  |[[Файл:saga_vector_25.png|thumb|300px]]
|[[Файл:saga_vector_26.png]]
|}
 
Внешний вид панели инструментов изменится в соответствии с основными задачами редактирования атрибутивных таблиц:
 
[[Файл:saga_vector_add_field.png|left]] - добавить поле;<br clear="both" />
[[Файл:saga_vector_delete_fields.png|left]] - удалить поле/я;<br clear="both" />
[[Файл:saga_vector_add_record.png|left]] - добавить запись;<br clear="both" />
[[Файл:saga_vector_insert_record.png|left]] - вставить запись;<br clear="both" />
[[Файл:saga_vector_delete_selected_records.png|left]] - удалить выбранные записи;<br clear="both" />
[[Файл:saga_vector_delete_all_records.png|left]] - удалить все записи.<br clear="both" />
 
Первичная структура таблицы задавалась на этапе создания шейп-файла, поэтому сейчас она содержит лишь два поля по умолчанию: служебное поле ''ID'' и текстовое ''NAME''. Поскольку мы не планируем вносить информацию в поле ''NAME'', его лучше удалить инструментом [[Файл:saga_vector_delete_fields.png]] <tt>Delete Fields</tt>. В диалоговом окне <tt>Delete Fields</tt> отмечаем поле, которое хотим удалить (''NAME'') и нажимаем <tt>Okay</tt>.
 
[[Файл:saga_vector_27.png|center]]
 
Для добавления нового поля используем [[Файл:saga_vector_add_field.png]] <tt>Add Field</tt>. В появившемся диалоговом окне прописываем следующие свойства поля: название <tt>Name</tt> – ''ABS_HEIGHT'', тип переменной <tt>Field Type – 2 byte integer</tt> (поскольку потенциально на карте могут встретится значения высоты горизонталей больше 255 м), прочие параметры диалога – <tt>Insert Position</tt> (поле относительно которого размещается новая колонка) и <tt>Insert Method – after</tt> (ее местоположение после/ до определенного поля) оставляем без изменений и нажимаем <tt>Okay</tt>.
 
[[Файл:saga_vector_28.png|center]]
 
В результате в атрибутивной таблице появится новое поле, в которое мы занесем значения абсолютной высоты для векторизированных горизонталей.
Для удобства работы расположим рядом в рабочем окне карту и атрибутивную таблицу – это можно сделать через меню <tt>Window => Tile Horizontally / Tile Vertically</tt>. В результате при выделении строки таблицы мы одновременно будем видеть соответствующую горизонталь, что облегчит процесс ввода значений.
 
{|align="center"
|-valign="center"
|[[Файл:saga_vector_29.png|thumb|300px]]
|[[Файл:saga_vector_30.png|thumb|400px]]
|}
|}


Повторяя предыдущие действия, т.е. добавляя новый элемент для каждой изолинии, векторизируйте все горизонтали выбранного фрагмента (и основные, и дополнительные). Обратите внимание, что процесс редактирования векторных слоев в SAGA упрощается следующими возможностями:
Чтобы добавить к атрибутивной таблице информацию про тип изолиний, снова воспользуемся [[Файл:saga_vector_add_field.png]] <tt>Add Field</tt>. В появившемся диалоге введем следующие значения: название <tt>Name</tt> – ''LINE_TYPE'', тип переменной <tt>Field Type – 1 byte integer</tt> (будем вводить простые числовые коды), прочие параметры диалога – <tt>Insert Position</tt> (поле относительно которого размещается новая колонка) и <tt>Insert Method – after</tt> (ее местоположение после/ до определенного поля) оставляем без изменений и нажимаем <tt>Okay</tt>. Теперь в новое поле ''LINE_TYPE'' введем значения-коды, описывающие тип горизонтали – 0 (вспомогательная), 1 (основная), 2 (утолщенная). По окончании, атрибутивная таблица будет иметь примерно следующий вид:
 
[[Файл:saga_vector_31.png|center]]
 
Повторяя ту же последовательность шагов, дополним атрибутивную таблицу векторного точечного слоя. Для введения отметок значений абсолютной высоты создадим поле ''ABS_HEIGHT'' типа <tt>4 byte floating point</tt> (поскольку для точек отметки абсолютных высот представлены в виде десятичных дробей).
 
<span style="color:red">'''NB'''</span> Заполняя поле, в качестве знака-разделителя используйте <span style="color:red">'''.'''</span> «точку», а не ''',''' «<s>запятую</s>».
 
Для описания типа высотной отметки создадим поле ''POINT_TYPE'' типа <tt>1 byte integer</tt>, присваивая код 0 точкам местности, а 1 – пунктам государственной геодезической сети.
 
== Расчет пространственных характеристик объектов ==
 
Как и большинство современных ГИС SAGA дает возможность автоматически рассчитывать пространственные характеристики для объектов векторных слоев, находящихся в спроецированной СК. В данном случае это ПСК UTM WGS84, поэтому результирующие величины будут представлены в единицах измерения используемой проекции, т.е. м и м<sup>2</sup>.
 
Для расчета пространственных характеристик полигонального слоя выберите модуль <tt>Shapes – Polygons => Polygons Properties</tt><ref>Аналогичным образом пространственные характеристики могут быть рассчитаны и для полилинейного шейп-файла с помощью модуля <tt>Shapes – Lines => Lines Properties</tt> (длина линий, количество узлов и сегментов между ними). Геометрические характеристики точечного слоя не рассчитываются, но для добавления координат точек можно воспользоваться модулем <tt>Shapes – Points => Add coordinates to points</tt>.</ref>. В диалоговом окне в качестве обрабатываемого слоя укажите ''area_plg''.
Строку <tt><Polygons with Property Attributes</tt> можно оставить без изменений, чтобы сразу добавить результаты в атрибутивную таблицу слоя.
 
[[Файл:saga_vector_36.png|700px|thumb|center]]
 
После появления сообщения <span style="color:green">''Module execution succeeded''</span>, откроем атрибутивную таблицу слоя, в которой появятся два новых поля:
 
[[Файл:saga_vector_37.png|center]]
 
Зная, что линии километровой сетки на карте проведены через каждые 2 000 м, а размер нашего полигона задавался участком 5×5 квадратов, несложно проверить результат. При одной стороне полигона в 10 000 м (10 км) его периметр будет 40 000 м (40 км), а площадь – 100 000 000 м<sup>2</sup> (100 км<sup>2</sup>). Как видим, рассчитанные по векторному слою значения близки к приведенным. Незначительные расхождения объясняются тем, что границы территории по карте проводились «на глаз», а не фиксировались по точкам с четко определенными координатами.
 
<references/>
 
== Настройка параметров отображения слоев в соответствии с атрибутивными данными ==


* '''параллельного использования нескольких инструментов'''. Например, в процессе проведения линии может возникнуть необходимость подвинуть карту или увеличить/ уменьшить ее. Для этого не нужно останавливать редактирование – просто выберите необходимый инструмент ([[Файл:saga_georef_pan.png]] <tt>Pan</tt>, [[Файл:saga_georef_zoom.png]] <tt>Zoom</tt> или [[Файл:saga_georef_fullext.png]] <tt>Zoom To Full Extent</tt>). Воспользуйтесь им, чтобы, например, переместить карту, а затем снова нажмите [[Файл:saga_georef_action.png]] <tt>Action</tt> – курсор автоматически перейдет в режим редактирования в том самом месте, где вы вынуждены были прерваться;
Для слоя изолиний на вкладке <tt>Object Properties</tt> (справа), определившись с видом линии (<tt>Line Style</tt>), типом (<tt>Type</tt>) и цветом (<tt>Сolor</tt>), воспользуемся дополнительными возможностями визуализации. В пункте <tt>Size</tt> выберем атрибут, которым будет определяться размер символа (толщина линий) – <tt>Attribute: LINE_TYPE:</tt> количественное значение в данном случае будет связано с «важностью» горизонтали. Соответственно, установка параметров <tt>Size Range: Minumum/ Maximum</tt> в диапазоне <tt>0-3</tt>, будет изменять толщину линии пропорционально ее типу (самые тонкие для промежуточных, а жирные – для утолщенных горизонталей).


* '''повторного редактирования элементов'''. В том случае, если вы хотите модифицировать фрагмент уже проведенной линии, выделите ее с помощью [[Файл:saga_georef_action.png]] <tt>Action</tt> - протяните курсор по линии, удерживая нажатой левую кнопку мыши, и она подсветится красным цветом. После этого из контекстного меню слоя выберите <tt>Edit => Edit Selected Shape</tt>.
Пункт <tt>Labels</tt> добавляет подписи к объектам на карте. Выберем поле, на основании которого будут делаться подписи <tt>Attribute:</tt> ''ABS_HEIGHT''. Параметры шрифта подписей (тип, размер, цвет) определяются пунктом <tt>Font</tt>. Чтобы все внесенные изменения вступили в силу, не забудьте нажать <tt>Apply</tt>.


[[Файл:saga_vector_16.png|center]]
[[Файл:saga_vector_32.png|200px|thumb|center|последовательность шагов настройки параметров отображения]]


Вид выбранной линии сразу изменится таким образом, что сразу станут видимыми все узловые точки. Для их редактирования воспользуйтесь инструментом [[Файл:saga_georef_action.png]] <tt>Action</tt> – в зависимости от объекта, на который он наведен, курсор может работать в таких режимах:
Настроим параметры отображения точечного слоя. Чтобы разные типы точек отображались разными цветами, в пункте <tt>Colors</tt> из выпадающего списка <tt>Type</tt> выберите <tt>Lookup Table</tt>. Далее в параметрах <tt>Lookup Table</tt> сначала установите <tt>Attribute:</tt> ''POINT_TYPE'', а затем перейдите в саму <tt>Table</tt> и установите следующие параметры:


[[Файл:saga_vector_17.png|25px|left]] - выделение узла левым щелчком мыши, изменение его местоположения при движении мыши с нажатой левой кнопкой, удаление <tt>Delete</tt>'ом с клавиатуры;
[[Файл:saga_vector_33.png|400px|thumb|center]]
[[Файл:saga_vector_18.png|25px|left]] - добавление узловых точек.


Для сохранения внесенных изменений из контекстного меню слоя выберите пункт <tt>Edit</tt> и снимите галочку рядом с <tt>Edit Selected Shape</tt>;
Далее задайте параметры отображения точечного слоя, например, так:


* '''добавления части объекта'''. Иногда возникает необходимость создания так называемых составных объектов (multipart fetaures): например, когда горизонталь прерывается или выходит за границы векторизируемого участка и возвращается. В таком случае из пункта редактирования контекстного меню слоя следует выбрать <tt>Edit => Add Part</tt>.
[[Файл:saga_vector_34.png|200px|thumb|center|последовательность шагов настройки параметров отображения]]
<span style="color:red">'''NB'''</span> Элемент к которому добавляется часть, должен находиться в режиме редактирования.


[[Файл:saga_vector_19.png|center]]
После применения всех настроек и отключения слоя растровой подложки, карта будет выглядеть следующим образом:


в результате будет создан объект, состоящий из нескольких фрагментов, но ГИС будет воспринимать его как единый элемент шейп-файла, представленный одной строкой атрибутивной таблицы.
[[Файл:saga_vector_35.png|500px|thumb|center]]


* '''удаления элементов'''. Для этого выделите изолинию с помощью [[Файл:saga_georef_action.png]] <tt>Action</tt> и нажмите <tt>Delete</tt> с клавиатуры.
== Ссылки по теме ==
Больше про работу с SAGA:<br/>
[http://volaya.es/pdf/SagaManual.pdf Olaya, V. A gentle introduction to SAGA GIS. 2004.]<br/>
[http://sourceforge.net/projects/saga-gis/files/SAGA%20-%20Documentation/SAGA%202%20User%20Guide/ Cimmery, V. User Guide for SAGA. Vol. 1,2. 2010]


По окончании редактирования сохраните файл: из контекстного меню ''relief_pln'' выберите <tt>Save As…</tt> и укажите путь к рабочей папке проекта на диске.
Векторизация в другом ПО ГИС:<br/>
[http://gis-lab.info/qa/qgis-vector.html Создание и редактирование векторных слоев средствами QGIS]<br/>
[http://gis-lab.info/docs/grass/tutorial60/11r.html Векторизация в GRASS (п. 11.6)]<br/>
[http://gis-lab.info/docs/giscourse/19-vectorwork.html Работа с векторными данными в ArcGIS]<br/>

Текущая версия от 07:43, 5 мая 2013

Эта страница является черновиком статьи.


Описание инструментария SAGA для работы с шейп-файлами на примере векторизации фрагмента топографической карты

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

В качестве основы для векторизации в данной статье будет использован фрагмент листа топографический карты М-37-121 в ПСК UTM WGS 84, процедура привязки которого была рассмотрена в предыдущей статье.

NB Обратите внимание, что в создаваемые векторные слои проекция растровой подложки, на основе которой они создаются, закладывается по умолчанию, но не присваивается автоматически. Чтобы дополнить файл информацией о проекции воспользуйтесь модулем Projection – Proj.4 => Set Coordinate Reference System, работа которого рассматривалась ранее.

Создание и редактирование векторных данных

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

Полигоны

На вкладке Modules двойным щелчком мыши запускаем модуль Shapes – Tools => Create New Shapes Layer. В диалоговом окне модуля задаем имя нового шейп-файла Namearea_plg, а в поле Shape Type из выпадающего списка выбираем Polygon. Прочие параметры (Number of Attributes, Attributes) пока оставляем без изменений и нажимаем Okay. Перейдя на вкладку Data можно видеть, что в списке слоев данных появился новый элемент группы Shapes – полигон area_plg.

Saga vector 01.png
Saga vector 02.png

Пока что этот слой не содержит ни одного элемента и прежде чем приступить к редактированию, его нужно добавить на карту. Для этого двойным щелчком по имени файла в списке слоев запустим диалог и выберем карту, в которую хотим добавить данные. Если все сделано верно, то при переходе на вкладку Maps вы увидите, что карта M-37-121_utm содержит два элемента – растровый слой M-37-121_utm (подложка по которой будет производиться векторизация) и векторный полигональный слой area_plg.

Saga vector 03.png Saga vector 04.png

Для начала редактирования вернитесь на вкладку Data и щелкнув по имени слоя area_plg правой кнопкой мыши из контекстного меню выберите пункт Edit => Add Shape.

Saga vector 05.png

Воспользовавшись инструментами Saga georef zoom.png Zoom и Saga georef pan.png Pan, увеличьте и удобно расположите в окне участок топокарты размером, например, 5×5 квадратов. Определившись с фрагментом для векторизации, на панели инструментов выберите Saga georef action.png Action. Фиксируя узлы по углам (щелчок левой кнопкой мыши), нарисуйте соответствующий квадрат. Для остановки процесса редактирования полигона в последнем узле сделайте также щелчок правой кнопкой мыши.

Saga vector 06.png

В месте правого щелчка появится контекстное меню, в котором нужно убрать галочку рядом с Edit Selected Shape. Когда программа предложит сохранить изменения, согласитесь и нажмите Да. При этом внешний вид нарисованного полигона изменится - он станет непрозрачным.

Saga vector 07.png Saga vector 08.png

Сохраните созданный файл: из контекстного меню area_plg выберите Save As… и укажите путь к папке на диске. Обратите внимание, что созданный векторный файл по умолчанию сохраняется в формате ESRI Shape Files с расширением *.shp.

Saga vector 09.png
Saga vector 10.png

После сохранения файла настроим параметры отображения слоя. Для начала щелчком инструмента Saga georef action.png Action в любом месте за пределами полигона, снимем выделение элемента. В окне свойств объекта (справа) в блоке Display изменим параметр Fill Style на Transparent (это сделает полигон прозрачным внутри), а потом определим свойства границы Outline, установив параметры цвета Color – Red и толщины линии Size – 2. Для применения внесенных изменений нажимаем Apply.

последовательность шагов настройки параметров отображения

Линии

На вкладке Modules двойным щелчком мыши запускаем модуль Shapes – Tools => Create New Shapes Layer. В диалоговом окне модуля задаем имя нового шейп-файла Namerelief_pln, а в поле Shape Type из выпадающего списка выбираем Lines. Прочие параметры (Number of Attributes, Attributes) оставляем без изменений и нажимаем Okay. Перейдя на вкладку Data можно видеть, что в списке слоев данных появился новый элемент группы Shapes – линия relief_pln.

Saga vector 12.png
Saga vector 13.png

Двойным щелчком добавим новый слой на карту. Перейдя на вкладку Maps убедимся, что карта M-37-121_utm содержит уже три элемента – растровый слой M-37-121_utm, созданный ранее векторный полигональный слой area_plg и новый линейный слой relief_pln.

Saga vector 03.png Saga vector 14.png

Для начала редактирования слоя вернемся на вкладку Data и в контекстном меню слоя relief_pln выберем пункт Edit => Add Shape.

Saga vector 15.png

При помощи инструментов Saga georef zoom.png Zoom и Saga georef pan.png Pan увеличьте и удобно расположите в окне часть рабочего фрагмента топокарты. Определившись с начальной горизонталью, перейдите в режим Saga georef action.png Action и фиксируя узлы в перегибах (левый щелчок мыши) отрисуйте соответствующую линию. Чтобы остановить процесс редактирования в последнем узле сделайте правый щелчок мышью. В месте правого щелчка появится контекстное меню, в котором нужно убрать галочку рядом с Edit Selected Shape. Когда программа предложит сохранить изменения, согласитесь и нажмите Да. Повторяя предыдущие действия, т.е. добавляя новый элемент для каждой изолинии, векторизируйте все горизонтали выбранного фрагмента (и основные, и дополнительные).

Процесс редактирования векторных слоев в SAGA упрощается возможностями:

  • параллельного использования инструментов. Например, в процессе проведения линии может возникнуть необходимость подвинуть карту или увеличить/ уменьшить ее. Для этого не нужно останавливать редактирование – просто выберите необходимый инструмент (Saga georef pan.png Pan, Saga georef zoom.png Zoom или Saga georef fullext.png Zoom To Full Extent). Воспользуйтесь им, чтобы, например, переместить карту, а затем снова нажмите Saga georef action.png Action – курсор автоматически перейдет в режим редактирования в том самом месте, где вы вынуждены были прерваться;
  • повторного редактирования элементов. В том случае, если вы хотите модифицировать фрагмент уже проведенной линии, выделите ее Saga georef action.png Action - протяните курсор по линии, удерживая нажатой левую кнопку мыши, и она подсветится красным цветом. После этого из контекстного меню слоя выберите Edit => Edit Selected Shape.
Saga vector 16.png

Вид выбранной линии изменится таким образом, что станут видимыми узловые точки. Для их редактирования воспользуйтесь Saga georef action.png Action, который в зависимости от объекта наведения, может работать в режимах:

Saga vector 17.png

- выделение узла левым щелчком мыши, изменение его местоположения при движении мыши с нажатой левой кнопкой, удаление Delete'ом с клавиатуры;

Saga vector 18.png

- добавление узловых точек.

Для сохранения внесенных изменений из контекстного меню слоя выберите пункт Edit и снимите галочку с Edit Selected Shape;

  • добавления части объекта. Иногда возникает необходимость создания так называемых составных объектов (multipart fetaures): например, когда горизонталь прерывается или выходит за границы векторизируемого участка и возвращается. В таком случае из пункта редактирования контекстного меню слоя следует выбрать Edit => Add Part.

NB Элемент к которому добавляется часть, должен находиться в режиме редактирования.

Saga vector 19.png

В результате будет создан объект, состоящий из нескольких фрагментов, но ГИС будет воспринимать его как единый элемент шейп-файла, представленный одной строкой атрибутивной таблицы.

  • удаления элементов. Для этого выделите изолинию Saga georef action.png Action и нажмите Delete с клавиатуры.

По окончании редактирования сохраните файл: из контекстного меню relief_pln выберите Save As… и укажите путь к рабочей папке проекта на диске.

Точки

На вкладке Modules двойным щелчком мыши запускаем модуль Shapes – Tools => Create New Shapes Layer. В диалоговом окне модуля задаем имя нового шейп-файла Namerelief_pnt, а в поле Shape Type из выпадающего списка выбираем Point. Прочие параметры (Number of Attributes, Attributes) оставляем без изменений и нажимаем Okay. Перейдя на вкладку Data можно видеть, что в списке слоев данных появился новый элемент группы Shapes – точки relief_pnt.

Saga vector 20.png
Saga vector 21.png

Двойным щелчком добавим новый слой на карту. Перейдя на вкладку Maps увидим, что карта M-37-121_utm содержит уже четыре элемента – растровый слой M-37-121_utm, созданные ранее векторные слои area_plg, relief_pln и новый точечный слой relief_pnt.

Saga vector 03.png Saga vector 22.png

Для начала редактирования слоя вернемся во вкладку Data и в контекстном меню слоя relief_pnt выберем пункт Edit => Add Shape.

Saga vector 23.png

При помощи Saga georef zoom.png Zoom и Saga georef pan.png Pan увеличьте и удобно расположите в окне часть рабочего фрагмента топокарты. Определившись с высотной отметкой, Saga georef action.png Action поставьте точку.

NB Если вы не хотите создавать составной объект (multipart feature), после постановки каждой точки необходимо отключать галочку рядом с Edit Selected Shape.

Saga vector 24.png

Таким образом, для корректного представления всех высотных отметок нам необходимо каждый раз добавлять новый элемент. Когда программа предложит сохранить изменения, согласитесь и нажмите Да. По окончании редактирования сохраните файл: из контекстного меню relief_pnt выберите Save As… и укажите путь к рабочей папке проекта на диске.

Заполнение атрибутивной таблицы

Чтобы открыть атрибутивную таблицу слоя, выберите из его контекстного меню пункт Attributes => Show.

Saga vector 25.png
Saga vector 26.png

Внешний вид панели инструментов изменится в соответствии с основными задачами редактирования атрибутивных таблиц:

Saga vector add field.png

- добавить поле;

Saga vector delete fields.png

- удалить поле/я;

Saga vector add record.png

- добавить запись;

Saga vector insert record.png

- вставить запись;

Saga vector delete selected records.png

- удалить выбранные записи;

Saga vector delete all records.png

- удалить все записи.

Первичная структура таблицы задавалась на этапе создания шейп-файла, поэтому сейчас она содержит лишь два поля по умолчанию: служебное поле ID и текстовое NAME. Поскольку мы не планируем вносить информацию в поле NAME, его лучше удалить инструментом Saga vector delete fields.png Delete Fields. В диалоговом окне Delete Fields отмечаем поле, которое хотим удалить (NAME) и нажимаем Okay.

Saga vector 27.png

Для добавления нового поля используем Saga vector add field.png Add Field. В появившемся диалоговом окне прописываем следующие свойства поля: название NameABS_HEIGHT, тип переменной Field Type – 2 byte integer (поскольку потенциально на карте могут встретится значения высоты горизонталей больше 255 м), прочие параметры диалога – Insert Position (поле относительно которого размещается новая колонка) и Insert Method – after (ее местоположение после/ до определенного поля) оставляем без изменений и нажимаем Okay.

Saga vector 28.png

В результате в атрибутивной таблице появится новое поле, в которое мы занесем значения абсолютной высоты для векторизированных горизонталей. Для удобства работы расположим рядом в рабочем окне карту и атрибутивную таблицу – это можно сделать через меню Window => Tile Horizontally / Tile Vertically. В результате при выделении строки таблицы мы одновременно будем видеть соответствующую горизонталь, что облегчит процесс ввода значений.

Saga vector 29.png
Saga vector 30.png

Чтобы добавить к атрибутивной таблице информацию про тип изолиний, снова воспользуемся Saga vector add field.png Add Field. В появившемся диалоге введем следующие значения: название NameLINE_TYPE, тип переменной Field Type – 1 byte integer (будем вводить простые числовые коды), прочие параметры диалога – Insert Position (поле относительно которого размещается новая колонка) и Insert Method – after (ее местоположение после/ до определенного поля) оставляем без изменений и нажимаем Okay. Теперь в новое поле LINE_TYPE введем значения-коды, описывающие тип горизонтали – 0 (вспомогательная), 1 (основная), 2 (утолщенная). По окончании, атрибутивная таблица будет иметь примерно следующий вид:

Saga vector 31.png

Повторяя ту же последовательность шагов, дополним атрибутивную таблицу векторного точечного слоя. Для введения отметок значений абсолютной высоты создадим поле ABS_HEIGHT типа 4 byte floating point (поскольку для точек отметки абсолютных высот представлены в виде десятичных дробей).

NB Заполняя поле, в качестве знака-разделителя используйте . «точку», а не , «запятую».

Для описания типа высотной отметки создадим поле POINT_TYPE типа 1 byte integer, присваивая код 0 точкам местности, а 1 – пунктам государственной геодезической сети.

Расчет пространственных характеристик объектов

Как и большинство современных ГИС SAGA дает возможность автоматически рассчитывать пространственные характеристики для объектов векторных слоев, находящихся в спроецированной СК. В данном случае это ПСК UTM WGS84, поэтому результирующие величины будут представлены в единицах измерения используемой проекции, т.е. м и м2.

Для расчета пространственных характеристик полигонального слоя выберите модуль Shapes – Polygons => Polygons Properties[1]. В диалоговом окне в качестве обрабатываемого слоя укажите area_plg. Строку <Polygons with Property Attributes можно оставить без изменений, чтобы сразу добавить результаты в атрибутивную таблицу слоя.

Saga vector 36.png

После появления сообщения Module execution succeeded, откроем атрибутивную таблицу слоя, в которой появятся два новых поля:

Saga vector 37.png

Зная, что линии километровой сетки на карте проведены через каждые 2 000 м, а размер нашего полигона задавался участком 5×5 квадратов, несложно проверить результат. При одной стороне полигона в 10 000 м (10 км) его периметр будет 40 000 м (40 км), а площадь – 100 000 000 м2 (100 км2). Как видим, рассчитанные по векторному слою значения близки к приведенным. Незначительные расхождения объясняются тем, что границы территории по карте проводились «на глаз», а не фиксировались по точкам с четко определенными координатами.

  1. Аналогичным образом пространственные характеристики могут быть рассчитаны и для полилинейного шейп-файла с помощью модуля Shapes – Lines => Lines Properties (длина линий, количество узлов и сегментов между ними). Геометрические характеристики точечного слоя не рассчитываются, но для добавления координат точек можно воспользоваться модулем Shapes – Points => Add coordinates to points.

Настройка параметров отображения слоев в соответствии с атрибутивными данными

Для слоя изолиний на вкладке Object Properties (справа), определившись с видом линии (Line Style), типом (Type) и цветом (Сolor), воспользуемся дополнительными возможностями визуализации. В пункте Size выберем атрибут, которым будет определяться размер символа (толщина линий) – Attribute: LINE_TYPE: количественное значение в данном случае будет связано с «важностью» горизонтали. Соответственно, установка параметров Size Range: Minumum/ Maximum в диапазоне 0-3, будет изменять толщину линии пропорционально ее типу (самые тонкие – для промежуточных, а жирные – для утолщенных горизонталей).

Пункт Labels добавляет подписи к объектам на карте. Выберем поле, на основании которого будут делаться подписи Attribute: ABS_HEIGHT. Параметры шрифта подписей (тип, размер, цвет) определяются пунктом Font. Чтобы все внесенные изменения вступили в силу, не забудьте нажать Apply.

последовательность шагов настройки параметров отображения

Настроим параметры отображения точечного слоя. Чтобы разные типы точек отображались разными цветами, в пункте Colors из выпадающего списка Type выберите Lookup Table. Далее в параметрах Lookup Table сначала установите Attribute: POINT_TYPE, а затем перейдите в саму Table и установите следующие параметры:

Saga vector 33.png

Далее задайте параметры отображения точечного слоя, например, так:

последовательность шагов настройки параметров отображения

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

Saga vector 35.png

Ссылки по теме

Больше про работу с SAGA:
Olaya, V. A gentle introduction to SAGA GIS. 2004.
Cimmery, V. User Guide for SAGA. Vol. 1,2. 2010

Векторизация в другом ПО ГИС:
Создание и редактирование векторных слоев средствами QGIS
Векторизация в GRASS (п. 11.6)
Работа с векторными данными в ArcGIS