Создание и оформление градусной сетки с минутным и секундным шагами в QGIS: различия между версиями

Материал из GIS-Lab
Перейти к навигации Перейти к поиску
(Новая страница: «{{Статья|Черновик}} {{Аннотация| Статья подробно излагает один из возможных алгоритмов со…»)
 
 
(не показаны 2 промежуточные версии этого же участника)
Строка 3: Строка 3:
{{Аннотация| Статья подробно излагает один из возможных алгоритмов создания градусной сетки, включая сетки с минутным и секундным шагом в QGIS. Более подробно работа с регулярными сетками в QGIS описана в [http://gis-lab.info/qa/grids-qgis.html статье]. }}
{{Аннотация| Статья подробно излагает один из возможных алгоритмов создания градусной сетки, включая сетки с минутным и секундным шагом в QGIS. Более подробно работа с регулярными сетками в QGIS описана в [http://gis-lab.info/qa/grids-qgis.html статье]. }}


[[Файл: regular_minute_grid0.jpg|700px|thumb|center/Снимок Aster в видимом диапазоне из набора данных [http://gis-lab.info/qa/terralook.html TerraLook] с нанесенной координатной сеткой. Может использоваться для навигации в полевых условиях.]]
[[Файл: regular_minute_grid0.jpg|700px|thumb|center|Снимок Aster в видимом диапазоне из набора данных [http://gis-lab.info/qa/terralook.html TerraLook] с нанесенной координатной сеткой. Может использоваться для навигации в полевых условиях.]]
 
=== Создание сетки с минутным и секундным шагом ===
Создадим, для примера, сетку с шагом 1 минута по долготе и 30 секунд по широте.
 
'''Важно:''' Генератор сеток, генерирует их в единицах проекта. Поскольку нам нужны градусы, а не метры, убедимся, что проект находится в географической СК: '''Установки→Свойства проекта→Система координат'''. В графе системы координат выберем необходимую ГСК, например WGS84.
 
В окне параметров создания регулярной сетки ('''Вектор→Выборка→Регулярная сетка''') зададим необходимый шаг сетки.
 
*Для минутной сетки шаг задается равным 1 / 60 = 0.0166666667.
*Для секундной: 1 / 3600 = 0.0002777778. Т. е. в нашем случае, для 30-ти секундного шага: 0.0002777778 * 30 = 0.0083333333
 
Отредактируем полученные значения минимальных и максимальных широт и долгот, округлив минимальные значения в меньшую сторону, а максимальные – в большую. (Например, минимальную широту, равную 63.3447529439 округлим до 63, а максимальную широту равную 64.0787479439 округлим до 65).
 
[[Файл: regular_minute_grid1.png|700px|thumb|center]]
 
Произведем операцию вставки добавочных узлов в линии сетки ('''Вектор→Обработка геометрии→Добавить вершины'''). Мы рекомендуем вставлять хотя бы по одному узлу на каждый шаг сетки по долготе. В нашем случае сетка простирается от 70 до 73 градусов, т.е. на 73 - 70 = 3 градуса. Т.о. нам нужно добавить 60*3-1=179 дополнительных узлов.
 
Перепроецируем проект в ту СК в которой предполагается работать (например в UTM). Сохраним также и созданный нами слой сетки в этой СК: в менеджере слоев, кликнем правой кнопкой мыши и выберем пункт '''«Сохранить как»''' и в открывшемся диалоговом окне в графе «'''Система координат'''» укажем «'''Система координат проекта'''». '''Важно:''' далее все слои будем создавать в этой СК.
 
=== Преобразование десятичных градусов в градусы, минуты и секунды ===
 
Откроем теперь таблицу атрибутов полученного слоя: в графе COORD у нас координаты линий сетки, но они выражены в десятичных градусах. Нам же нужно отображать координаты в градусах, минутах и секундах.
 
Воспользуемся для этого калькулятором полей: внизу таблицы атрибутов активируем «режим редактирования» [[Файл:mActionToggleEditing.png|22px]] и запустим «калькулятор полей» [[Файл:mActionCalculateField.png|22px]].
 
Вначале отделим дробную часть от целой, воспользуемся оператором деления по модулю, который возвращает остаток от деления. Создадим новое поле «DD1» с типом «десятичное число (real)», размер 20, точность 15. В выражении пропишем деление по модулю на 1:
 
<pre>"COORD" %1</pre>
 
Нажмем «ОК».
 
[[Файл: regular_minute_grid2.png|700px|thumb|center]]
 
Опять же с помощью калькулятора полей создадим поле «DD» (градусы) тип – целое, размер =3 и отделим целую часть от дробной, прописав выражение:
<pre>"COORD"- "DD1"</pre>
 
Снова воспользуемся [[Файл:mActionCalculateField.png|22px]] и создадим поле «MM» (целое, размер 2) для расчета минут. Пропишем:
 
<pre>("DD1" * 60) - ("DD1" * 60)%1</pre>
 
(Примечание: выражение ("DD1" * 60) возвращает количество минут содержится в десятичном остатке градусов. Поскольку возвращенное значение содержит также десятичный остаток приходящийся на секунды, вычтем из него ("DD1" * 60)%1)
 
Создадим поле секунд (SS) (целое, размер 2) и пропишем выражение:
 
<pre>(("DD1" * 60)%1*60) - (("DD1" * 60)%1*60) %1</pre>
 
Теперь соберем из отдельных элементов (градусов, минут и секунд) результирующее поле подписи:
 
Создадим новое поле «label» (тип текст (string), длина 15) и пропишем выражение:
 
<pre>"DD" || 'º' || "MM" || '´' || "SS" || '´´ ' || "Type"</pre>
 
Сохраняем полученный слой [[Файл:mActionFileSave.png]] и завершаем редактирование [[Файл:mActionToggleEditing.png|22px]].
 
=== Подготовка рамки сетки ===
 
=== Оформление подписей градусной сетки ===
 
Создадим поле угла поворота «Angle» (тип – целое, размер – 3).
 
<pre>CASE WHEN "Type" = 'E' THEN  0 ELSE -90 END</pre>
 
 
 
Left, Center, Right
Top, Cap, Half, Base, Bottom
 
 
== Ссылки ==
*[http://gis-lab.info/qa/grids-qgis.html Создание регулярных сеток в QGIS]
*[http://gis-lab.info/qa/graticule.html Наложение метрической и/или градусной сетки на макет карты (в Arcview GIS и ArcGIS)]

Текущая версия от 16:28, 19 мая 2012

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


Статья подробно излагает один из возможных алгоритмов создания градусной сетки, включая сетки с минутным и секундным шагом в QGIS. Более подробно работа с регулярными сетками в QGIS описана в статье.

Снимок Aster в видимом диапазоне из набора данных TerraLook с нанесенной координатной сеткой. Может использоваться для навигации в полевых условиях.

Создание сетки с минутным и секундным шагом

Создадим, для примера, сетку с шагом 1 минута по долготе и 30 секунд по широте.

Важно: Генератор сеток, генерирует их в единицах проекта. Поскольку нам нужны градусы, а не метры, убедимся, что проект находится в географической СК: Установки→Свойства проекта→Система координат. В графе системы координат выберем необходимую ГСК, например WGS84.

В окне параметров создания регулярной сетки (Вектор→Выборка→Регулярная сетка) зададим необходимый шаг сетки.

  • Для минутной сетки шаг задается равным 1 / 60 = 0.0166666667.
  • Для секундной: 1 / 3600 = 0.0002777778. Т. е. в нашем случае, для 30-ти секундного шага: 0.0002777778 * 30 = 0.0083333333

Отредактируем полученные значения минимальных и максимальных широт и долгот, округлив минимальные значения в меньшую сторону, а максимальные – в большую. (Например, минимальную широту, равную 63.3447529439 округлим до 63, а максимальную широту равную 64.0787479439 округлим до 65).

Regular minute grid1.png

Произведем операцию вставки добавочных узлов в линии сетки (Вектор→Обработка геометрии→Добавить вершины). Мы рекомендуем вставлять хотя бы по одному узлу на каждый шаг сетки по долготе. В нашем случае сетка простирается от 70 до 73 градусов, т.е. на 73 - 70 = 3 градуса. Т.о. нам нужно добавить 60*3-1=179 дополнительных узлов.

Перепроецируем проект в ту СК в которой предполагается работать (например в UTM). Сохраним также и созданный нами слой сетки в этой СК: в менеджере слоев, кликнем правой кнопкой мыши и выберем пункт «Сохранить как» и в открывшемся диалоговом окне в графе «Система координат» укажем «Система координат проекта». Важно: далее все слои будем создавать в этой СК.

Преобразование десятичных градусов в градусы, минуты и секунды

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

Воспользуемся для этого калькулятором полей: внизу таблицы атрибутов активируем «режим редактирования» MActionToggleEditing.png и запустим «калькулятор полей» MActionCalculateField.png.

Вначале отделим дробную часть от целой, воспользуемся оператором деления по модулю, который возвращает остаток от деления. Создадим новое поле «DD1» с типом «десятичное число (real)», размер 20, точность 15. В выражении пропишем деление по модулю на 1:

"COORD" %1

Нажмем «ОК».

Regular minute grid2.png

Опять же с помощью калькулятора полей создадим поле «DD» (градусы) тип – целое, размер =3 и отделим целую часть от дробной, прописав выражение:

"COORD"- "DD1"

Снова воспользуемся MActionCalculateField.png и создадим поле «MM» (целое, размер 2) для расчета минут. Пропишем:

("DD1" * 60) - ("DD1" * 60)%1

(Примечание: выражение ("DD1" * 60) возвращает количество минут содержится в десятичном остатке градусов. Поскольку возвращенное значение содержит также десятичный остаток приходящийся на секунды, вычтем из него ("DD1" * 60)%1)

Создадим поле секунд (SS) (целое, размер 2) и пропишем выражение:

(("DD1" * 60)%1*60) - (("DD1" * 60)%1*60) %1

Теперь соберем из отдельных элементов (градусов, минут и секунд) результирующее поле подписи:

Создадим новое поле «label» (тип текст (string), длина 15) и пропишем выражение:

"DD" || 'º' || "MM" || '´' || "SS" || '´´ ' || "Type"

Сохраняем полученный слой MActionFileSave.png и завершаем редактирование MActionToggleEditing.png.

Подготовка рамки сетки

Оформление подписей градусной сетки

Создадим поле угла поворота «Angle» (тип – целое, размер – 3).

CASE WHEN "Type" = 'E' THEN  0 ELSE -90 END


Left, Center, Right Top, Cap, Half, Base, Bottom


Ссылки