Создание и оформление градусной сетки с минутным и секундным шагами в QGIS: различия между версиями
Bolotoved (обсуждение | вклад) Нет описания правки |
Bolotoved (обсуждение | вклад) Нет описания правки |
||
Строка 4: | Строка 4: | ||
[[Файл: 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 дополнительных узлов. | |||
=== Преобразование десятичных градусов в градусы, минуты и секунды === | |||
Откроем теперь таблицу атрибутов полученного слоя: в графе 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)] |
Версия от 15:50, 19 мая 2012
Статья подробно излагает один из возможных алгоритмов создания градусной сетки, включая сетки с минутным и секундным шагом в QGIS. Более подробно работа с регулярными сетками в QGIS описана в статье.
Создание сетки с минутным и секундным шагом
Создадим, для примера, сетку с шагом 1 минута по долготе и 30 секунд по широте.
Важно: убедимся, что проект находится в ГСК: Установки→Свойства проекта→Система координат. В графе системы координат выберем необходимую ГСК, например WGS84.
В окне параметров создания регулярной сетки (Вектор→Выборка→Регулярная сетка) зададим необходимый шаг сетки.
- Для минутной сетки шаг задается равным 1 / 60 = 0.0166666667.
- Для секундной: 1 / 3600 = 0.0002777778. Т. е. в нашем случае, для 30-ти секундного шага: 0.0002777778 * 30 = 0.0083333333
Отредактируем полученные значения минимальных и максимальных широт и долгот, округлив минимальные значения в меньшую сторону, а максимальные – в большую. (Например, минимальную широту, равную 63.3447529439 округлим до 63, а максимальную широту равную 64.0787479439 округлим до 65).
Произведем операцию вставки добавочных узлов в линии сетки (Вектор→Обработка геометрии→Добавить вершины). Мы рекомендуем вставлять хотя бы по одному узлу на каждый шаг сетки по долготе. В нашем случае сетка простирается от 70 до 73 градусов, т.е. на 73 - 70 = 3 градуса. Т.о. нам нужно добавить 60*3-1=179 дополнительных узлов.
Преобразование десятичных градусов в градусы, минуты и секунды
Откроем теперь таблицу атрибутов полученного слоя: в графе COORD у нас координаты линий сетки, но они выражены в десятичных градусах. Нам же нужно отображать координаты в градусах, минутах и секундах.
Воспользуемся для этого калькулятором полей: внизу таблицы атрибутов активируем «режим редактирования» и запустим «калькулятор полей» .
Вначале отделим дробную часть от целой, воспользуемся оператором деления по модулю, который возвращает остаток от деления. Создадим новое поле «DD1» с типом «десятичное число (real)», размер 20, точность 15. В выражении пропишем деление по модулю на 1:
"COORD" %1
Нажмем «ОК».
Опять же с помощью калькулятора полей создадим поле «DD» (градусы) тип – целое, размер =3 и отделим целую часть от дробной, прописав выражение:
"COORD"- "DD1"
Снова воспользуемся и создадим поле «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"
Сохраняем полученный слой и завершаем редактирование .
Подготовка рамки сетки
Оформление подписей градусной сетки
Создадим поле угла поворота «Angle» (тип – целое, размер – 3).
CASE WHEN "Type" = 'E' THEN 0 ELSE -90 END
Left, Center, Right Top, Cap, Half, Base, Bottom