Est-il possible d'écrire une expression d'étiquette en qgis qui affiche l'étiquette à une coordonnée donnée?

15

J'utilise le générateur d'expression QGIS pour les propriétés d'étiquette de mes données.

Est-il possible de mettre différentes parties de l'étiquette dans différentes coordonnées sur la carte?

Par exemple, j'ai un linestring et je voudrais avoir "A" affiché au début du linestring et "B" à la fin de celui-ci.

benoitespinola
la source

Réponses:

22

Une méthode consiste à utiliser l' étiquetage basé sur des règles et à ajouter deux règles pour "A" et "B".

  1. Accédez à Layer Properties > Labelset remplacez l'option No labelspar Rule-based labelling. Ajoutez ensuite une règle en cliquant sur l'icône verte plus:

    Étiquetage basé sur des règles

  2. Définissez les options pertinentes, comme indiqué Label with(utiliser quelque chose 'A') et le Coordinate X Y. Pour la coordonnée x, cliquez Edit...et utilisez $x_at(0)pour placer l'étiquette au début de la chaîne de lignes; pour la coordonnée y, utilisez $y_at(0).

    Options de règle

  3. Répétez l'étape 2 pour "B" mais pour les coordonnées xy, utilisez $x_at(-1)et $y_at(-1)respectivement pour la fin de la chaîne de lignes.

  4. Lorsque vous cliquez sur Appliquer , nous espérons que vous devriez voir quelque chose comme ceci:

    Lignes avec étiquettes

Joseph
la source
1
Merci de partager votre solution! Je vais y regarder de plus près. Je suis assez nouveau chez QGIS et la courbe d'apprentissage est encore à ses débuts.
benoitespinola
@benoitespinola - Toutes mes excuses pour ne pas avoir répondu (je réponds normalement aux commentaires)! Je vous souhaite la bienvenue et je suis sûr que vous vous habituerez à QGIS très rapidement :)
Joseph
11

Il existe une autre façon de le faire en utilisant la symbologie plutôt que l'étiquetage qui pourrait fonctionner pour vous:

- Si vous souhaitez un texte différent pour différentes fonctionnalités, ajoutez deux champs à vos données, un pour votre texte de fin et un pour le texte de départ. Ce n'est pas nécessaire si vous voulez juste 'A' et 'B' à la fin des lignes.

  • Symbolisez votre calque de lignes, puis ajoutez un nouveau calque de symboles -> définissez-le sur une ligne de repère sur le premier sommet
  • Définissez le type de symbole sur un marqueur de police
  • Réglez le marqueur sur 'A' ou définissez la valeur pour qu'elle corresponde au champ de départ de votre table attributaire de calques
  • Muck avec la taille et la rotation, etc., comme vous le feriez avec un marqueur standard.

Répétez pour ajouter le «label» de fin.

entrez la description de l'image ici

Ed Rollason
la source
Agréable! Merci pour votre solution! Je vais également l'essayer. :)
benoitespinola