Comment utiliser des expressions pour définir des styles d'étiquette dans QGIS

L' étiquette sur la carte fait en fait référence à l' annotation de la carte dans la cartographie traditionnelle . Les étiquettes sont des étiquettes et diverses descriptions textuelles sur la carte et constituent l'un des composants de base de la carte. Comme d'autres symboles sur la carte, une étiquette est également un symbole de carte.

La conception de l'étiquette comprend le contenu de l'étiquette, la police, la taille de la police, la couleur, l'emplacement, etc. Une bonne conception peut rendre la carte plus ordonnée, belle et ciblée, afin que les lecteurs puissent identifier plus rapidement la distribution des phénomènes géographiques.

Dans QGIS, les étiquettes soignées et belles ne peuvent pas être séparées de la combinaison profonde d'expression et de conception d'étiquettes. Les expressions peuvent être traitées à partir du contenu de l'étiquette, de la police d'étiquette, de la taille de police, de la couleur, de la position, de la direction, de l'espacement du texte, du contour du texte, de l'arrière-plan et du chevauchement. Les lignes directrices et d'autres aspects participent à la conception de l'étiquette, offrant une plus grande flexibilité pour les paramètres de style d'étiquette.

Contenu de l'étiquette

La conception d'étiquettes doit d'abord résoudre le problème de contenu, c'est-à-dire quel texte afficher sur la carte. Par défaut, QGIS utilise le mode "étiquette unique" pour ajouter des étiquettes à la carte. La valeur de l'étiquette provient d'un champ dans la table attributaire des couches. Cliquez sur le bouton déroulant sur le côté droit de [Valeur], vous pouvez voir tous les champs d'attribut correspondant à la couche actuelle, sélectionner n'importe quel champ et son contenu sera affiché sur la carte dans le style par défaut. En prenant les données du tremblement de terre en 2020 comme exemple, lors de la sélection du champ d' occurrence du tremblement de terre ( LOCATION_NAME ) comme contenu de l'étiquette, le style par défaut est le suivant:

Insérez la description de l'image ici
Dans les cartes thématiques, le contenu thématique doit être mis en évidence. Une seule étiquette de champ peut difficilement répondre à la demande de richesse. Il est nécessaire de combiner plusieurs champs pour construire le contenu de l'étiquette. Par exemple, marquez visuellement l'emplacement, l'heure et le niveau du tremblement de terre sur la carte, comme illustré dans la figure suivante:

Insérez la description de l'image ici
Pour obtenir l'effet de la figure ci-dessus, observez d'abord le contenu de la table attributaire des données sismiques:
Insérez la description de l'image ici
nous avons besoin de trois aspects d'informations: l' emplacement du séisme, le niveau du séisme (EQ_PRIMARY) et l'heure du séisme .

L'emplacement est extrait du champ d'attribut LOCATION_NAME .

Le niveau de tremblement de terre est extrait du champ d'attribut EQ_PRIMARY .

L'extraction de l'heure est un peu plus compliquée. À partir de la table attributaire, vous pouvez voir que les six champs ANNÉE, MOIS, JOUR, HEURE, MINUTE et SECONDE correspondent à l'année, le mois, le jour, l'heure, la minute et la seconde du séisme. Dans cet exemple, la précision de l'heure affichée sur la carte peut atteindre «jour», de sorte que les trois champs de YEAR, MONTH et DAY doivent être concaténés avec des expressions. Dans "Fonctions dans les expressions QGIS" , la fonction de concaténation concat a été analysée. Sa fonction est de concaténer plusieurs chaînes en une seule chaîne. Cet article utilisera un autre opérateur de chaîne "||" pour terminer la fusion de chaînes. La fonction de l'opérateur "||" est similaire à la fonction concat. La différence est: "||" ne peut connecter que deux chaînes, tandis que la fonction concat Il n'y a pas de limite au nombre de paramètres. Par exemple, pour implémenter un tiret pour connecter les champs année, mois et jour, l'implémentation des deux fonctions est:

