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

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

Nate Wanner
quelle
-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.

NULL.Dude
quelle
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.

KARTE
quelle
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