Le nouveau moteur d’étiquetage de QGis 2.12

Le moteur d’étiquetage de QGis vient de s’enrichir notablement avec la version 2.12. Nous verrons dans cet article les principales avancées:

Quadrant à partir des données
Priorité à partir des données
Contrôle sur l’action des polygones en tant qu’obstacles
Dessiner les étiquettes qui rentrent complètement dans un polygone
Étiquetage à base de règles

Quadrant à partir des données

Pour les étiquettes des couches de points, vous pouviez définir le quadrant de l’étiquette avec l’option Décalage par rapport au point. Dans ce cas, toutes les étiquettes de la couche étaient forcées sur le quadrant choisi. Maintenant vous pouvez lier le quadrant à utiliser pour chaque étiquette de la couche avec un champ de la table attributaire. Chaque étiquette sera forcée dans le quadrant indiqué par ce champ. Si la valeur du champ est null, l’étiquette sera placée suivant l’algorithme classique et sera positionnée automatiquement.

Tout d’abord, quelles sont les valeurs à utiliser? L’image suivante montre le lien entre le quadrant et la valeur à indiquer dans le champ de la table:

numéros de quadrant des étiquettes de qgis 2.12Pour configurer le placement de l’étiquette en fonction d’un champ (de type entier), que nous avons ici appelé « quadrant »:

configuration de l'option quaf=drant du placement des étiquettes de qgis 2.12Dans Propriétés de la couche, onglet Étiquettes -> Emplacement, cocher Autour du point, déployer Quadrant et sélectionner Type de champ: chaîne,entier, double, puis cocher le champ contenant les quadrants à utiliser.

Pour que les étiquettes soient placée de manière automatique sans tenir compte du quadrant, laissez la valeur du champ Quadrant à null.

Priorité à partir des données

Jusqu’à présent vous pouviez définir la priorité des étiquettes d’une couche par rapport aux autres couches. Maintenant il vous est possible de définir la priorité des étiquettes au sein d’une même couche, en fonction de la valeur d’un champ de la table attributaire.

Prenons par exemple les toponymes des villes. Vous pouvez forcer l’affichage des étiquettes en fonction de la population, si toutefois vous disposez de cette valeur dans la table attributaire. Les entités ayant une valeur plus élevée de ce champ seront prioritaires par rapport à celles ayant des valeurs plus faibles.

Pour configurer ce paramètre:

configuration de la priorité des étiquettes à partir des données dans qgis 2.12

Dans Propriétés de la couche, onglet Étiquettes -> Emplacement, dans le bloc Priorité  déployer Valeurs définis par les données et sélectionner Type de champ: chaîne,entier, double, puis cocher le champ contenant les valeurs à utiliser.

Définition d’une couche d’obstacles aux étiquettes.

Vous pouvez maintenant définir une couche indépendante de la couche étiquetée comme un obstacle pour les étiquettes. Cela veut dire que vous forcez les étiquettes à ne pas se superposer aux entités d’une autre couche.

Supposons que vous avez une couche Communes et une couche Cours d’eau. Vous souhaitez afficher les étiquettes avec les noms des communes mais vous ne souhaitez pas que ces étiquettes cachent des tronçons des cours d’eau. Vous allez donc définir la couche Cours d’eau comme un obstacle aux étiquettes de la couche communes.

Voici la couche Communes, étiquetée par défaut:

couche étiquetée par défaut dans qgis 2.12

On configure la couche Cours d’eau pour ne pas se superposer avec des étiquettes:

configuration de la copuche d'obstacles dans qgis 2.12Et on obtient le résultat suivant:

couche étiquetée avbec prise en compte des obstacles dans qgis 2.12Vous pouvez observer que l’étiquette située en haut à gauche se superpose au cours d’eau. Il n’y a pas de place suffisante pour respecter l’obstacle. Dans ce cas, l’étiquette est positionnées sans tenir compte de l’obstacle.