concat(  "YEAR" ,'-' , "MONTH"  ,'-',  "DAY" 
"YEAR"  || '-' ||  "MONTH"  || '-' ||  "DAY"

Lors de la construction de l'expression, portez une attention particulière à la valeur NULL dans le champ de la table attributaire . Il s'agit d'une valeur spéciale, ce qui signifie que l'élément de données ne contient aucune donnée. Lorsqu'une valeur nulle participe au calcul d'une expression, dans la plupart des cas, le résultat du calcul de l'expression sera également une valeur nulle, qui peut ne pas être le résultat attendu, un traitement spécial est donc requis pour la valeur nulle. Par exemple, lorsque le niveau de tremblement de terre ( EQ_PRIMARY ) est une valeur nulle, nous voulons toujours afficher l'heure et l'emplacement du tremblement de terre sur la carte. Par conséquent, nous pouvons utiliser l' expression conditionnelle CASE WHEN ... THEN ... END pour gérer cette situation:

case when "EQ_PRIMARY" is NULL then '-' else  "EQ_PRIMARY" end

La logique de l'expression est la suivante: pour déterminer si la valeur du champ EQ_PRIMARY est NULL, si c'est le cas, retourner la chaîne «-», sinon, retourner la valeur du champ.

Cliquez sur le bouton d'expression sur le côté droit de [Valeur] et entrez le code suivant dans l'éditeur de code d'expression pour terminer le réglage du contenu de l'étiquette de tremblement de terre.

地点:' || LOCATION_NAME
||  '\n'  || 
'时间:' ||  "YEAR"  || '-' ||  "MONTH"  || '-' ||  "DAY" 
||  '\n'  || 
'地震等级:' ||  case when "EQ_PRIMARY" is NULL then '-' else  "EQ_PRIMARY" end

Insérez la description de l'image ici

Police de l'étiquette

Afin de mettre en évidence le contenu clé, différentes polices peuvent être définies pour l'étiquette. Par exemple, si le tremblement de terre en Chine utilise la police "Microsoft Yahei" et que d'autres pays utilisent le Times New Roman par défaut, cela peut être réalisé via [Remplacer par définition de données]. Cliquez sur le bouton [Remplacer par définition de données] sur le côté droit de [Police] pour ouvrir le générateur d'expression.
Insérez la description de l'image ici

Dans les données du tremblement de terre, le champ "PAYS" représente le pays où le tremblement de terre s'est produit. Par conséquent, ce champ peut être utilisé dans l'expression pour déterminer si le tremblement de terre s'est produit en Chine. Le code de l'expression est le suivant:

case when upper("COUNTRY") like '%CHINA%' then ‘微软雅黑’ end

L'instruction CASE WHEN… THEN… END est utilisée pour le jugement de condition.

La fonction supérieure convertit toutes les valeurs du champ "PAYS" en majuscules, ce qui peut masquer l'effet de la casse des lettres.

Like est un opérateur, ce qui signifie que si le paramètre à gauche de l'opérateur like correspond au modèle fourni, 1 est renvoyé.

% Est un caractère générique dans le langage SQL, représentant la correspondance de n'importe quel caractère, quel que soit le nombre de caractères. Dans cet exemple, tant que la chaîne contient «CHINA», quel que soit le nombre ou le nombre de caractères avant et après, la correspondance est réussie.

L'expression signifie: pour déterminer si le champ "PAYS" contient "CHINE", si c'est le cas, revenez à "Microsoft Yahei".

Insérez la description de l'image ici
Lorsque vous utilisez la fonction de [remplacement par définition de données], vous devez faire particulièrement attention à cela, contrairement aux autres générateurs d'expressions, non seulement l'aperçu du résultat du calcul de l'expression est fourni sous la zone d'édition du code, mais également le format attendu de l'expression est affiché en même temps, c'est-à-dire l'expression attendue Le type de valeur de retour et des exemples. Le format attendu est lié à l'emplacement où le constructeur d'expression est appelé. Par exemple, si vous cliquez sur le bouton [Remplacer par définition de données] sur le côté droit de [Police], l'expression devrait renvoyer une chaîne représentant la police.

Une fois la police modifiée, l'effet est le suivant:

Insérez la description de l'image ici

Taille de la police des étiquettes

En plus de définir différentes polices, la définition de différentes tailles de police peut également permettre de distinguer les étiquettes. L'expression peut définir la taille de la police en fonction des conditions. Par exemple, si un tremblement de terre se produit en Chine, il est représenté par une taille de police plus grande et les autres pays conservent la taille par défaut. Cliquez sur le bouton [Remplacer par définition de données] sur le côté droit de [Taille] pour ouvrir le générateur d'expression.
Insérez la description de l'image ici
Le contenu de l'expression servant à déterminer si elle appartient à la Chine est le même que le paramètre ci-dessus. La différence est que la valeur de retour requise pour la taille de police est un nombre à virgule flottante double précision (double) et que la valeur de retour doit être supérieure ou égale à 0 (voir la figure rouge ci-dessous) Le format attendu indiqué par la case), donc l'expression résultante est la suivante:

case when upper("COUNTRY") like '%CHINA%' then 14 else 10 end

Cette expression signifie: pour déterminer si le pays où le tremblement de terre s'est produit inclut la Chine (si le champ "PAYS" contient "CHINE"), si tel est le cas, définissez la taille de la police sur 14, sinon définissez la taille de la police sur 10.
Insérez la description de l'image ici
L'effet de la définition de la taille de la police est le suivant:
Insérez la description de l'image ici

Couleur de l'étiquette

L'expression peut également définir la couleur de l'étiquette selon les besoins. En prenant toujours le point culminant des lieux de tremblement de terre en Chine comme exemple, pour afficher les points de tremblement de terre en Chine avec des étiquettes de différentes couleurs, vous pouvez cliquer sur le bouton [Remplacer par définition de données] sur le côté droit de [Couleur] pour ouvrir le générateur d'expression.
Insérez la description de l'image ici
Il est également nécessaire de faire attention à la valeur de retour de l'expression pour définir la couleur, qui est une chaîne représentant une couleur hexadécimale commençant par «#», ou une valeur séparée par des virgules de rouge, vert et bleu. Par exemple, le rouge est «255,0» , 0 ', vous pouvez également donner directement le nom de la couleur, par exemple "rouge". Si vous ne savez pas comment la couleur souhaitée est représentée par une chaîne hexadécimale, vous pouvez cliquer sur la flèche déroulante sur le côté droit de [Couleur]. Après avoir trouvé la couleur, cliquez sur le bouton [Copier la couleur] pour copier la chaîne hexadécimale correspondante Dans l'expression.

case when upper("COUNTRY") like '%CHINA%'then '#e31a1c' end

L'effet obtenu par l'expression ci-dessus est de déterminer si le pays où le tremblement de terre s'est produit inclut la Chine (si "CHINE" est inclus dans le champ "COUNTRY"), si tel est le cas, définissez la couleur de l'étiquette sur "rouge", sinon, la couleur reste le noir par défaut.
Insérez la description de l'image ici
L'effet de la définition de la couleur de l'étiquette est le suivant:
Insérez la description de l'image ici

Emplacement de l'étiquette

La position par défaut de l'étiquette est placée sur le côté supérieur droit du point de manière à ne pas se recouvrir. Si la partie supérieure droite est couverte, l'étiquette est placée dans d'autres positions en fonction de la situation, comme illustré dans la figure ci-dessous:
Insérez la description de l'image ici

Lors de la définition d'étiquettes pour les éléments côtiers, nous espérons que les étiquettes peuvent apparaître dans la mer autant que possible pour réduire l'occlusion des éléments terrestres, c'est-à-dire pour obtenir les effets suivants:
Insérez la description de l'image ici
Le processus de réglage des effets ci-dessus est:

Dans le panneau [Style de calque], passez à l'onglet [Position]. La position de l'étiquette est divisée en trois paramètres: dessin, autour du point et décalage par rapport au point. Prenons l'exemple de [Pointer autour]. Ce paramètre utilise le centre de l'élément comme origine pour diviser le canevas de la carte en 9 quadrants: au-dessus (au-dessus), au-dessus à gauche (au-dessus à gauche), au-dessus à droite (au-dessus à droite), au centre (au-dessus) ), gauche, droite, en bas à gauche, en bas et en bas à droite, l'expression doit renvoyer une valeur de quadrant sous forme numérique. Par exemple, si les étiquettes en Corée du Nord et en Corée du Sud sont définies à gauche du point, l'expression doit renvoyer 3, qui représente le quadrant gauche.

