2
01 mar 2015

Vous le savez certainement, mais QGIS est l'un des principaux logiciels de notre boite à outils du géomaticien Open Source. Néanmoins, même si je l'utilise quotidiennement, il ne passe pas une semaine sans que je découvre une nouvelle astuce ou une nouvelle fonctionnalité. Ce fut encore le cas cette fois-ci avec la fonctionnalité permettant la création d'atlas !

Mon problème était le suivant. Comment imprimer une carte, mettant en évidence chacune des entités de ma couche de données ? Moi qui pensais que cela allait être compliqué, c'est au final bien plus simple que prévu. Je vous livre ci-dessous la méthode à adopter.

Description du problème

Comme expliqué dans l'introduction, mon objectif était de mettre en évidence chacune des entités de ma couche de données. En gros, obtenir un résultat similaire à l'image ci-dessous pour les différents objets !

Modification automatique de la symbologie par Atlas

Depuis la version 2.2 de QGIS, il est possible de modifier automatiquement la symbologie des entités lors de la génération des cartes de type atlas. Cela grâce à l'utilisation de la variable $atlasfeatureid qui, comme son nom l'indique, pointe vers l'entité de la couche de donnée lors de la génération de chaque carte. De ce fait, il devient possible de créer une règle de symbologie précisant de mettre en évidence cette entité.

Pour cela, il est nécessaire de se rendre dans le menu style des propriétés de votre couche (dans QGIS et non dans le composeur d'impression). Deux règles devront alors être définies. La première qui servira à mettre en évidence notre entité et dont l'expression est la suivante $id = $atlasfeatureid. La seconde sera le style défini par défaut pour les autres entités. Ce qui donne dans l'interface de QGIS :

 

Et voilà, vous n'avez plus qu'à générer vos différentes cartes avec Atlas et vous verrez chacune des entités être mise en évidence.

Conclusion

Comme vous pouvez le constater, la démarche n'est pas bien compliquée. Néanmoins, même si cela reste simple, il m'aurait semblé plus logique de trouver cette fonctionnalité dans une option du composeur d'impression. Par exemple, une case à cocher qui spécifie si l'on souhaite mettre l'entité en évidence.

 

 

A propos de l'auteur: 
Arnaud Vandecasteele

Fervent défenseur de l'Open Source, Arnaud s'est spécialisé dans le développement d'application cartographiques web. OpenLayers, PostGIS ou encore Django sont autant d'outils qu'il manipule au quotidien.
S'il n'est pas en face de son ordinateur, vous le retrouverez un GPS à la main en train de cartographier pour OpenStreetMap, de faire voler son drone ou sur un tatami !

Commentaires

Bonjour,
Merci de nous faire partager vos découvertes...

"Ce fut encore le cas cette fois-ci avec le plugin Atlas."
Je ne suis pas sûr qu'utiliser le terme "plugin" est adapté ici, l'atlas étant une fonctionnalité Core de QGIS depuis la version 2.0. Ça peut être d'autant plus troublant qu'existe pour des versions 1.x un plugin Atlas.
L'idée d'une case à cocher dans le composeur faciliterait peut-être les choses pour l'utilisateur mais cette définition de style peut être affichée dans la légende (et pour l'instant, celle-ci ne pioche que dans la symbologie des couches). Et ne pas oublier que les fonctions atlas sont une porte ouverte à pleins d'autres fonctionnalités (ex : http://nathanw.net/2014/09/23/qgis-atlas-on-non-geometry-tables/ pour modifier dynamiquement les couleurs)

Bonjour Santanna,

 

Merci beaucoup pour votre commentaire.
Vous avez tout à fait raison concernant l'utilisation du terme "plugin". C'est maintenant corrigé.

Et merci surtout pour le lien vraiment très intéressant !

Arnaud