Contrôle sur l’action des polygones en tant qu’obstacles

Quand vous avez une couche continue de polygones, l’option par défaut du placement des étiquettes des autres couches, qui est d’essayer d’en placer le minimum sur la surface intérieure des polygones, n’est pas très heureuse.

Par exemple:

 

comportement par défaut des polygones comme obstacle dans qgis2.12

Les deux étiquettes qui débordent de la commune ne sont pas très esthétiques. Vous pouvez maintenant régler ce problème:

configuration des polygones en tant qu'obstacles dans qgis 2.12Ouvrez les propriétés de la couche Communes -> Étiquettes, sélectionnez l’onglet Rendu, puis sélectionnez dans Minimiser le placement des étiquettes l’option Par dessus les limites de l’entité.

Vous obtenez le résultat suivant:

résultat de minimiser la superposition sur les limites des entités de qgis 2.12

Attention: Vous devez étiqueter la couche de polygones pour que cette option soit prise en compte par les autres couches d’étiquettes.

Dessiner les étiquettes qui rentrent complètement dans un polygone

Dans Rendu vous avez une nouvelle option qui ne dessine que les étiquettes rentrant complètement dans le polygone correspondant.

Par exemple:

exemple d'étiquettesVous pouvez forcer QGis à placer les étiquettes totalement à l’intérieur ou s’il n’y a pas de place suffisante, à les omettre.

configuration d'étiquettes totaklement à l'intérieur des polygones de qgis 2.12Ouvrez les propriétés de la couche  -> Étiquettes, sélectionnez l’onglet Rendu, puis cochez la case Dessiner uniquement les étiquettes qui sont entièrement dans l’entité.

Vous obtiendrez un résultat comme celui-ci:

résultat de l'option

Étiquetage à base de règles

C’est l’option la plus puissante de cette nouvelle version du moteur d’étiquetage.

Prenons comme exemple la carte suivante:

carte sans mise en forme avec des règlesPour obtenir la même carte mais avec une mise en forme conditionnelle des étiquettes comme celle-ci:

exemple d'étiquettes avec mise en forme conditionnelle dans qgis 2.12Vous deviez renter une expression complexe, telle que celle-ci:

CASE WHEN length( "htmlname" ) > 13 AND strpos("htmlname",' ') > 6 THEN replace("htmlname",' ',' ') WHEN length( "htmlname" ) > 20 AND "htmlname" LIKE '%Golf Course' THEN regexp_replace("htmlname", 'Golf Course',' Golf Course') WHEN length( "htmlname" ) > 20 AND "htmlname" LIKE '%Nature Reserve' THEN regexp_replace("htmlname",'Nature Reserve',' Nature Reserve') WHEN length( "htmlname" ) > 20 AND "htmlname" LIKE '%Church Of England%' THEN regexp_replace("htmlname",'Church Of England', ' Church Of England ') WHEN length( "htmlname" ) > 13 AND "htmlname" LIKE '% Of The %' THEN regexp_replace("htmlname",'Of The','Of The ') WHEN length( "htmlname" ) > 13 AND "htmlname" LIKE '% of %' AND "fontcolour" <> 2 AND "fontcolour" <> 4 THEN regexp_replace("htmlname",' of ',' of ') WHEN "htmlname" LIKE '%/%' THEN regexp_replace("htmlname",'/','/ ') WHEN length( "htmlname" ) > 30 THEN replace("htmlname",' ',' ') ELSE "htmlname" END

Maintenant vous pouvez réaliser la même opération en rentrant des règles de mise en forme de la même façon que les mises en forme de styles:

entrée des règles de mise en forme des étiquettes avec des règles conditionnelles dans qgis 2.12Dans Propriétés de la couche -> Étiquettes, sélectionnez Étiquettes basées sur des règles

Voici les règles qui permettent d’avoir la même mise en forme que l’expression complexe précédente:

règles de mise en forme conditionnelle dans qgis 2.12

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *