Empêcher les étiquettes de texte de chevaucher d'autres marqueurs dans QGIS?

14

Existe-t-il un moyen dans QGIS d'empêcher les étiquettes de texte de chevaucher les icônes utilisées pour étiqueter une couche de points?

Dans l'exemple de carte ci-dessous, il y a deux couches:

  1. Couche de routes étiquetée à l'aide du nouveau moteur d'étiquetage.
  2. Un calque de points qui utilise des icônes svg pour afficher les boucliers routiers.

J'ai d'autres cas d'utilisation pour cela, comme empêcher le chevauchement des icônes de gare ferroviaire. Dans cet exemple, je pourrais simplement déplacer le point, cependant, dans d'autres cas, comme une station de métro, ce n'est pas une solution viable.

Une solution possible que j'envisage impliquerait:

  1. Ajout d'une colonne au fichier dbf de la couche de points.
  2. Remplir la colonne ajoutée avec Null ou un espace.
  3. Activation de l'étiquetage [nouveau style] de QGIS pour la colonne ajoutée.

Est-ce la voie à suivre ou existe-t-il une meilleure méthode?

Exemple de carte

QGIS info: j'utilise les versions 1.7.4 et une version récemment compilée de 1.8 sur Mac OS 10.7.4. Les versions Linux et Windows sont également disponibles pour moi.


Mise à jour des progrès : La méthode que j'ai décrite ci-dessus fonctionne bien que deux modifications du processus soient nécessaires.

  1. Au lieu d'utiliser un caractère d'espace ou un Null , un espace insécable doit être utilisé. Lors des tests que j'ai trouvés, les champs avec Null ne sont pas rendus et les champs avec seulement un espace sont convertis en Null . (Voir cette page Wikipédia pour savoir comment taper un espace insécable .)
  2. Lors de la définition des paramètres d'étiquetage des calques, dans l'onglet Avancé, définissez le Placement sur Over Point . Définissez également la priorité de manière à ce qu'elle soit plus élevée que tout autre calque étiqueté.

Selon la taille de l'icône utilisée, une expérimentation peut être nécessaire pour que les choses fonctionnent comme prévu. Selon les circonstances, il peut être plus facile d'utiliser plusieurs caractères plutôt que d'essayer d'augmenter le poids et / ou la taille de la police.

Exemple de carte 2

Testé avec QGIS 1.7 et récemment compilé de 1.8 sur Mac OS 10.7.4.

DMan
la source
1
Vous pouvez également répondre à vos propres questions. J'aimerais voter pour votre solution.
underdark
Vous pouvez faire la concaténation comme je l'ai fait: ici
jlSta

Réponses:

8

La meilleure solution cohérente que j'ai jusqu'à présent est conforme à ce que j'ai exposé ci-dessus. En supposant qu'un fichier SHP est utilisé, les étapes sont les suivantes:

  1. Ouvrez le fichier dbf avec une application de feuille de calcul telle que LibreOffice, Excel ou le plug-in QGIS Table Manager.
  2. Ajoutez une colonne au tableau. Si un type de données est requis, utilisez une chaîne.
  3. Remplissez les cellules avec un espace insécable . Une fois terminé, enregistrez les modifications. (Voir cette page Wikipédia pour savoir comment taper un espace insécable.)
  4. Ouvrez les paramètres d'étiquetage des calques pour le calque de points. Dans l'onglet Avancé, définissez le placement sur le point de dépassement et définissez la priorité de telle sorte qu'elle soit supérieure à tout autre calque étiqueté.
DMan
la source
2
En 2.14, vous n'avez même pas besoin d'ajouter une nouvelle colonne, il suffit de mettre '' comme étiquette
raphael
3

Je sais que c'est ancien mais vous pouvez ajouter une colonne "Coordonnée X" et "Coordonnée Y" (double précision) au tableau qui contient ces informations, puis aller dans l'onglet "Paramètres définis par les données" sous Étiquettes dans les propriétés de la couche et modifier Coordonnée X et coordonnée Y en conséquence. Une fois que vous avez fait cela, vous pouvez déplacer l'étiquette à main levée en utilisant le bouton Déplacer l'étiquette.

Jeff Cameron
la source
1

Je viens de poster une autre réponse à un problème similaire. L'approche utilise des symboles svg au lieu de couches et utilise un remplacement défini par les données pour définir le chemin vers un symbole svg distinct pour chaque valeur d'attribut, cp. ma réponse aux symboles au-dessus des étiquettes dans la carte QGIS

Jochen Schwarze
la source
0

Vous pouvez expérimenter le décalage de l'étiquette.

Je trouve que cela permet au positionnement de l'étiquette d'être plus dynamique, si je le fixe à 2 mm environ.

Willy
la source
Non, je n'ai pas essayé de faire ça. La principale raison pour laquelle je n'ai pas modifié le positionnement de l'étiquette est que sur d'autres zones de la carte (non illustrées), le réseau routier est considérablement plus dense. Dans l'exemple ci-dessus, le déplacement de l'icône d'environ 2 mm (dans toutes les directions) résoudrait le problème. Cependant, sur d'autres parties de la carte, cela pousserait probablement l'icône plus profondément dans une autre étiquette.
DMan
Essayez, l'étiquette se déplacera probablement vers une nouvelle position dynamique. Peut-être pas ce que vous voulez, mais la seule façon de le savoir est d'essayer. L'option que j'utilise se trouve dans l'onglet avancé du nouvel outil d'étiquette (qui se trouve dans la barre d'outils et non dans la boîte de dialogue des propriétés du calque).
Willy