Wählen Sie nur eine Konturlinie für die Beschriftung in QGIS?


12

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 mund zu verwenden1500 m


Wir sind uns nicht sicher, ob es sich um ein Duplikat handelt. Schauen Sie sich jedoch gis.stackexchange.com/q/89501/1297 und gis.stackexchange.com/q/59778/1297 an, um zu sehen, ob Sie näher an Ihrem Ziel sind Auf der Suche nach? Und dann denke ich, dass es Ihrer Frage helfen würde, wenn Sie einige Details dazu angeben, was Sie versucht haben und vielleicht, wo es schief geht.
SaultDon

Antworten:


13

In QGIS 2.6 (möglicherweise auch in früheren Versionen, ich weiß es nicht) können Sie dies im Abschnitt Layer-Eigenschaften, LabelsRegisterkarte, 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:

Bildbeschreibung hier eingeben


11

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.

Bildbeschreibung hier eingeben

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.


6

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

Screenshot 1 Screenshot 2


@catindri, bitte überprüfen Sie die Antwort ..
Kay

3

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 ...).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.