J'ai trouvé une question très similaire à mon problème: comment lier des trames de données dans ArcGIS ou QGIS? . Mais la solution pour QGIS ne fonctionne pas maintenant (le plug-in Dual View n'est plus disponible).
Je souhaite synchroniser trois vues:
L'idée est de déplacer les trois vues de carte en même temps avec une carte principale dans QGIS print composer.
Existe-t-il un moyen ou un plug-in pour le faire?
la source
Le seul moyen que j'ai trouvé à ce moment pour créer un petit script en python, peut-être que cela pourrait migrer dans un plugin mais je n'ai aucune expérience à ce sujet.
Est un code vraiment basique, sélectionnant le bon compositeur et les bonnes cartes:
Une autre option serait de maintenir l'échelle initiale dans les cartes esclaves à définir après la nouvelle étendue si les cartes ont des formes différentes, mais dans mon cas personnel avec ce code était suffisant:
Je suis ouvert à l'amélioration de cette solution (je n'ai presque aucune expérience avec
PyQGIS
).Faire face à différentes étendues et échelles
Le code ci-dessus fonctionne très bien avec la même étendue (et par conséquent, la forme) et l'échelle. Maintenant, j'ai un code amélioré testé avec différentes étendues, formes et échelles:
Et le test résultant:
la source
Juste un petit conseil pour le faire sans code. C'est moins efficace que la réponse d'Aldo, mais cela fait finalement l'affaire si c'est pour faire une carte finale. Vous n'avez pas non plus besoin d'avoir une vue principale, c'est l'étendue du canevas de carte qui compte:
etc.
Lorsque vous avez besoin d'une autre carte pour être un maître, cliquez simplement sur l'autre carte, puis "afficher l'étendue dans le canevas de carte" avant de définir les autres.
Si vous souhaitez conserver une vue spécifique pour plus tard, je vous recommande d'utiliser le panneau de signets spatiaux. Définissez le canevas de carte dans une mesure choisie, puis cliquez sur Définir pour mapper le canevas dans chaque esclave dont vous avez besoin :)
la source
J'ai juste eu le même problème et j'ai pu obtenir le résultat souhaité en utilisant des expressions sur les cartes dépendantes. Cela suppose que toutes les cartes ont les mêmes dimensions dans la mise en page.
Donnez à votre carte principale un ID d'élément, par exemple «map1» (en bas des propriétés de l'élément)
Sur chaque carte dépendante, ajoutez une expression à chacune des valeurs d'étendue:
Le code obtiendra les variables de l'élément de compositeur 'map1', obtiendra l'étendue en tant que géométrie et obtiendra finalement sa valeur x_min de la géométrie. Modifiez x_min en y_min, x_max et y_max en conséquence.
Le seul inconvénient est que vous devez actualiser les cartes dépendantes chaque fois que vous déplacez la carte principale. Lors de l'exportation, il devrait cependant se mettre à jour automatiquement.
la source