Расчет основных пространственных характеристик объектов в QGIS: различия между версиями
Bolotoved (обсуждение | вклад) |
Bolotoved (обсуждение | вклад) Нет описания правки |
||
Строка 23: | Строка 23: | ||
= Использование fTools (Инструмент "Добавить поле геометрии") = | = Использование fTools (Инструмент "Добавить поле геометрии") = | ||
'''Vector'''→'''Обработка геометрии'''→'''Экспортировать/Добавить поле геометрии''' | |||
== Пример 1. Вычисление координат точек в десятичных градусах == | |||
== Вычисление координат точек в десятичных градусах == | |||
Загрузим в QGIS слой '''poi-osm.shp''' (точечные объекты OSM) из геосэмпла. | Загрузим в QGIS слой '''poi-osm.shp''' (точечные объекты OSM) из геосэмпла. | ||
Строка 55: | Строка 54: | ||
[[Файл:New-latlon-column.png|700px|thumb|center]] | [[Файл:New-latlon-column.png|700px|thumb|center]] | ||
== Вычисление координат точек в метрической системе | == Пример 2. Вычисление координат точек в метрической системе == | ||
Для того, чтобы получить координаты точек в метрической системе, необходимо перепроецировать имеющийся точечный слой в какую-нибудь прямоугольную систему кординат. | Для того, чтобы получить координаты точек в метрической системе, необходимо перепроецировать имеющийся точечный слой в какую-нибудь прямоугольную систему кординат. | ||
#Перепроецируем имеющийся слой '''poi-osm''' в проекцию UTM zone 44N (данные геосемпла лежат в трех зонах UTM, с 43N по 45N, для уменьшения искажений расчетов мы возьмем центральную <span style="color:red">Вообще говоря, это не самый удачный вариант выбора проекции, но в случае с геосемплом, для более точных расчетов требуется [[Создание пользовательской проекции в QGIS|создание пользовательской проекции]], чему также нужно посвятить отдельную статью</span>). Для этого, правой кнопкой мыши щелкнем в менеджере слоев по '''poi-osm''' и из списка выберем '''"Сохранить как"'''. В открывшемся диалоговом окне в графе '''"Сохранить как"''' указываем название и путь для сохранения нового перепроецированого слоя, а в графе '''"Система координат"''', нажав кнопку '''"Обзор"''' выбираем прямоугольную систему координат WGS84/UTM zone 44N. Облегчить поиск нужной системы координат можно путем ввода букв UTM в строку '''"Filter"''' (Останутся только те СК, которые содержат в названии это сочетание букв). Жмем "ОК". | #Перепроецируем имеющийся слой '''poi-osm''' в проекцию UTM zone 44N (данные геосемпла лежат в трех зонах UTM, с 43N по 45N, для уменьшения искажений расчетов мы возьмем центральную <span style="color:red">Вообще говоря, это не самый удачный вариант выбора проекции, но в случае с геосемплом, для более точных расчетов требуется [[Создание пользовательской проекции в QGIS|создание пользовательской проекции]], чему также нужно посвятить отдельную статью</span>). Для этого, правой кнопкой мыши щелкнем в менеджере слоев по '''poi-osm''' и из списка выберем '''"Сохранить как"'''. В открывшемся диалоговом окне в графе '''"Сохранить как"''' указываем название и путь для сохранения нового перепроецированого слоя, а в графе '''"Система координат"''', нажав кнопку '''"Обзор"''' выбираем прямоугольную систему координат WGS84/UTM zone 44N. Облегчить поиск нужной системы координат можно путем ввода букв UTM в строку '''"Filter"''' (Останутся только те СК, которые содержат в названии это сочетание букв). Жмем "ОК". | ||
Строка 76: | Строка 74: | ||
Расчет пространственных характеристик точечных, линейных и полигональных объектов с помощью калькулятора полей производится по одному алгоритму, (с учетом специфики выбора проекции для разных типов геометрии). | Расчет пространственных характеристик точечных, линейных и полигональных объектов с помощью калькулятора полей производится по одному алгоритму, (с учетом специфики выбора проекции для разных типов геометрии). | ||
Последовательность действий при использовании калькулятора полей следующая: | Последовательность действий при использовании калькулятора полей следующая: | ||
#Открываем атрибутивную таблицу слоя для которого необходимо | #Открываем атрибутивную таблицу слоя для которого необходимо рассчитать пространственные характеристики. | ||
#Переводим слой в режим редактирования [[Файл:mActionToggleEditing.png]], при этом становится активной кнопка запуска калькулятора полей. | #Переводим слой в режим редактирования [[Файл:mActionToggleEditing.png]], при этом становится активной кнопка запуска калькулятора полей. | ||
#Запускаем калькулятор полей, нажав на кнопку [[Файл:mActionCalculateField.png]]. Открывается диалоговое окно калькулятора полей, состоящее из меню параметров создания новых полей, списка функций и подсказок по ним, а также результирующей командной строки (Expression) куда будут внесены все требуемые команды для вычислений. | #Запускаем калькулятор полей, нажав на кнопку [[Файл:mActionCalculateField.png]]. Открывается диалоговое окно калькулятора полей, состоящее из меню параметров создания новых полей, списка функций и подсказок по ним, а также результирующей командной строки (Expression) куда будут внесены все требуемые команды для вычислений. | ||
Строка 103: | Строка 101: | ||
#Добавить функцию в командную строку можно либо прописав ее вручную, либо двойным щелчком мыши по необходимой функции из списка. | #Добавить функцию в командную строку можно либо прописав ее вручную, либо двойным щелчком мыши по необходимой функции из списка. | ||
Создание нового поля, назначение его параметров | |||
В случае, если в атрибутивной таблице файла еще нет специальных колонок для отображения информации о пространственных характеристиках, ставим галочку "Create new field" (Создать новое поле). | В случае, если в атрибутивной таблице файла еще нет специальных колонок для отображения информации о пространственных характеристиках, ставим галочку "Create new field" (Создать новое поле). | ||
Далее необходимо указать параметры для создаваемого слоя (тип, размер и точность). Тип поля можно задать любой, но следует учитывать, что в случае, если будет задано текстовое поле, то в дальнейшем, данное поле невозможно будет вставлять в формулы для расчетов. | Далее необходимо указать параметры для создаваемого слоя (тип, размер и точность). Тип поля можно задать любой, но следует учитывать, что в случае, если будет задано текстовое поле, то в дальнейшем, данное поле невозможно будет вставлять в формулы для расчетов. | ||
В общем случае для расчетов пространственных характеристик объектов лучше использовать десятичное число (real). При этом нужно учитывать, что задавая его '''Размер''' мы указываем общее количество знаков до и после запятой, а указывая '''Точность''' - количество знаков после запятой. | В общем случае для расчетов пространственных характеристик объектов лучше использовать десятичное число (real). При этом нужно учитывать, что задавая его '''Размер''' мы указываем общее количество знаков до и после запятой, а указывая '''Точность''' - количество знаков после запятой. | ||
=== Пример | === Пример 3. Расчет координат в десятичных градусах: DD.DDDDD === | ||
Зададим параметры поля для отображения координат точек в десятичных градусах с навигационной точностью (у стандартных GPS точность в десятичных градусах составляет 5 знаков после запятой, например, 64.35647 N). Нам нужно '''3 значащих числа''' для целочисленной части координаты (широта и долгота меняются в пределах от 0 до 180) и 5 значащих чисел для дробной части ('''точность''' = 5). Получается, что '''размер''' поля равен 8 значащим числам, и установки для поля с координатами вида "DD.DDDDD", будут выглядеть следующим образом: | Зададим параметры поля для отображения координат точек в десятичных градусах с навигационной точностью (у стандартных GPS точность в десятичных градусах составляет 5 знаков после запятой, например, 64.35647 N). Нам нужно '''3 значащих числа''' для целочисленной части координаты (широта и долгота меняются в пределах от 0 до 180) и 5 значащих чисел для дробной части ('''точность''' = 5). Получается, что '''размер''' поля равен 8 значащим числам, и установки для поля с координатами вида "DD.DDDDD", будут выглядеть следующим образом: | ||
[[Файл:FC_DD_DDDDD.png|700px|thumb|center]] | [[Файл:FC_DD_DDDDD.png|700px|thumb|center]] | ||
== Пример 3. Расчет длин, периметров и площадей == | |||
Значения для длин и площадей слоев находящихся в прямоугольных проекциях рассчитываются в метрах. <span style="color:red">Тут нужно объяснить, с какими параметрами создать поле для расчета длин и площадей так, чтобы обойти все многочисленные ограничения шейпов и получить адекватный результат.</span> | Значения для длин и площадей слоев находящихся в прямоугольных проекциях рассчитываются в метрах. <span style="color:red">Тут нужно объяснить, с какими параметрами создать поле для расчета длин и площадей так, чтобы обойти все многочисленные ограничения шейпов и получить адекватный результат.</span> | ||
Версия от 14:57, 13 февраля 2012
При написании использована версия QGIS 1.9.90-Alpha b4f7a61 [1]
В статье описываются особенности получения основных пространственных характеристик объектов (координат, длин, площадей) хранящихся в shape-файлах при использовании свободной ГИС QGIS.
Вводные замечания
Технически, получить координаты, длины или площади пространственных объектов в современных ГИС достаточно просто. Гораздо сложнее понять насколько точны значения которые мы получили, и что сделать для улучшения точности полученных величин.
Существует 3 основных способа для расчета пространственных характеристик в ГИС:
- Расчет в проекции слоя — для расчетов используется собственная проекция слоя. Поскольку векторные слои принято хранить в не спроецированном виде (в географической системе координат), все пространственные характеристики будут рассчитаны в десятичных градусах. Результаты таких расчетов корректны только для координат точек и не имеют смысла для длин и площадей.
- Расчет в проекции вида — независимо от того, в какой проекции находятся исходные векторные слои, в ГИС существует возможность настроить их отображение на экране в заданной проекции и использовать для расчетов именно ее. Это удобно тем, что для расчетов длин и площадей нам не нужно предварительно проецировать хранящиеся в географической СК слои в расчетную проекцию. Недостаток данного способа в том, что расчеты идут не на реальной поверхности геоида, а на приближенной к нему плоскости проекции и чтобы получить точные результаты мы должны для каждого отдельного случая правильно выбрать проекцию и задать ее параметры. Кроме того, в случае, если мы имеем дело с крупными географическими объектами, такими как континенты или Земной Шар в целом, для расчетов длин и площадей приходится использовать разные проекции. Подробнее о проекциях и их использовании для конкретных нужд можно почитать в пособии по картографическим проекциям.
- Расчет на сфероиде — расчет пространственных характеристик объектов осуществляется на сфере или сфероидах. Использование данного метода позволяет получать наиболее точные результаты и не требует предварительных действий по выбору проекции и подходит для всех типов геометрии.
В QGIS на данный момент реализовано два инструмента для расчета площадей:
- Инструмент "Экспорт/Добавить поле геометрии (входит в состав модуля fTools). Данный инструмент поддерживает все три способа расчета площадей (в проекции слоя, в проекции вида и на сфероиде).
- Набор функций для расчета пространственных характеристик в калькуляторе полей (Field Calculator). В настоящий момент реализована поддержка расчетов только в проекции слоя.
Рассмотрим на примерах использование инструментария QGIS для расчетов различных пространственных характеристик. В расчетах, для проверки сходимости результатов, будем использовать Geosample: Открытый набор геоданных для различного ПО ГИС. Готовый проект для QGIS, включающий все необходимые для данной обучающей статьи Shape-файлы можно скачать здесь.
Каждому типу геометрии исходных данных: точек, линий или полигонов, с точки зрения расчетов, присуща своя специфика, поэтому каждому типу геометрии будет посвящен отдельный подраздел.
Использование fTools (Инструмент "Добавить поле геометрии")
Vector→Обработка геометрии→Экспортировать/Добавить поле геометрии
Пример 1. Вычисление координат точек в десятичных градусах
Загрузим в QGIS слой poi-osm.shp (точечные объекты OSM) из геосэмпла. Проверим в какой проекции находится данный слой: Для этого в менеджере слоев щелкнем по нему правой кнопкой мыши и в выпадающем меню выберем пункт "свойства". В открывшемся диалоговом окне выберем вкладку "Метаданные".
Запись
Layer Spatial Reference System:
+proj=longlat +datum=WGS84 +no_defs
означает, что данные находятся в географической системе координат. Таким образом, для того чтобы получить координаты точек в десятичных градусах, перепроецировать ничего не нужно.
Выполним Vector→Обработка геометрии→Экспортировать/Добавить поле геометрии
Следующее диалоговое окно предлагает выбрать слой для которого необходимо рассчитать пространственные характеристики. Из выпадающего списка выберем poi-osm.shp и укажем куда сохранить новый файл в котором будут добавлены атрибутивные колонки с координатами. Нажмем "ОК". После пересчета координат будет предложено добавить новый слой на карту. Жмем "Yes".
Проверим результат. Откроем таблицу атрибутов нового слоя. Появилось две новых колонки XCOORD (долгота) и YCOORD (широта) выраженные в десятичных градусах.
Пример 2. Вычисление координат точек в метрической системе
Для того, чтобы получить координаты точек в метрической системе, необходимо перепроецировать имеющийся точечный слой в какую-нибудь прямоугольную систему кординат.
- Перепроецируем имеющийся слой poi-osm в проекцию UTM zone 44N (данные геосемпла лежат в трех зонах UTM, с 43N по 45N, для уменьшения искажений расчетов мы возьмем центральную Вообще говоря, это не самый удачный вариант выбора проекции, но в случае с геосемплом, для более точных расчетов требуется создание пользовательской проекции, чему также нужно посвятить отдельную статью). Для этого, правой кнопкой мыши щелкнем в менеджере слоев по poi-osm и из списка выберем "Сохранить как". В открывшемся диалоговом окне в графе "Сохранить как" указываем название и путь для сохранения нового перепроецированого слоя, а в графе "Система координат", нажав кнопку "Обзор" выбираем прямоугольную систему координат WGS84/UTM zone 44N. Облегчить поиск нужной системы координат можно путем ввода букв UTM в строку "Filter" (Останутся только те СК, которые содержат в названии это сочетание букв). Жмем "ОК".
После создания нового слоя, добавим его в проект и повторим для него процедуру расчета координат описанную в разделе об использовании инструмента "Добавить поле геометрии".
Открыв таблицу атрибутов нового слоя с добавленными полями геометрии, можно убедиться, что координаты выражены в метрах в установленной нами СК (WGS84/UTM zone 44N).
Использование калькулятора полей
При расчете пространственных характеристик с помощью калькулятора полей (Field Calculator) следует помнить, что все расчеты производятся в единицах измерения слоя, т.е. чтобы получить результаты в градусах, исходный слой должен находиться в географической системе координат,а чтобы получить результаты в метрах - необходимо использовать спроектированный слой.
Расчет пространственных характеристик точечных, линейных и полигональных объектов с помощью калькулятора полей производится по одному алгоритму, (с учетом специфики выбора проекции для разных типов геометрии). Последовательность действий при использовании калькулятора полей следующая:
- Открываем атрибутивную таблицу слоя для которого необходимо рассчитать пространственные характеристики.
- Переводим слой в режим редактирования , при этом становится активной кнопка запуска калькулятора полей.
- Запускаем калькулятор полей, нажав на кнопку . Открывается диалоговое окно калькулятора полей, состоящее из меню параметров создания новых полей, списка функций и подсказок по ним, а также результирующей командной строки (Expression) куда будут внесены все требуемые команды для вычислений.
- Далее возможно два варианта действий, в зависимости от того, имеется ли у вас в атрибутивной таблице требуемое поле.
- Если поле отсутствует, необходимо его создать — поставить галочку "Создать новое поле" (Create New Field), после чего задать его имя, тип, размер и точность. Осветить нюансы.
- Если поле уже присутствует и необходимо только осуществить пересчет пространственных характеристик (например, после редактирования слоя, т.к. автоматически, при изменении пространственных объектов, их пространственные характеристики не пересчитываются), необходимо поставить галочку "Обновить существующее поле" и выбрать необходимое поле из выпадающего списка.
- Далее, необходимо выбрать необходимую расчетную функцию из списка. Все функции для расчета пространственных характеристик объектов находятся в группе "Геометрия". Полный список функций таков:
Функция | Тип геометрии | Описание |
---|---|---|
$x | точка | Возвращает координату X (долготу) точки. |
$y | точка | Возвращает координату Y (широту) точки. |
$length | линия | Возвращает длину линии. |
xat | линия | Возвращает координату X (долготу) n-ой точки линии (индекс начинается с 0; отрицательные значения отсчитываются от последнего значения индекса). |
yat | линия | Возвращает координату Y (долготу) n-ой точки линии (индекс начинается с 0; отрицательные значения отсчитываются от последнего значения индекса). |
$perimeter | полигон | Возвращает периметр полигона. |
$area | полигон | Возвращает площадь полигона. |
- Добавить функцию в командную строку можно либо прописав ее вручную, либо двойным щелчком мыши по необходимой функции из списка.
Создание нового поля, назначение его параметров В случае, если в атрибутивной таблице файла еще нет специальных колонок для отображения информации о пространственных характеристиках, ставим галочку "Create new field" (Создать новое поле). Далее необходимо указать параметры для создаваемого слоя (тип, размер и точность). Тип поля можно задать любой, но следует учитывать, что в случае, если будет задано текстовое поле, то в дальнейшем, данное поле невозможно будет вставлять в формулы для расчетов. В общем случае для расчетов пространственных характеристик объектов лучше использовать десятичное число (real). При этом нужно учитывать, что задавая его Размер мы указываем общее количество знаков до и после запятой, а указывая Точность - количество знаков после запятой.
Пример 3. Расчет координат в десятичных градусах: DD.DDDDD
Зададим параметры поля для отображения координат точек в десятичных градусах с навигационной точностью (у стандартных GPS точность в десятичных градусах составляет 5 знаков после запятой, например, 64.35647 N). Нам нужно 3 значащих числа для целочисленной части координаты (широта и долгота меняются в пределах от 0 до 180) и 5 значащих чисел для дробной части (точность = 5). Получается, что размер поля равен 8 значащим числам, и установки для поля с координатами вида "DD.DDDDD", будут выглядеть следующим образом:
Пример 3. Расчет длин, периметров и площадей
Значения для длин и площадей слоев находящихся в прямоугольных проекциях рассчитываются в метрах. Тут нужно объяснить, с какими параметрами создать поле для расчета длин и площадей так, чтобы обойти все многочисленные ограничения шейпов и получить адекватный результат.
Особенности расчета пространственных характеристик точечных, линейных и полигональных объектов
Точечный объект
Координаты
Координаты точечных объектов можно получить в виде десятичных градусов или в метрической системе. В первом случае исходные данные должны находиться в географической системе координат. Во втором - должны быть спроектированы.
Линейный объект
Длина
Для расчета длин принято использовать равнопромежуточные (equidistant projections) проекции.
Координаты узлов
Полигональный объект
Площадь
Для расчета площадей используют равновеликие (Equal Area) проекции.
Периметр
Центроид
Заключение
В заключение, сделаем важное замечание: правилом хорошего тона считается документирование, какая проекция использовалась для расчета пространственных характеристик объектов. Особенно это касается расчетов на картах глобального охвата.
Ссылки
- Geosample: Открытый набор геоданных для различного ПО ГИС
- Получение основных пространственных характеристик объектов в Arcview GIS
- Получение основных пространственных характеристик объектов в ArcGIS
- О.А. Лебедева. Картографические проекции. Методическое пособие. Новосибирский учебно-методический центр по ГИС и ДЗ. Новосибирск, 2000 Скачать
- Часто задаваемые вопросы по координатам, проекциям, системам координат
- Описание проекций используемых GIS-Lab
- Ведение в ГИС на основе бесплатного ПО с открытым исходным кодом (проекциям посвящена 7-я глава): A Gentle GIS Introduction