Cliquez sur le bouton [Remplacer par définition de données] sur le côté droit du [Quadrant] pour ouvrir le générateur d'expression.

Insérez la description de l'image ici
Entrez l'expression suivante dans l'éditeur de code d'expression:

case when upper("COUNTRY") like '%KOREA%' then 3 end

La signification de cette expression est la suivante: pour déterminer si le champ "PAYS" contient "CORÉE", si c'est le cas, laissez l'étiquette être située dans le troisième quadrant, c'est-à-dire à gauche du point.
Insérez la description de l'image ici

résumé

Du point de vue de l'application d'expression, cet article explique comment utiliser les expressions pour définir le contenu de l'étiquette, la police, la taille, la couleur et la position de la police. Ça devrait être noté:

(1) La cartographie est un sujet très complet, mettant en évidence les points clés et enrichissant les éléments d'arrière-plan de la carte. La conception d'étiquettes à elle seule ne suffit pas. Elle nécessite plutôt une expression complète de la représentation symbolique de plusieurs éléments de la carte.

(2) Les expressions peuvent non seulement concevoir le contenu, la police, la taille de la police, la couleur et la position de l'étiquette, mais également d'autres styles tels que l'espacement des mots de l'étiquette, la direction des mots, le contour, l'ombre, l'arrière-plan, la ligne de repère, etc., peuvent être couverts par [par définition de données  Construire des expressions à définir, la méthode d'utilisation est à peu près la même que celle des autres processus de construction d'expression, donc je ne les répéterai pas une par une.

(3) Les exemples d'application des expressions ci-dessus suivent le principe de simplicité, j'espère qu'à travers ces exemples, chacun pourra comprendre l'usage de base et tirer des inférences. Outre l'utilisation du champ "PAYS", d'autres champs peuvent également être utilisés comme conditions d'expression. Par exemple, la mise en évidence de tremblements de terre d'un niveau supérieur à 6 ou celle d'un tremblement de terre avec plus de 10 morts peut être mise en évidence et accentuée en définissant différents styles d'expressions. Effet.

(4) Afin d'atteindre un objectif de dessin, il peut y avoir de nombreuses méthodes, l'expression n'est qu'une d'entre elles. Par exemple, si vous souhaitez mettre en évidence les points sismiques en Chine, vous pouvez extraire les points sismiques en Chine et les enregistrer en tant que calque séparé et définir un style différent pour le calque. Cependant, la méthode de stockage des couches séparément peut entraîner une certaine quantité de travail dans les mises à jour ultérieures des données.

Le contenu de l'utilisation d'expressions pour définir les styles d'étiquettes est présenté ici. Les expressions sont très puissantes et les barrières à utiliser sont relativement élevées. J'espère que cet article pourra vous aider à apprendre les expressions. S'il y a une compréhension inadéquate dans l'article, veuillez le signaler. le progrès.


Wu Jianling

6 août 2020


Copyright


Cet article se félicite de la réimpression, veuillez indiquer la source lors de la réimpression.


Insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/QGISClass/article/details/108139299
conseillé
Classement