Автоматичне обертання карти в композиторі карти QGIS


10

Вся справа в тому, що мені цікаво зробити можливість обчислення обертання карти в композиторі карти. У мене є багато карт в одному файлі з власними параметрами проекції, і я хотів би визначити обертання карти в композиторі карти на основі формули проекції (чи ще чого?)

наприклад, розташування однієї конкретної карти в проекті:

введіть тут опис зображення

Проекція є

введіть тут опис зображення

На карті карта композитора виглядає так

введіть тут опис зображення

І з обраним кутом повороту для карти з їх параметрами проекції:

введіть тут опис зображення

Кут повороту карти різний для кожної карти залежно від її розташування та параметрів проекції.

Чи можливо автоматизувати цей процес і обчислити кут повороту карти автоматично, бо не знаходьте це значення вручну кожен раз (я хотів би створити універсальний композитор для всіх карт за допомогою меню генерації атласу)?


1
Ви хочете повернути функцію так, щоб вона була паралельна краям кадру карти? Не могли б ви обчислити азимут однієї із сторін функції та використати її для обертання? Якби це була лінія, якась на зразок обертання = градусів (atan (abs ((y1-y2) / (x1-x2))))) дав би вам кут у градусах. Тоді 90 - обертання погодило б його з рамкою карти.
міксбред'є

2
Ви використовуєте атлас? Якщо ви генеруєте шар покриття, використовуючи інструмент «Орієнтований мінімальний обмежувальний ящик», то цей шар буде містити атрибут обертання, який можна прив’язати до обертання елемента карти за допомогою властивостей, визначених даними.
ndawson

@mixedbredie, Так, я хочу повернути свою карту так, щоб межі карти були паралельними кадру карти на полотні карти. Я намагався обчислити азимут, але проблема полягає в тому, що мій шар з картами є багатокутним, і немає жодної інформації про те, що перша точка - це ліва верхня вершина чи інша певна вершина (справа-нижня тощо). Отже, кут майже кожного разу не задовольняє
Джейн

Рішення, запропоноване @ndawson, є пригощанням. Використовуйте новий шар обмежувального поля в якості прихованого шару покриття, і все вирівняється.
міксбред'є

1
Відкрийте панель інструментів для обробки (Ctrl + Alt + T) і знайдіть "орієнтований" - ви побачите інструмент під геологічними алгоритмами QGIS> Загальні векторні інструменти.
міксбред'є

Відповіді:


3

Нижче рішення, знайдене @ndawson в коментарях до питання. Будь ласка, коментуйте та покращуйте цю відповідь.

Запустіть із панелі інструментів для обробки орієнтований інструмент мінімального обмеження на сітці конвертів карти, яку ви вже використовуєте.

Орієнтований інструмент для обмеження коробки

Це створить шар, який повинен бути повністю ідентичним вашому вихідному шару. Ви знайдете в таблиці атрибутів поле ANGLE

Поля OBB

Тепер ви можете використовувати це поле ANGLE у композиторі для заповнення визначеного даного поля для обертання:

Дані, визначені кутом

Здається, проблема полягає у тому, що кут не завжди простий у використанні, оскільки це залежить від способу виготовлення початкових багатокутників. Я зробив кілька тестів, і це залежить, яким чином ви намалювали свої вихідні багатокутники. Можливо, вам доведеться відповідно змінити значення атрибутів поля ANGLe:

(червоний колір - оригінальні багатокутники, чорним кольором - полігони інструменту OMBB). Я оцифровував приклади подібних багатокутників двома різними способами (вправо або вліво)

Приклад OMBB

Щоб повернути значення кута до початкового шару, ви можете використовувати операцію об'єднання просторового розташування.


Дуже дякую! Я уважно ознайомився з вашою детальною відповіддю! Але проблема здається більш складною. Я маю шар з усіма картами та їх проекціями в таблиці атрибутів для кожної карти. Початковий шар із набором карт у WGS84, але, готуючи карту, я встановлюю проекцію на полотні карти, взяті з таблиці атрибутів (що відрізняється для кожної карти), і мені потрібно значення обертання карти в ЦІЙ ПРОЕКТІ. Отже, я повинен зберегти кожну карту у власній проекції, а потім запустити OMBB для полігону. Я перевіряв деякі карти, але значення кута повороту непристойно відрізняється від обчисленого через OMBB
Jane

Було б чудово обчислити значення кута повороту в композиторі карти, грунтуючись на формулі проекції в таблиці атрибутів
Джейн

Нелегко ! Я не бачу, як ви могли це зробити простим способом, особливо для кута повороту. Існує спосіб проектувати дані за допомогою функції "перетворити", але я сумніваюся, що вона буде працювати для будь-якого іншого, а не для координації. (Повертає геометрію, перетворену з джерела CRS в CRS призначення. Синтаксис: перетворення (geom, source_auth_id, dest_auth_id) - Приклад: geom_to_wkt (перетворення ($ геометрія, 'EPSG: 2154', 'EPSG: 4326'))
gisnside
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.