Ich suche eine bessere Etikettierungslösung für meine Projekte. Es scheint schwierig zu sein - aber vielleicht bin ich nur blind?
Meine Projekte: Ich baue gedruckte Fahrradwanderbücher. Der Hauptskala ist 1: 75k und es gibt eine Stadtskala von 10k und eine Übersichtsskala von 200k. Da ich eine "kartografische" Qualität von Etikettenplatzierungen haben möchte, berühre ich jedes einzelne Etikett und verschiebe es an die beste Position. Ich muss dies für jede einzelne Skala tun, damit meine Beschriftungsspalten für 3 Skalen so aussehen ('Skala 1' steht für 10k 'Skala 2' für 75k und 'Skala 3' für 200k):
Bevor ich jedoch versuche, dies im Detail zu erklären, erstelle ich dieses einfache Beispielprojekt, in dem Sie meine (alte) Beschriftungslösung für drei Skalen sehen und testen können: http://www.map-site.de/tmp/LabelingExample.zip
Nun, es funktioniert aber:
- Sie benötigen Beschriftungsspalten für jede Skala
- Sie benötigen für jede Skala eine Ebene
Ich suche nach einer viel besseren Lösung ohne doppelte Ebenen und Tonnen von Spalten. Ich zähle auf deine kreativen Köpfe!
EDIT: Ich habe diese zwei sehr dichten Karten als Beispiele hinzugefügt:
Es gibt nur eine einzige mögliche Position für "St. Paulus Dom" und es ist kein Quadrant:
Jedes Etikett muss manuell verschoben werden. Einige der Beschriftungen befinden sich nicht in einem Quadranten.
Antworten:
Ich muss sagen, dass das, was Sie anfordern, etwas kompliziert ist, weil Sie möchten, dass die Beschriftung sowohl im kleinen als auch im großen Maßstab (beste Passform) deutlich sichtbar ist. Die Idee hier ist also, wie man den Punkt platziert, der in verschiedenen Maßstäben sichtbar sein kann.
Nach mehreren Tests stellte ich fest, dass Sie, anstatt mehrere Spalten für jeden Skalierungsbereich zu erstellen und Koordinaten für x und y an festen Punkten zu setzen, nur eine Spalte für Prioritätspositionen für jeden Punkt für die beste Position erstellen können, wie Sie unten sehen können (I. folgte den Speicherorten in Ihrer Datei):
Dann gehst du zu
Layer propoerties -> Labels -> Placement -> Offset from point
oderAround point
, beide sind in Ordnung, aber ich habe gewähltOffset from point
.Geben Sie unter
Quadrant
AuswählenData defined override -> Edit
die folgende Formel ein:Hier
"Priority"
ist die Position der im Feldnamen definierten PunktePriority
Sie müssen den Versatz verwenden, um die Punkte für eine bessere Sichtbarkeit zu verschieben, und ich habe die folgende Formel verwendet:
Hier ist die Ausgabe in verschiedenen Maßstäben:
Um zu sehen, was jede Zahl [0-8] an welchem Ort darstellt, sehen Sie sich bitte das folgende Bild an:
Sie können die Position der Beschriftungen steuern, indem Sie den Wert hinzufügen, der jeder Position entspricht. Leider können Sie dies nicht durch Klicken und Bewegen tun. Sie müssen dies in der Attributtabelle tun.
Aktualisieren:
Basierend auf Ihrer Anforderung, dass 9 Quadrantenpositionen nicht ausreichen, habe ich festgestellt, dass Sie, wenn Sie
Cartography
anstelle vonOffset from point
und Priorität auswählen, wie in der Abbildung unten, 12 Prioritätspositionen anstelle von 9 haben. Sie müssen dann ein Feld vomText
Typ erstellen Geben Sie nur die gewünschte Abkürzung für die beste Position 'TL', 'TSL', 'T' ... usw. ein. Sie können auch einen Abstand eingeben, um zu verhindern, dass das Etikett den Punkt abdeckt.quelle
Sie können die mehreren Ebenen mithilfe von Ausdrücken entfernen.
Nach dem, was ich in Ihrem Beispiel sehen konnte, besteht der Hauptunterschied zwischen den Ebenen in den
Data defined Coordinate X Y
Definitionen, die auf die verschiedenen x- und y-Skalenwerte verweisen.Sie können dies in einer einzelnen Ebene erreichen, indem Sie die Dropdown-Listen neben X und Y auswählen und Bearbeiten ... auswählen, um einen Builder für Ausdruckszeichenfolgen aufzurufen.
Für X können Sie so etwas wie verwenden
Und für Y können Sie so etwas verwenden
Dies sollte Werte im Maßstab 1 x, y verwenden, wenn der Kartenmaßstab kleiner oder gleich 1: 10.000 ist, und Maßstab 2 x, y, wenn der Kartenmaßstab kleiner oder gleich 1: 75.000 ist, und Maßstab 3 x, y für alles darüber hinaus .
Wenn Sie für jede Skala manuell positionieren müssen, sehe ich nicht, wie Sie von den Spalten Skala # -x und Skala # -y für jede von Ihnen definierte Ebene wegkommen können.
quelle