Quelles sont les valeurs valides pour les paramètres d'étiquetage «définis par les données»?

9

J'utilise QGIS 1.8. Je voudrais personnaliser les fonctionnalités d'étiquette sur un fichier de formes existant en utilisant le nouveau moteur d'étiquette et son option "paramètres définis par les données". Je voudrais savoir quels devraient être les types de champ de la table d'attributs pour chacun des paramètres: les 7 options de police, les 2 options de tampon et les 6 options de position. Doivent-ils tous être des champs numériques, du texte ou les deux? Je souhaite créer ces champs correctement dans la table attributaire afin de pouvoir les mapper aux paramètres de champ d'étiquette. Je ne trouve nulle part d'informations sur les types de champs appropriés. Merci pour vos pensées.

Jan
la source

Réponses:

16

Il n'y a pas un ensemble complet de documentation pour les fonctionnalités d'étiquetage définies par les données, mais voici une ventilation de leurs valeurs, et comment elles sont utilisées par le moteur d'étiquetage PAL de QGIS dans la version 1.8:

  • Taille [ réelle ] Définit la taille de la police, bien que la façon dont le nombre est interprété dépend du paramètre de la couche (points ou unités de carte), qui ne peut pas être des données définies en 1.8.
  • Gras, Italique, Souligné, Barré [ entier ] Booléen de 1 ou 0 (activé / désactivé) pour styliser la police. Il est préférable d'utiliser une police de caractères qui contient en fait une police en gras ou en italique pour ces styles.
  • Color [ chaîne ] Une valeur de couleur nommée acceptée par la fonction publique QColor :: setNamedColor ( name ) . Un format hexadécimal régulier de #RRGGBBest recommandé .
  • Family [ string ] Un nom de famille QFont pour la correspondance des polices . Notez que vous pouvez également spécifier le nom de la fonderie. Consultez la description de QFont (dans la documentation de votre version de Qt) pour plus d'informations sur la correspondance des polices par nom.
  • BufferSize [ real ] Définit la taille du tampon en mm. Il n'y a pas d'option pour définir cela en unités de carte en 1.8. Le tampon se compose d'une copie remplie et barrée du texte de l'étiquette, mais derrière celui-ci. Le trait est appliqué sur la ligne, ce qui signifie que la mise en mémoire tampon visuelle au-delà du texte sera la moitié de la taille définie.

    Il y aura des artefacts visibles dans le tampon à de grandes tailles, par rapport à la taille du texte (problème de Qt avec la technique utilisée). Si la taille de police de l'étiquette est définie en unités de carte et que vous définissez un tampon en mm, il y aura des problèmes visuels avec les deux échelles à des taux différents lors du zoom sur l'écran, bien qu'ils puissent avoir un aspect cohérent lors de l'impression de la carte sur une échelle connue, pour laquelle vous devrez calculer le tampon correct en mm.
  • BufferColor [ chaîne ] Identique à la couleur du texte ci-dessus. Notez qu'en 1.8, ceci est appliqué à la fois au remplissage et à la course du tampon.
  • Distance de l'étiquette [ réelle ] Distance définie pour l'étiquette de l'entité , telle que déterminée par la solution de mise en page PAL dynamique pour le type de couche donné (sous l'onglet Avancé), par exemple au-dessus ou en dessous de la ligne, du point, etc.

    Remarque: cela ne semble que pour fonctionner lorsque vous n'avez pas «épinglé» l'étiquette vers le bas avec les coordonnées X et Y définies par les données, c'est-à-dire que l'emplacement de l'étiquette est toujours déterminé de manière dynamique. La distance est relative au paramètre de niveau de couche pour mm ou unités de carte sous l'onglet Avancé. Encore une fois, votre colonne de table devra être configurée pour le type de coordonnées de votre couche (par exemple, lat / long).
  • Coordonnée X, Coordonnée Y [ réelle ] Coordonnées définies dans le CRS de la couche , par exemple lat / long pour certains et mètres pour d'autres. L'emplacement que ces coordonnées définissent est le point de rotation de l'étiquette , qui peut changer par rapport à la technique de placement du moteur ou à la façon dont vous avez défini les alignements horizontal et vertical.

    Bien que QGIS puisse effectuer des transformations de coordonnées à la volée, il est préférable que vos couches d'étiquetage soient toutes dans le même CRS, il n'y a donc aucun problème avec le décalage des étiquettes en raison d'une transformation géniale. Étant donné que les valeurs de champ de colonne X et Y dans votre source de données sont relatives au CRS, vous aurez besoin d'une précision beaucoup plus élevée lorsque vous travaillez avec lat / long qu'avec des mètres, bien qu'elles aient toutes deux besoin d'une bonne largeur, par rapport à la précision de mappage souhaitée .

