banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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

MathieuR
Membre
Lieu: aix-en-provence
Date d'inscription: 16 Feb 2009
Messages: 1690
Site web

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: 3943

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

MathieuR
Membre
Lieu: aix-en-provence
Date d'inscription: 16 Feb 2009
Messages: 1690
Site web

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

 

Pied de page des forums

Powered by FluxBB