Skip to Content

QGIS 2.0 Script pour exporter un "atlas par valeur unique"

Type : script python pour scriptrunner
Licence : GPL

Suite à une discussion sur le forum, j'ai retrouvé le code d'un plugin python QGIS que j'avais commencé mais jamais fini.
Après quelques adaptations ,je fournis ici un script (QGIS >= 2.0) pour réaliser un export de mise en page par valeur unique d'une couche.
Ce script s'utilise avec l'extension script runner (cf. l'article de gene sur le portail).

Réglages et particularités

  • La couche utilisée est celle sélectionnée dans le contrôle des couches.
  • Le dossier de sortie des exports est le sous dossier (par rapport au projet qgis) export (à créer avant de lancer le script s'il n'existe pas).
  • Le nom de champ de valeurs uniques utilisé est "UV" (il doit être créé si besoin).
  • Le format de sortie est png.
  • Le composer (mise en page) utilisé est le premier.

Expressions utilisables dans la mise en page

Les expressions suivantes sont utilisables dans les zones de textes de mise en page :

$UV_VALUE() Valeur unique
$UV_PAGE() Numéro de valeur unique courante
$UV_NUM() Nombre de valeurs unique
$UV_NUM_ROWS() Nombre de lignes dans la table attributaires pour la valeur unique courante
$UV_PROJECT_PATH() Chemin du dossier contenant le projet QGis (utile pour créer le chemin d'une image en mode html)
$UV_FIELD(NOM_CHAMP) Affiche la valeur du champ pour cette valeur unique (si plusieurs lignes, la 1ère ligne est prise en compte)
$UV_MAX(NOM_CHAMP) Valeur maximale du champ pour la valeur unique en cours
$UV_MIN(NOM_CHAMP) Valeur minimale du champ pour la valeur unique en cours
$UV_CONCAT(NOM_CHAMP) Concaténation des valeurs du champs pour cette valeur unique

 

Projet exemple

Un projet de test basé sur la couche des départements (IGN® GeoFla) permet de voir ce qu'on peut faire avec le script (notamment avec les expressions de mises en page et le rendu html).

Le script est ici utilisé pour obtenir une carte par région :

exemple


EDIT : mise à jour avec ajout d'une version du script pour QGIS 1.x







0

Commentaires

ça ne marches plus!

Bonjour,

j'ai utilisé cet script dizaines de fois: c'est formidable! Mais, aujourdui j'ai reçu cet message:

Traceback (most recent call last):
File "C:/Users/pc/.qgis2/python/plugins\scriptrunner\scriptrunner.py", line 553, in run_script
user_script.run_script(self.iface)
File "C:/FileProgrammini/QGis/script\UV_EXPORT_2.py", line 46, in run_script
substring += "'" + uv.replace("'", "''") + "'"
AttributeError: 'QPyNullVariant' object has no attribute 'replace'

Je ne comprend pas que-ce-que c'est passé... Est-ce que quelqun peut m'aider?
Merci!
Luca - Italie

ça ne marches plus... resolu!

Dans mon fichier il y avait des lignes ou le champ UV etait vide... maintenant ça marches comme il faut! Donc c'etait ma faute... le script est genial! ...comme toujours...

Luca - Italie

Merci

Bravo!
Merci beaucoup pour ce script et pour la clarté de l'exemple qui aide beaucoup à comprendre comment ça fonctionne.

Le script ne fonctionne plus ...

Bonjour,
La discussion (http://www.forumsig.org/showthread.php/37685-G%C3%A9n%C3%A9rer-une-s%C3%...) est restée sans suite, le script ne fonctionne plus, les derniers messages relatent le problème. Est-ce un changement lié à la nouvelle version de Qgis (2.8 ou avant) ?

Je suis impatiente qu'il refonctionne ! Si quelqu'un saurait quoi faire ?
Merci !

problem de version?

Bonjour,
desolée pour mon mauvais français...

J'ai telechargé le script (version 2.x) mais j'ai obtenu cette reponse
Traceback (most recent call last):
File "C:/Users/pc/.qgis2/python/plugins\scriptrunner\scriptrunner.py", line 553, in run_script
user_script.run_script(self.iface)
File "C:/FileProgrammini/QGis/script\UV_EXPORT_2.py", line 46, in run_script
substring += "'" + uv.replace("'", "''") + "'"
AttributeError: 'QPyNullVariant' object has no attribute 'replace'

Je n'ai pas compris ou est le probleme...
Merci pour votre aide
Luca (Pise - Italie)

Enfin j'ai reussi!Merci...

Enfin j'ai reussi!Merci... vive la France!

super, quel était le problème?

Comment avez-vous réussi, j'ai le même problème ?
Merci

Bonjour

J'ai la même erreur, est ce que quelq'un d'autre y est confronté ?

Presque parfait

Bravo et merci pour ce script qui est tout simplement impressionnant.

J'ai pu générer un atlas de répartition de 180 espèces d'oiseaux en moins de 8 minutes, avec un rendu génial et personnalisable dans le script.

Il faut juste veiller à ne pas mettre d'accent dans le nom de la table (et du champ de valeur unique si vous personnalisez le script).

Sinon, lorsque j'insère une légende dans ma composition et que j'active le décompte des entités pour la couche de valeurs uniques, seul le nombre total d'entités est recalculé pour chaque valeur unique, pas le nombre par catégorie de style. Dommage ! Il y a certainement une parade mais laquelle ?...

Merci encore.

Couplage à l'édition d'atlas?

Bonjour,

Ce script est vraiment séduisant! C'est une des 2 choses qu'il manque à la génération d'atlas de QGIS 2.x pour être complet.

En fait j'aimerais faire aussi évoluer l'emprise de la carte pour chaque page. Pour reprendre le projet en exemple, ça serait un zoom sur la région concernée au lieu d'une vue générale du pays.

Merci
Romary Munier

à priori, pas compatible à la version QGIS 2.0

Bonjour,

Je viens d'essayer sur QGIS 2.0, mais ça ne fonctionne pas, j'ai ce message d'erreur:
Cette extension est incompatible avec cette version de QGIS
Extension conçue pour la version 1.x de QGIS

J'ai testé sur la version 1.8, et j'ai : This plugin is broken.

Bien cordialement

Bonjour, Vous avez bien

Bonjour,

Vous avez bien téléchargé le bon script (il y en a un pour Qgis 1.x et un pour Qgis 2) ?

Comme indiqué dans l'article, vous utilisez bien l'extension Script Runner pour lancer le script ?

 

Si vous avez encore des problèmes, vous pouvez le signaler sur cette discussion du forum :

http://www.forumsig.org/showthread.php/37685-G%C3%A9n%C3%A9rer-une-s%C3%...

Il ne s'agit pas d'un plugin

Bonjour

As tu bien fait attention qu'il ne s'agit pas d'un plugin mais d'un script à utiliser avec script runner comme précisé dans l'article avec le lien vers un article sur script runner ?

Il y a une version du script pour la version 2 de qgis et une pour la version 1.

Autant pour moi, en effet,

Autant pour moi, en effet, j'ai pris ça pour un plugin...
En effet, il fonctionne bien!!
Désolé pour ce commentaire un peu rapide!

date des données

Bonjour
Est il possible de mettre en évidence par un jeu de couleur (rouge et bleu par exemple) des données de différentes dates (avant ou après une date) ?