#1 Mon 28 May 2018 19:17
- Epipactis
- Participant occasionnel
- Date d'inscription: 28 May 2018
- Messages: 11
QGIS: Gestion automatisée de l'échelle
Bonjour à tous,
Je cherche un moyen d'automatiser l'échelle d'une carte, sans passer par l'atlas.
J'ai un modèle contenant une carte (Carte 1 : Carte principale sur le sujet de mon choix) ainsi qu'un encart contenant la Carte 2, dézoomé pour mieux localiser la carte 1, en utilisant un aperçu pour faire ressortir l'emprise de la carte 1. Je voudrais automatiser l'échelle de cette carte 2 pour qu'elle change lorsque je change l'échelle de la carte 1. (Ex : Echelle Carte 2 = 4x échelle Carte 1). Est-ce possible ?
Merci de votre aide.
Hors ligne
#2 Tue 29 May 2018 17:39
Re: QGIS: Gestion automatisée de l'échelle
Bonjour,
Il faut aller dans le composeur qui vous intéresse puis
Code:
Echelle > Editer
Afin de mettre une expression.
Hors, il n'y a pas de fonction ad hoc
En voici une que vous pouvez ajouter dans le constructeur de chaîne d'expression :
Code:
from qgis.utils import iface @qgsfunction(args='auto', group='Custom') def getCarteScale(feature, parent): myItems = iface.activeComposers()[0].items() cartes = filter(lambda x : isinstance(x, QgsComposerMap), myItems) carte1 = cartes[0] carte2 = cartes[1] newScale = carte1.scale() / 2 return(newScale)
Par contre, il suppose que c'est le premier composeur qui est pris en compte
Ainsi que la première carte qui sert de référence
A changer éventuellement
Pour avoir l'échelle :
Code:
getCarteScale()
geodata au cerema et petits billets en géomatique
Hors ligne
#3 Tue 29 May 2018 17:43
- Epipactis
- Participant occasionnel
- Date d'inscription: 28 May 2018
- Messages: 11
Re: QGIS: Gestion automatisée de l'échelle
Merci de votre réponse, j'ai entre temps réussi à trouver une solution sous Qgis 3.0 :
J'utilise :
Code:
map_get(item_variables ('carte_principale'), 'map_scale')
afin d'obtenir l'échelle de la carte principale, que je peux ensuite multiplier par le coefficient de mon choix. Cela ne marchait pas au début car il ne faut pas que l'ID de la carte soit un texte mais uniquement un chiffre ou un nombre (apparemment vu que c'est comme ça que j'ai réussi à faire marcher cette expression).
Hors ligne
#4 Wed 30 May 2018 10:27
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3946
Re: QGIS: Gestion automatisée de l'échelle
Bonjour,
Cela ne marchait pas au début car il ne faut pas que l'ID de la carte soit un texte mais uniquement un chiffre ou un nombre (apparemment vu que c'est comme ça que j'ai réussi à faire marcher cette expression).
Je viens de tester et effectivement il faut que l'ID soit numérique ce qui est peu cohérent à mon sens. Ca marchait avant. Bug signalé à https://issues.qgis.org/issues/19063
Hors ligne
#5 Thu 31 May 2018 09:22
Re: QGIS: Gestion automatisée de l'échelle
Merci pour le retour, epipactis
Du coup, la solution qui j'ai donnée s'appliquera à QGIS < 3.0
On pourrait d'ailleurs affiner ma fonction afin de choisir la composition et la carte de façon plus précise
geodata au cerema et petits billets en géomatique
Hors ligne