Создание и оформление градусной сетки с минутным и секундным шагами в QGIS
Статья подробно излагает один из возможных алгоритмов создания градусной сетки, включая сетки с минутным и секундным шагом в 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 дополнительных узлов.
Перепроецируем проект в ту СК в которой предполагается работать (например в UTM). Сохраним также и созданный нами слой сетки в этой СК: в менеджере слоев, кликнем правой кнопкой мыши и выберем пункт «Сохранить как» и в открывшемся диалоговом окне в графе «Система координат» укажем «Система координат проекта». Важно: далее все слои будем создавать в этой СК.
Преобразование десятичных градусов в градусы, минуты и секунды
Откроем теперь таблицу атрибутов полученного слоя: в графе 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