Ist es möglich, nur eine Konturlinie für die Beschriftung auszuwählen?
Ich habe zahlreiche Bezeichnungen für jede Zeile und ich bevorzuge es, nur die Hauptbezeichnungen wie 1000 m
und zu verwenden1500 m
Ist es möglich, nur eine Konturlinie für die Beschriftung auszuwählen?
Ich habe zahlreiche Bezeichnungen für jede Zeile und ich bevorzuge es, nur die Hauptbezeichnungen wie 1000 m
und zu verwenden1500 m
Antworten:
In QGIS 2.6 (möglicherweise auch in früheren Versionen, ich weiß es nicht) können Sie dies im Abschnitt Layer-Eigenschaften, Labels
Registerkarte, tun Rendering
. Etwa in der Mitte der Liste der Renderoptionen befindet sich eine Schaltfläche, mit der Sie einen Ausdruck schreiben können, der die Liste der Features definiert, die tatsächlich beschriftet werden. Ihr Ausdruck wäre so etwas wie "Elevation" IN (1000, 1500)
. Hier ist die Schaltfläche (in Gelb). Ich habe diese so eingestellt, dass nur Konturen mit einem Höhenwert von 32 beschriftet werden:
Ein Ansatz wäre, die Konturebene zu laden und sie zu formatieren. Laden Sie dann dieselbe Ebene erneut und wenden Sie einen Filter an (klicken Sie mit der rechten Maustaste auf die Ebene und gehen Sie zu 'Filter ..'). Verwenden Sie einen Filterausdruck ähnlich dem in der Abbildung gezeigten. In meinem Fall wollte ich Hauptkonturen in vertikalen Abständen von 50 Metern und das Feld mit den Höhenwerten hieß "prop_value".
Wenn die gefilterte Ebene mit den Hauptkonturen geladen ist, bringen Sie Konturlabels an und verstärken Sie (falls erforderlich) den Linienstil wie gezeigt.
Der Filterausdruck:
("prop_value" % 50) = 0
wählt auch Konturen in vertikalen Abständen von 50 Metern aus. Funktioniert mit Spatialite-Datenbanken, bei Shapefiles sind wir uns nicht sicher.
Ich benutze diesen Ansatz, der das Beschriften und Anzeigen von Konturlinien nach Zustand ziemlich einfach macht.
Ich verwende die "Data defined properties" der Liniensymbolbreite und der Farben der Konturlinien mit einem Ausdruck (siehe Abbildung 1), mit dem Sie verschiedene Linienbreiten basierend auf benutzerdefinierten Bedingungen und einem ähnlichen Ausdruck für die Beschriftung anwenden können (siehe Abbildung 2).
Geben Sie einfach die erforderlichen Werte in die Ausdrücke ein, und das ist alles.
Dh wenn Sie andere Konturlinien als 500 m ausblenden möchten, können Sie diesen Ausdruck für die datendefinierten Eigenschaften des Liniensymbols verwenden:
CASE WHEN Elevation / 500 - floor(Elevation / 500) = 0 then
color_rgba(255,255,255,100)
else
color_rgba(255,255,255,0)
end
Verwenden Sie diesen Ausdruck zum Beschriften von nur 500 m Intervallen für:
CASE WHEN Elevation /500 - floor(Elevation / 500) = 0 THEN Elevation || ' m' END
Verwenden Sie zum Anwenden unterschiedlicher Linienbreiten einen Ausdruck wie diesen für die definierten Dateneigenschaften:
CASE WHEN Elevation / 100 - floor(Elevation / 100) = 0 THEN
0.25
WHEN Elevation / 50 - floor(Elevation / 50) = 0 THEN
0.15
ELSE
0.1
END
Ein anderer geeigneter Ausdruck ist "ELEV" LIKE '%00'
(Schritt 100m) oder "ELEV" LIKE '%00' OR "ELEV" LIKE '%50'
(Schritt 50m) oder "ELEV" LIKE '%0'
(Schritt 10m) usw., wobei "ELEV" mein Datenhöhenfeld ist. Die zweite Option funktioniert nur, wenn 50 ein Vielfaches des Intervalls ist (10 m oder 5 m ...).