Я нашел вопрос, очень похожий на мою проблему: как связать кадры данных в ArcGIS или QGIS? , Но решение для QGIS сейчас не работает (плагин Dual View больше не доступен).
Я хочу синхронизировать три представления:
Идея состоит в том, чтобы одновременно перемещать три вида карты с помощью мастер-карты в QGIS print composer.
Есть ли способ или плагин для этого?
источник
Единственный способ, который я нашел на данный момент, это создать небольшой скрипт на python, возможно, это могло бы переместиться в плагин, но у меня нет опыта в этом.
Это действительно базовый код, выбирающий правильного композитора и карты:
Другим вариантом будет сохранение начального масштаба в подчиненных картах для установки после нового экстента, если карты имеют разные формы, но в моем личном случае этого кода было достаточно:
Я открыт для улучшения этого решения (у меня почти нет опыта работы с ним
PyQGIS
).Работа с различными степенями и масштабами
Приведенный выше код прекрасно работает с той же степенью (и, следовательно, формой) и масштабом. Теперь у меня есть улучшенный код, протестированный с различными экстентами, формами и масштабами:
И полученный тест:
источник
Просто небольшой совет, чтобы сделать это без кода. Он менее эффективен, чем ответ Альдо, но, в конце концов, сработает, если он сделает окончательную карту. Вам также не нужно иметь главный вид, это экстент холста карты, который имеет значение:
и т.п.
Если вам нужна другая карта, чтобы стать мастером, просто нажмите на другую карту, затем «просмотрите экстент на холсте карты», прежде чем устанавливать другие.
Если вы хотите сохранить определенный вид на будущее, я рекомендую использовать панель пространственных закладок. Установите холст карты на выбранный экстент, затем нажмите «Установить» для отображения холста карты в каждом ведомом устройстве, которое вам нужно :)
источник
У меня была та же проблема, и я смог получить желаемый результат, используя выражения на зависимых картах. Это предполагает, что все карты имеют одинаковые размеры в макете.
Присвойте своей главной карте идентификатор элемента, например, «map1» (в нижней части свойств элемента)
На каждой зависимой карте добавьте выражение к каждому из значений экстента:
Код получит переменные для элемента composer 'map1', получит из него экстент в виде геометрии и, наконец, получит значение x_min из геометрии. Измените x_min на y_min, x_max и y_max соответственно.
Единственным недостатком является то, что вам нужно обновлять зависимые карты каждый раз, когда вы перемещаете основную карту. При экспорте он должен обновляться автоматически.
источник