Je recherche une meilleure solution d'étiquetage pour mes projets. Cela semble difficile - mais je suis peut-être simplement aveugle?
Mes projets: je construis des livres de randonnées imprimés. L'échelle principale est de 1: 75k et il y a une échelle de ville de 10k et une échelle de vue d'ensemble de 200k. Parce que j'aime avoir une qualité "cartographique" de placement d'étiquettes, je touche chaque étiquette et la déplace vers sa meilleure position. Je dois le faire pour chaque échelle, donc mes colonnes d'étiquetage pour 3 échelles ressemblent à ceci ('échelle 1' signifie 10k 'échelle 2' pour 75k et 'échelle 3' pour 200k):
Mais avant d'essayer d'expliquer en détail, je construis ce simple exemple de projet où vous pouvez voir et tester ma (ancienne) solution d'étiquetage pour 3 échelles: http://www.map-site.de/tmp/LabelingExample.zip
Eh bien, ça marche mais:
- Vous avez besoin de colonnes d'étiquetage pour chaque échelle
- Vous avez besoin d'une couche pour chaque échelle
Je cherche une bien meilleure solution sans couches et tonnes de colonnes en double. Je compte sur vos esprits créatifs!
EDIT: J'ai ajouté ces deux cartes très denses comme exemples:
Il n'y a qu'une seule position possible pour "St. Paulus Dom" et ce n'est pas un quadrant:
Chaque étiquette doit être déplacée manuellement. Certaines étiquettes ne sont pas dans un quadrant.
Réponses:
Je dois dire que ce que vous demandez est un peu compliqué parce que vous voulez que l'étiquetage soit clairement visible à petite échelle ainsi qu'à grande échelle (meilleur ajustement). Donc, l'idée ici est de savoir comment placer le point visible à différentes échelles.
Après plusieurs tests, j'ai constaté qu'au lieu de créer plusieurs colonnes pour chaque plage d'échelle et de mettre des coordonnées pour x et y à des points fixes, vous ne pouvez créer qu'une seule colonne pour les positions prioritaires pour chaque point pour le meilleur emplacement, comme vous pouvez le voir ci-dessous (I suivi les emplacements dans votre dossier):
Ensuite, vous allez à
Layer propoerties -> Labels -> Placement -> Offset from point
ouAround point
, les deux sont OK, mais j'ai choisiOffset from point
.A
Quadrant
SélectionnezData defined override -> Edit
et entrez la formule suivante:Voici
"Priority"
l'emplacement des points définis dans le nom du champPriority
Vous devez utiliser le décalage pour déplacer les points pour une meilleure visibilité, et j'ai utilisé la formule suivante:
Voici la sortie à différentes échelles:
Afin de voir ce que chaque numéro [0-8] représente à quel endroit, veuillez regarder l'image suivante:
Vous pouvez contrôler la position des étiquettes en ajoutant la valeur correspondant à chaque position. Mais malheureusement, vous ne pouvez pas le faire par une approche «cliquer-déplacer». Vous devez le faire dans la table attributaire.
Mise à jour:
En fonction de votre exigence selon laquelle 9 positions de quadrant ne suffisent pas, j'ai trouvé que si vous sélectionnez
Cartography
au lieu deOffset from point
et sélectionnez la priorité, comme dans l'image ci-dessous, vous aurez 12 positions prioritaires au lieu de 9. Vous devez créer un champ deText
type, puis mettez seulement l'abréviation que vous voulez pour la meilleure position 'TL', 'TSL', 'T' ... etc. Vous pouvez également entrer une distance pour éviter que l'étiquette ne recouvre le point.la source
Vous pouvez vous débarrasser des couches multiples en utilisant des expressions.
D'après ce que j'ai pu voir dans votre exemple, la principale différence entre les couches réside dans les
Data defined Coordinate X Y
définitions pointant vers les différentes valeurs d'échelle x, y.Vous pouvez accomplir cela dans une seule couche en sélectionnant les listes déroulantes à côté de X et Y et en sélectionnant modifier ... qui fera apparaître un générateur de chaîne d'expression.
Pour X, vous pouvez utiliser quelque chose comme
Et pour Y, vous pouvez utiliser quelque chose comme
Cela doit utiliser les valeurs scale1 x, y si l'échelle de la carte est inférieure ou égale à 1/10 000 et l'échelle 2 x, y si l'échelle de la carte est inférieure ou égale à 1/75 000 et l'échelle 3 x, y pour tout ce qui est supérieur à cette valeur. .
Si vous devez positionner manuellement pour chaque échelle, je ne vois pas comment vous pouvez vous éloigner des colonnes échelle # -x et échelle # -y pour chaque niveau que vous avez défini.
la source