Обсудить в форуме Комментариев 3Редактировать в вики
В статье описываются особенности получения основных пространственных характеристик объектов (координат, длин, площадей) хранящихся в shape-файлах при использовании свободной ГИС QGIS.
При написании использована версия QGIS 1.9.90-Alpha ad955e2 [1]
Технически, получить координаты, длины или площади пространственных объектов в современных ГИС достаточно просто. Гораздо сложнее понять насколько точны значения которые мы получили, и что можно сделать для улучшения точности полученных величин.
В зависимости от используемой для расчета системы координат (СК) и метода расчет пространственных характеристик объекта можно осуществить тремя способами:
На данный момент в QGIS реализовано два инструмента для расчета площадей:
Рассмотрим использование различных инструментов QGIS для расчетов пространственных характеристик. В расчетах, для проверки сходимости результатов, будем использовать Geosample: Открытый набор геоданных для различного ПО ГИС. Готовый проект для QGIS, включающий все необходимые для данной статьи слои, можно скачать здесь.
Последовательность действий такова.
Инструмент доступен из меню Вектор→Обработка геометрии→Экспортировать/Добавить поле геометрии После запуска инструмента открывается диалоговое меню предоставляющее следующие возможности:
1. Загрузим в QGIS слой poi-osm.shp (точечные объекты OSM) из геосэмпла. Проверим в какой СК находится данный слой. Для этого в менеджере слоев щелкнем по нему правой кнопкой мыши и в выпадающем меню выберем пункт "Свойства". В открывшемся диалоговом окне выберем вкладку "Метаданные".
Запись
Layer Spatial Reference System: +proj=longlat +datum=WGS84 +no_defs
означает, что данные находятся в географической СК. Таким образом, для того, чтобы получить координаты точек в десятичных градусах, перепроецировать ничего не нужно.
2. Выполним Vector→Обработка геометрии→Экспортировать/Добавить поле геометрии
3. Следующее диалоговое окно предлагает выбрать слой для которого необходимо рассчитать пространственные характеристики.
Проверим результат:
Откроем таблицу атрибутов нового слоя: Слой→Открыть таблицу атрибутов
Появилось две новых колонки XCOORD (долгота) и YCOORD (широта) выраженные в десятичных градусах.
Для того, чтобы получить координаты точек в метрической системе, можно либо перепроецировать имеющийся точечный слой в какую-нибудь прямоугольную СК и произвести расчеты, как показано в примере 1, либо задать необходимую СК проекту и рассчитать пространственные характеристики в ней, не перепроецируя при этом слой.
1. Зададим СК проекта: WGS 84, UTM zone 44N (данные геосемпла лежат в трех зонах UTM, с 43N по 45N, для уменьшения искажений расчетов мы возьмем центральную). Для этого выполним:
Установки→Свойства проекта и откроем вкладку Система координат.
Установим галочку "Включить преобразование координат на лету"
В графе "Filter" наберем
UTM zone 44N
или код EPSG проекции:
32644
В результате останутся только те СК, которые содержат в названии это сочетание букв.
В меню "Coordinate reference systems of the world" Выберем "WGS 84 zone 44N".
Жмем "ОК".
Все слои вида отображаются теперь в выбранной нами проекции.
2. Теперь рассчитаем координаты точек в установленной нами СК проекта (вида):
Выполним Vector→Обработка геометрии→Экспортировать/Добавить поле геометрии
Из выпадающего списка выберем poi-osm.shp.
В качестве способа расчета выберем СК проекта (Project CRS)
Сохраним результаты расчета в том же файле (галочка "Save to New shapefile" не установлена).
Нажмем "ОК".
После пересчета координат появится сообщение, что слой обновлен. Жмем "ОК".
3. Проверим результат:
Откроем таблицу атрибутов нового слоя: Слой→Открыть таблицу атрибутов
Добавились новые поля геометрии: XCOORD (долгота) и YCOORD (широта), причем, координаты выражены в метрах в установленной нами СК (WGS84/UTM zone 44N).
Аналогичным образом в СК вида рассчитываются пространственные характеристики линейных и полигональных слоев.
Как уже было сказано, в большинстве случаев, предпочтительным (дающим наиболее точные результаты) является расчет пространственных характеристик объектов на эллипсоиде. Получить представление насколько могут отличаться результаты расчетов на эллипсоиде от результатов расчетов в различных СК можно из статьи "Сравнение разных способов вычисления длин и азимутов".
Важно: следует учитывать, что при расчете на эллипсоиде, координаты точек по умолчанию возвращаются в десятичных градусах, а длины и площади - в метрах независимо от СК вида или слоя.
Перед тем, как производить расчеты на эллипсоиде необходимо его выбрать, для этого выполним: Установки→Параметры. На вкладке "Инструменты" выбрать из выпадающего списка "Эллипсоид для вычисления расстояний". По умолчанию это универсальный эллипсоид WGS 84.
После выбора эллипсоида для расчетов, рассчитаем координаты точек:
1. Выполним Vector→Обработка геометрии→Экспортировать/Добавить поле геометрии.
2. Из выпадающего списка выберем poi-osm.shp.
3. В качестве способа расчета выберем расчет на эллипсоиде (Ellipsoid).
4. Сохраним результаты расчета в том же файле (галочка "Save to New shapefile" не установлена).
5. Нажмем "ОК".
6. После пересчета координат появится сообщение, что слой обновлен. Жмем "ОК".
7. Проверим результат: откроем таблицу атрибутов нового слоя: Слой→Открыть таблицу атрибутов. Добавились новые поля геометрии - XCOORD (долгота) и YCOORD (широта), выраженные в десятичных градусах.
Имеем следующий результат:
Обратите внимание, что координаты точек рассчитанные в СК слоя (географической СК на эллипсоиде WGS-84 - поля COORD_GCS) полностью совпадают с координатами рассчитанными непосредственно на эллипсоиде WGS-84 (COORD_el).
Аналогичным образом на эллипсоиде рассчитываются пространственные характеристики линейных и полигональных слоев.
При расчете пространственных характеристик с помощью калькулятора полей (Field Calculator) следует помнить, что все расчеты производятся в единицах измерения слоя, т.е. чтобы получить результаты в градусах, исходный слой должен находиться в географической СК, а чтобы получить результаты в метрах - необходимо использовать спроецированный слой.
Расчет пространственных характеристик точечных, линейных и полигональных объектов с помощью калькулятора полей производится по одному алгоритму. Последовательность действий при использовании калькулятора полей следующая:
Функция | Тип геометрии | Описание |
---|---|---|
$x | точка | Возвращает координату X (долготу) точки. |
$y | точка | Возвращает координату Y (широту) точки. |
$length | линия | Возвращает длину линии. |
xat | линия | Возвращает координату X (долготу) n-ой точки линии (индекс начинается с 0; отрицательные значения отсчитываются от последнего значения индекса). |
yat | линия | Возвращает координату Y (долготу) n-ой точки линии (индекс начинается с 0; отрицательные значения отсчитываются от последнего значения индекса). |
$perimeter | полигон | Возвращает периметр полигона. |
$area | полигон | Возвращает площадь полигона. |
Рассчитаем площади объектов в полигональном слое admin геосемпла (слой с административными границами областей) с помощью калькулятора полей.
Как уже было сказано, калькулятор полей производит расчеты только в СК слоя. По этому, для расчетов длин и площадей, а также координат точек в метрах, нам необходимо иметь слои в прямоугольных СК. Слой admin находится в географической СК, по этому нам предварительно необходимо перепроецировать его в прямоугольную СК, для этого выполняем:
UTM zone 44Nили код EPSG проекции:
32644. В результате останутся только те СК, которые содержат в названии это сочетание букв.
8. Добавляем вновь созданный shape-файл в проект.
9. Открываем атрибутивную таблицу.
10. Переводим слой в режим редактирования , при этом становится активной кнопка запуска калькулятора полей.
11. Запускаем калькулятор полей, нажав на кнопку . Открывается диалоговое окно калькулятора полей, состоящее из меню параметров создания новых полей, списка функций и подсказок по ним, а также результирующей командной строки (Expression) куда будут внесены все требуемые команды для вычислений.
Далее возможно два варианта действий, в зависимости от того, имеется ли у вас в атрибутивной таблице требуемое поле.
12. Создадим новое поле для записи результатов расчета площади. В случае, если в атрибутивной таблице файла еще нет специальных колонок для отображения информации о пространственных характеристиках, ставим галочку "Create new field" (Создать новое поле).
13. Далее необходимо указать параметры для создаваемого слоя (тип, размер и точность). Тип поля можно задать любой, но следует учитывать, что в случае, если будет задано текстовое поле, то в дальнейшем, данное поле невозможно будет вставлять в формулы для расчетов. В общем случае для расчетов пространственных характеристик объектов лучше использовать десятичное число (real). При этом нужно учитывать, что задавая его Размер мы указываем общее количество знаков до и после запятой, а указывая Точность - количество знаков после запятой.
Зададим параметры поля для расчета площади:
14. Далее, необходимо выбрать необходимую расчетную функцию из списка. Все функции для расчета пространственных характеристик объектов находятся в группе "Геометрия". Добавить функцию в командную строку можно либо прописав ее вручную, либо двойным щелчком мыши по необходимой функции из списка.
15. После всех манипуляций окно должно приобрести вид:
16. Жмем "ОК" и смотрим на атрибутивную таблицу. В новой колонке "AREA" отображаются предварительные результаты расчетов (не усеченные до 1-го знака после запятой. Нажимаем кнопку "Сохранить изменения" . После этой операции данные записываются согласно настроенным нами параметрам поля: т.к. мы установили точность 1 знак после запятой, данные были округлены до 1-го знака после запятой. В случае, если результаты стали отрицательными, это означает, что недостаточно значащих знаков и нужно создать новое поле с большим количеством значащих знаков.
В заключение, сделаем важное замечание: правилом хорошего тона считается документирование, какое ПО (версия) и какой инструмент использовались для расчета пространственных характеристик объектов. Дело в том, что в разном ПО используются отличающиеся алгоритмы расчетов, параметры (точность назначения) СК и эллипсоидов, что приводит к тому, что для одних и тех же данных рассчитанные пространственные характеристики несколько отличаются. В научном мире приоритет отдается алгоритмам имеющим открытый исходный код, чтобы каждый мог воспроизвести расчеты и найти ошибки алгоритмов. В связи с этим QGIS как инструмент в руках ученого предстает в более выгодном свете.
При расчетах длин и площадей с использованием проекций необходимо также указывать, какие именно проекции использовались, особенно это касается расчетов в глобальном охвате, т.к. чем больше охват территории, тем больше разница в результатах расчетов выполненных в разных проекциях.
Обсудить в форуме Комментариев 3Редактировать в вики
Последнее обновление: 2014-05-14 21:52
Дата создания: 26.01.2012
Автор(ы): Илья Филиппов
© GIS-Lab и авторы, 2002-2021. При использовании материалов сайта, ссылка на GIS-Lab и авторов обязательна. Содержание материалов - ответственность авторов. (подробнее).