Работа с векторными данными в ГИС SAGA: различия между версиями
Darsvid (обсуждение | вклад) |
Darsvid (обсуждение | вклад) |
||
Строка 180: | Строка 180: | ||
== Расчет пространственных характеристик объектов == | == Расчет пространственных характеристик объектов == | ||
Как и большинство современных ГИС SAGA дает возможность автоматически рассчитывать пространственные характеристики для объектов векторных слоев при условии, что они находятся в спроецированной СК. | |||
В нашем случае проекция для создаваемых векторных слоев не прописывалась индивидуально, но мы знаем, что создавались они на основе растрового слоя в ПСК UTM, т.е. в них по умолчанию заложена проекция растровой подложки и результаты расчетов будут представлены в единицах измерения используемой ПСК (м и м<sup>2</sup>). Однако не следует забывать, что если мы планируем работать с этими данными в дальнейшем, в другом ПО ГИС, информацию об используемой СК следует присвоить с помощью модуля <tt>Projection – Proj.4 => Set Coordinate Reference System</tt>. О том, как это сделать, рассказано в [http://gis-lab.info/qa/georef-saga.html предыдущей статье]. | |||
Для расчета пространственных характеристик полигонального слоя выберите модуль <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|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/> | |||
== Настройка параметров отображения слоев в соответствии с атрибутивными данными == |
Версия от 21:25, 27 апреля 2013
Описание инструментария SAGA для работы с шейп-файлами на примере векторизации фрагмента топографической карты
Несмотря на аналитическое назначение и направленность на работу с растровыми данными, SAGA содержит необходимый набор инструментов для создания, редактирования и базового анализа шейп-файлов. В качестве подложки для векторизации в данной статье будет использован лист топографический карты М-37-121 в ПСК UTM WGS 84, процедура привязки которого была рассмотрена ранее.
Создание и редактирование полигонального векторного слоя
На вкладке Modules двойным щелчком мыши запускаем модуль Shapes – Tools => Create New Shapes Layer. В диалоговом окне модуля задаем имя нового шейп-файла Name – area_plg, а в поле Shape Type из выпадающего списка выбираем Polygon. Прочие параметры (Number of Attributes, Attributes) пока оставляем без изменений и нажимаем Okay. Перейдя на вкладку Data можно видеть, что в списке слоев данных появился новый элемент группы Shapes – полигон area_plg.
Пока что этот слой не содержит ни одного элемента и прежде чем приступить к редактированию, его нужно добавить на карту. Для этого двойным щелчком по имени файла в списке слоев запустим диалог и выберем карту, в которую хотим добавить данные. Если все сделано верно, то при переходе на вкладку Maps вы увидите, что карта M-37-121_utm содержит два элемента – растровый слой M-37-121_utm (подложка по которой будет производиться векторизация) и векторный полигональный слой area_plg.
![]() |
![]() |
Для начала редактирования вернитесь на вкладку Data и щелкнув по имени слоя area_plg правой кнопкой мыши из контекстного меню выберите пункт Edit => Add Shape.
Воспользовавшись инструментами Zoom и
Pan, увеличьте и удобно расположите в окне участок топокарты размером, например, 5×5 квадратов. Определившись с фрагментом для векторизации, на панели инструментов выберите
Action. Фиксируя узлы по углам (щелчок левой кнопкой мыши), нарисуйте соответствующий квадрат. Для остановки процесса редактирования полигона в последнем узле сделайте также щелчок правой кнопкой мыши.
В месте правого щелчка появится контекстное меню, в котором нужно убрать галочку рядом с Edit Selected Shape. Когда программа предложит сохранить изменения, согласитесь и нажмите Да. При этом внешний вид нарисованного полигона изменится - он станет непрозрачным.
![]() |
![]() |
Сохраните созданный файл: из контекстного меню area_plg выберите Save As… и укажите путь к папке на диске. Обратите внимание, что созданный векторный файл по умолчанию сохраняется в формате ESRI Shape Files с расширением *.shp.
После сохранения файла настроим параметры отображения слоя. Для начала щелчком инструмента Action в любом месте за пределами полигона, снимем выделение элемента. В окне свойств объекта (справа) в блоке Display изменим параметр Fill Style на Transparent (это сделает полигон прозрачным внутри), а потом определим свойства границы Outline, установив параметры цвета Color – Red и толщины линии Size – 2. Для применения внесенных изменений нажимаем Apply.
Создание и редактирование линейного векторного слоя
На вкладке Modules двойным щелчком мыши запускаем модуль Shapes – Tools => Create New Shapes Layer. В диалоговом окне модуля задаем имя нового шейп-файла Name – relief_pln, а в поле Shape Type из выпадающего списка выбираем Lines. Прочие параметры (Number of Attributes, Attributes) оставляем без изменений и нажимаем Okay. Перейдя на вкладку Data можно видеть, что в списке слоев данных появился новый элемент группы Shapes – линия relief_pln.
Двойным щелчком добавим новый слой на карту. Перейдя на вкладку Maps убедимся, что карта M-37-121_utm содержит уже три элемента – растровый слой M-37-121_utm, созданный ранее векторный полигональный слой area_plg и новый линейный слой relief_pln.
![]() |
![]() |
Для начала редактирования слоя вернемся на вкладку Data и в контекстном меню слоя relief_pln выберем пункт Edit => Add Shape.
При помощи инструментов Zoom и
Pan увеличьте и удобно расположите в окне часть рабочего фрагмента топокарты. Определившись с начальной горизонталью, перейдите в режим
Action и фиксируя узлы в перегибах (левый щелчок мыши) отрисуйте соответствующую линию. Чтобы остановить процесс редактирования в последнем узле сделайте правый щелчок мышью. В месте правого щелчка появится контекстное меню, в котором нужно убрать галочку рядом с Edit Selected Shape. Когда программа предложит сохранить изменения, согласитесь и нажмите Да. Повторяя предыдущие действия, т.е. добавляя новый элемент для каждой изолинии, векторизируйте все горизонтали выбранного фрагмента (и основные, и дополнительные).
Процесс редактирования векторных слоев в SAGA упрощается возможностями:
- параллельного использования инструментов. Например, в процессе проведения линии может возникнуть необходимость подвинуть карту или увеличить/ уменьшить ее. Для этого не нужно останавливать редактирование – просто выберите необходимый инструмент (
Pan,
Zoom или
Zoom To Full Extent). Воспользуйтесь им, чтобы, например, переместить карту, а затем снова нажмите
Action – курсор автоматически перейдет в режим редактирования в том самом месте, где вы вынуждены были прерваться;
- повторного редактирования элементов. В том случае, если вы хотите модифицировать фрагмент уже проведенной линии, выделите ее
Action - протяните курсор по линии, удерживая нажатой левую кнопку мыши, и она подсветится красным цветом. После этого из контекстного меню слоя выберите Edit => Edit Selected Shape.
Вид выбранной линии изменится таким образом, что станут видимыми узловые точки. Для их редактирования воспользуйтесь Action, который в зависимости от объекта наведения, может работать в режимах:
- выделение узла левым щелчком мыши, изменение его местоположения при движении мыши с нажатой левой кнопкой, удаление Delete'ом с клавиатуры;
- добавление узловых точек.
Для сохранения внесенных изменений из контекстного меню слоя выберите пункт Edit и снимите галочку с Edit Selected Shape;
- добавления части объекта. Иногда возникает необходимость создания так называемых составных объектов (multipart fetaures): например, когда горизонталь прерывается или выходит за границы векторизируемого участка и возвращается. В таком случае из пункта редактирования контекстного меню слоя следует выбрать Edit => Add Part.
NB Элемент к которому добавляется часть, должен находиться в режиме редактирования.
В результате будет создан объект, состоящий из нескольких фрагментов, но ГИС будет воспринимать его как единый элемент шейп-файла, представленный одной строкой атрибутивной таблицы.
По окончании редактирования сохраните файл: из контекстного меню relief_pln выберите Save As… и укажите путь к рабочей папке проекта на диске.
Создание и редактирование точечного векторного слоя
На вкладке Modules двойным щелчком мыши запускаем модуль Shapes – Tools => Create New Shapes Layer. В диалоговом окне модуля задаем имя нового шейп-файла Name – relief_pnt, а в поле Shape Type из выпадающего списка выбираем Point. Прочие параметры (Number of Attributes, Attributes) оставляем без изменений и нажимаем Okay. Перейдя на вкладку Data можно видеть, что в списке слоев данных появился новый элемент группы Shapes – точки relief_pnt.
Двойным щелчком добавим новый слой на карту. Перейдя на вкладку Maps увидим, что карта M-37-121_utm содержит уже четыре элемента – растровый слой M-37-121_utm, созданные ранее векторные слои area_plg, relief_pln и новый точечный слой relief_pnt.
![]() |
![]() |
Для начала редактирования слоя вернемся во вкладку Data и в контекстном меню слоя relief_pnt выберем пункт Edit => Add Shape.
При помощи Zoom и
Pan увеличьте и удобно расположите в окне часть рабочего фрагмента топокарты. Определившись с высотной отметкой,
Action поставьте точку.
NB Если вы не хотите создавать составной объект (multipart feature), после постановки каждой точки необходимо отключать галочку рядом с Edit Selected Shape.
Таким образом, для корректного представления всех высотных отметок нам необходимо каждый раз добавлять новый элемент. Когда программа предложит сохранить изменения, согласитесь и нажмите Да. По окончании редактирования сохраните файл: из контекстного меню relief_pnt выберите Save As… и укажите путь к рабочей папке проекта на диске.
Заполнение атрибутивной таблицы
Чтобы открыть атрибутивную таблицу слоя, выберите из его контекстного меню пункт Attributes => Show.
![]() |
Внешний вид панели инструментов изменится в соответствии с основными задачами редактирования атрибутивных таблиц:
- добавить поле;
- удалить поле/я;
- добавить запись;
- вставить запись;
- удалить выбранные записи;
- удалить все записи.
Первичная структура таблицы задавалась на этапе создания шейп-файла, поэтому сейчас она содержит лишь два поля по умолчанию: служебное поле ID и текстовое NAME. Поскольку мы не планируем вносить информацию в поле NAME, его лучше удалить инструментом Delete Fields. В диалоговом окне Delete Fields отмечаем поле, которое хотим удалить (NAME) и нажимаем Okay.
Для добавления нового поля используем Add Field. В появившемся диалоговом окне прописываем следующие свойства поля: название Name – ABS_HEIGHT, тип переменной Field Type – 2 byte integer (поскольку потенциально на карте могут встретится значения высоты горизонталей больше 255 м), прочие параметры диалога – Insert Position (поле относительно которого размещается новая колонка) и Insert Method – after (ее местоположение после/ до определенного поля) оставляем без изменений и нажимаем Okay.
В результате в атрибутивной таблице появится новое поле, в которое мы занесем значения абсолютной высоты для векторизированных горизонталей. Для удобства работы расположим рядом в рабочем окне карту и атрибутивную таблицу – это можно сделать через меню Window => Tile Horizontally / Tile Vertically. В результате при выделении строки таблицы мы одновременно будем видеть соответствующую горизонталь, что облегчит процесс ввода значений.
Чтобы добавить к атрибутивной таблице информацию про тип изолиний, снова воспользуемся Add Field. В появившемся диалоге введем следующие значения: название Name – LINE_TYPE, тип переменной Field Type – 1 byte integer (будем вводить простые числовые коды), прочие параметры диалога – Insert Position (поле относительно которого размещается новая колонка) и Insert Method – after (ее местоположение после/ до определенного поля) оставляем без изменений и нажимаем Okay. Теперь в новое поле LINE_TYPE введем значения-коды, описывающие тип горизонтали – 0 (вспомогательная), 1 (основная), 2 (утолщенная). По окончании, атрибутивная таблица будет иметь примерно следующий вид:
Повторяя ту же последовательность шагов, дополним атрибутивную таблицу векторного точечного слоя. Для введения отметок значений абсолютной высоты создадим поле ABS_HEIGHT типа 4 byte floating point (поскольку для точек отметки абсолютных высот представлены в виде десятичных дробей).
NB Заполняя поле, в качестве знака-разделителя используйте . (точку), а не , запятую.
Для описания типа высотной отметки создадим поле POINT_TYPE типа 1 byte integer, присваивая код 0 точкам местности, а 1 – пунктам государственной геодезической сети.
Расчет пространственных характеристик объектов
Как и большинство современных ГИС SAGA дает возможность автоматически рассчитывать пространственные характеристики для объектов векторных слоев при условии, что они находятся в спроецированной СК. В нашем случае проекция для создаваемых векторных слоев не прописывалась индивидуально, но мы знаем, что создавались они на основе растрового слоя в ПСК UTM, т.е. в них по умолчанию заложена проекция растровой подложки и результаты расчетов будут представлены в единицах измерения используемой ПСК (м и м2). Однако не следует забывать, что если мы планируем работать с этими данными в дальнейшем, в другом ПО ГИС, информацию об используемой СК следует присвоить с помощью модуля Projection – Proj.4 => Set Coordinate Reference System. О том, как это сделать, рассказано в предыдущей статье.
Для расчета пространственных характеристик полигонального слоя выберите модуль Shapes – Polygons => Polygons Properties[1]. В диалоговом окне в качестве обрабатываемого слоя укажите area_plg. Строку <Polygons with Property Attributes можно оставить без изменений, чтобы сразу добавить результаты в атрибутивную таблицу слоя.
После появления сообщения Module execution succeeded, откроем атрибутивную таблицу слоя, в которой появятся два новых поля:
Зная, что линии километровой сетки на карте проведены через каждые 2 000 м, а размер нашего полигона задавался участком 5×5 квадратов, несложно проверить результат. При одной стороне полигона в 10 000 м (10 км) его периметр будет 40 000 м (40 км), а площадь – 100 000 000 м2 (100 км2). Как видим, рассчитанные по векторному слою значения близки к приведенным. Незначительные расхождения объясняются тем, что границы территории по карте проводились «на глаз», а не фиксировались по точкам с четко определенными координатами.
- ↑ Аналогичным образом пространственные характеристики могут быть рассчитаны и для полилинейного шейп-файла с помощью модуля Shapes – Lines => Lines Properties (длина линий, количество узлов и сегментов между ними). Геометрические характеристики точечного слоя не рассчитываются, но для добавления координат точек можно воспользоваться модулем Shapes – Points => Add coordinates to points.