Nur Punktmarkierungen anzeigen, wenn Beschriftungen in QGIS angezeigt werden?


8

Gibt es eine Möglichkeit, eine QGIS-Stilregel zu definieren, um nur Punktmarkierungen anzuzeigen, wenn deren Beschriftung angezeigt wird?

Mein Ziel ist es, alle Punkte auszuschließen, die aufgrund einer Kollision zwischen Beschriftungen nicht beschriftet sind.

Beispiel:

wie man Punkte wechselt, die unsichtbar sind, wenn ihre Beschriftungen zusammenbrechen


Können Sie einige Screenshots Ihrer Attributtabelle und der auf der Karte angezeigten aktuellen Punkte bereitstellen?
Whyzar

@whyzar Beispielbild wurde hochgeladen
Jakob

2
Die Kollision kann auch verringert werden, wenn Sie auf der Registerkarte Rendern die Option "Etiketten von Abdeckungsmerkmalen abhalten" aktivieren.
MAP

Ich glaube nicht, dass das möglich ist. Nichts in der API, um zu überprüfen, ob ein Label sichtbar ist: qgis.org/api/classQgsLabel.html
HeikkiVesanto

Es wurde eine weitere Frage gestellt , die die Notwendigkeit / den Wunsch abdeckt, festzustellen, welche Merkmale gekennzeichnet sind oder nicht. Jede nützliche Antwort darauf kann jemandem einen neuen Blickwinkel geben, um sich diesem zu nähern.
Phil G

Antworten:


3

Dies ist nicht ideal, aber wenn Sie damit einverstanden sind, dass das Etikett immer auf der Markierung angezeigt wird, können Sie einen Hintergrund auf Ihrem Etikett als Problemumgehung verwenden.

  1. Gehen Sie zu Ebeneneigenschaften und wählen Sie unter Stil "Keine Symbole" (ja, Sie haben das richtig gelesen).
  2. Wählen Sie unter Beschriftungen im Untermenü die Option Hintergrund (sieht aus wie ein Autobahnsymbol). Normalerweise verwende ich eine SVG, aber ein Kreis kann für das, was Sie wollen, gut funktionieren.
  3. Legen Sie im Untermenü Hintergrund Ihren Größentyp fest: Puffer oder Fest. Mit Buffer wird das Symbol vergrößert, bis es groß genug ist, um den gesamten Text zu erfassen. Ich gehe also davon aus, dass Sie dies korrigieren möchten. Im folgenden Beispiel wird Puffer verwendet.
  4. Wählen Sie oben im Abschnitt Beschriftungen das Feld aus, mit dem Sie beschriften möchten, oder geben Sie einen Ausdruck ein.
  5. Stellen Sie sicher, dass die Platzierung nicht versetzt ist.

Nachteile:

  1. Erschwert die Anzeige des Symbols in einer Legende in einem Druckkomponisten (es gibt Problemumgehungen, indem Sie eine weitere Ebene erstellen und im Inhaltsverzeichnis darauf verweisen, bevor Sie Ebenen deaktivieren und sperren).
  2. Der Text wird auf dem Symbol zentriert. Sie können Leerzeichen an der Vorderseite des Etiketts verketten, um es nach rechts zu verschieben. Dann werden jedoch mehr andere Etiketten verdeckt und nicht angezeigt. Sie haben keine Möglichkeit, Beschriftungen um Punkte zu verschieben, um den geringsten Konflikt zu vermeiden.
  3. Sie verlieren viele Funktionen beim Formatieren von Symbolen, z. B. Farbskalen.
  4. Es scheint, dass Etikettenkonflikte manchmal schwerwiegender sein müssen, um das Etikett zu verbergen - meine überschneiden sich manchmal, ohne etwas zu finageln. Dies kann auf die Verwendung des Puffergrößentyps zurückzuführen sein.

Ein Beispiel, bei dem ein Dateiname aus "field_1" übernommen und die Erweiterung ".jpg" entfernt wird, um Beschriftungstext für Fotostandorte zu erstellen:

die Einstellungen

Die Ergebnisse:

vergrößert: vergrößert und verkleinert: herausgezoomt

(Hinweis - Die Richtung, in die das SVG-Symbol zeigt, wurde durch einen Ausdruck festgelegt, der auf ein anderes Feld in der Tabelle verweist.)



-2

Wählen Sie einfach alle Werte mit einer Beschriftung mithilfe einer Abfrage aus, exportieren Sie sie in eine neue Ebene und verwenden Sie dann die neu erstellte Ebene.


Können Sie mir ein kurzes Abfragebeispiel für die Auswahl von Werten geben, für die derzeit eine Beschriftung angezeigt wird?
Jakob

Stellen Sie sicher, dass Sie einen Screenshot der Attributtabelle bereitstellen, mit der Sie arbeiten, und welche Felder die gewünschten Beschriftungen enthalten.
NULL.Dude

Ich habe gerade festgestellt, dass dies für QGIS ist. Ich arbeite hauptsächlich mit ArcGIS, aber theoretisch sollte der Prozess der gleiche sein, um alle Daten auszuwählen, die den Werten mit den Beschriftungen zugeordnet sind, und dann eine neue Ebene mit diesen ausgewählten Werten zu erstellen.
NULL.Dude

-3

Legen Sie eine Regel (regelbasiertes Styling) für Ihr Symbol fest :

"label" IS NOT NULL

(Angenommen, Ihr Feld für Beschriftungen heißt "Beschriftung")

Jetzt werden Symbole angezeigt, wenn das Feld für Beschriftungen nicht leer ist.


2
Ich glaube nicht, dass OP darum bittet. Die Werte in label sind nicht null. Sie werden nur nicht angezeigt, da sie sich mit anderen Labels überschneiden.
HeikkiVesanto

@Vesanto Ja, die Werte sind nicht NULL.
Jakob
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.