Les colonnes suivantes ne peuvent pas être définies de données à moins que X et Y ne soient déjà définis. Il s'agit d'une régression à partir de certaines fonctionnalités de l'ancien moteur d'étiquetage (comme la définition d'une rotation indépendante de X et Y), mais c'est ainsi que l'étiquetage avancé fonctionne actuellement en 1.8.

  • Alignement horizontal [ chaîne ] (gauche, centre, droite) Alignement horizontal du texte de l'étiquette par rapport au point de rotation de l'étiquette .

  • Alignement vertical [ chaîne ] (Bas, Base, Demi et Capuchon ou Haut) Alignement vertical du texte de l'étiquette par rapport au point de rotation de l'étiquette . Cap et Top sont traités de la même manière. La base est la ligne de base de la police.

    Remarque: La modification des alignements horizontaux ou verticaux après avoir défini X et Y entraînera un décalage du texte par rapport au point de rotation fixe de l'étiquette, éventuellement pas ce que vous voulez. Le point de rotation peut être différent de celui par défaut (gauche, bas) compte tenu de la méthode de placement (par exemple, le calque de point avec le point défini sera par défaut Centre, Demi, voir l'image). Il est préférable d'expérimenter avec l'outil Changer d'étiquette pour «voir» où se trouve le point de rotation et comment la modification des paramètres d'alignement affectera l'étiquette.

entrez la description de l'image ici
Étiquette avec les alignements au centre et à la moitié et déplacée vers un nouvel emplacement, décalée du point de fonction

  • Rotation [ réelle ] (0,00-360,00) Nombre de degrés de rotation dans le sens antihoraire de l'étiquette autour du point de rotation. L'outil Rotation de l'étiquette, lorsque vous utilisez la touche de modification Ctl (Cmd sur Mac) arrondit les incréments de rotation à 15 degrés.

Si vous êtes prêt à essayer les versions nocturnes de QGIS à partir de la branche principale , ou à le compiler vous-même, vous trouverez des travaux en cours dans ce domaine qui incluent déjà les éléments suivants:

entrez la description de l'image ici
Barre d'outils d'étiquetage avancée avec des icônes de «style SIG»

  • Outil Épingler / Détacher les étiquettes pour épingler ou détacher interactivement l'étiquette en stockant automatiquement les données de position d'étiquette du moteur PAL dans les champs X, Y et éventuellement Rotation de la table d'attributs. Outil compagnon pour mettre en évidence les étiquettes épinglées.

  • Outil Afficher / Masquer les étiquettes pour afficher ou masquer de manière interactive une étiquette en utilisant un nouveau champ de données défini appelé, assez étonnant, «Afficher l'étiquette».

  • Améliorations continues des caractéristiques de l'étiquette, telles que l'affichage dépendant de l'échelle, la transparence et le style de police.

dakcarto
la source
2

Vous pouvez essayer le nouveau plugin EasyCustomLabeling (http://hub.qgis.org/projects/easycustomlabeling) qui duplique une couche et ajoute ces champs d'étiquetage "définis par les données". Voici les types de définitions de champs utilisés dans ce plugin:

QgsField ("LblX", QVariant.Double, "numeric", 10, 2)
QgsField ("LblY", QVariant.Double, "numeric", 10, 2)
QgsField ("LblAlignH", QVariant.String, "varchar", 12)
QgsField ("LblAlignV", QVariant.String, "varchar", 12)
QgsField ("LblSize", QVariant.Int, "integer", 1)
QgsField ("LblRot", QVariant.Double, "numeric", 10, 10, 2)
QgsField ("LblBold", QVariant.Int, "integer", 1)
QgsField ("LblItalic", QVariant.Int, "integer", 1)
QgsField ("LblColor", QVariant.String, "varchar", 7)
QgsField ("LblFont", QVariant.String, "varchar",64)
QgsField ("LblUnder", QVariant.Int, "integer", 1)

J'espère que cela aide

rha
la source