Erstellen einer Legende mit neuen Funktionen für datendefinierte Symbole in QGIS?

8

Ich habe einen großen geologischen Datensatz, den ich mit einem branchenüblichen Satz von Symbolen und Farben anzeigen muss. Die Symbole und Farben sind Attribute der Daten. Ich habe die Fähigkeit zum Definieren datendefinierter Symbole des Entwickler-Builds von QGIS (Code-Revision b805894) verwendet, um die Daten gemäß ihren Attributen anzuzeigen. Dies funktioniert perfekt, um die Daten im Kartenfenster korrekt anzuzeigen.

Das Problem tritt auf, wenn ich versuche, eine Legende im Komponisten zu erstellen. Die auf der Karte angezeigten datendefinierten Farben werden nicht bis zur Legende angezeigt.

Hier sind einige Screenshots. Das erste zeigt das Kartenfenster. Sie können das Problem im Feld Ebenen auf der linken Seite sehen. Die Symbole sind alle schwarz gefärbt.

Der zweite Screenshot zeigt das Komponistenfenster mit einer Legende.

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

ManChild
quelle
2
Laden Sie einfach Ihre Bildschirme auf imgur oder ähnliches hoch und posten Sie den Link. Bearbeiten Sie Ihren Beitrag, um die Bilder hinzuzufügen. Außerdem: Welche QGIS-Version verwenden Sie (da der Komponist im aktuellen QGIS-Master viele Änderungen vorgenommen hat)?
Brachvogel

Antworten:

10

Legenden für datendefinierte Symbologie sind noch nicht implementiert. Es gibt eine offene Fehlerbericht- / Funktionsanforderung: https://issues.qgis.org/issues/11491

Wenn Sie darüber nachdenken, ist die datendefinierte Symbologie äußerst leistungsfähig und kann zu Hunderten verschiedener Variationen eines Symbols in Farbe, Form, Größe, Drehung usw. führen. In einem solchen Fall könnte es unmöglich sein, wirklich eine Legende zu haben.


Update 2017-08:

QGIS3 enthält eine automatische Legende für die datendefinierte Größe:

Geben Sie hier die Bildbeschreibung ein

Unterdunkel
quelle
2
Vielen Dank für die Antwort und für das Öffnen der Funktionsanforderung. Datendefinierte Symbologie ist ein fantastisches Werkzeug, aber meiner Meinung nach wäre sie stark eingeschränkt, wenn sie nicht für die Erstellung professioneller Karten verwendet werden könnte.
ManChild
RE: Update 2017-08: Was ist mit datendefinierten Farben? Wie es im OP der Fall ist ...
Chris
@ Chris nicht implementiert, soweit ich weiß
underdark
Wir haben jetzt QGIS 3.0; Ist die automatische Legende für die datendefinierte Größe jetzt verfügbar?
Cezar B
5

Ich bin nicht sicher, ob es für komplexe Fälle von Nutzen sein kann, aber ich schaffe es, eine gefälschte Legende zu erhalten, indem ich eine Formebene hinzufüge.

Ich habe dann Punkte in der neuen Ebene mit denselben Daten erstellt, die zum Definieren der Symbologie verwendet wurden, und dort, wo die Legende angezeigt werden soll. Dann habe ich dieselbe Symbologie für diese Ebene definiert und die entsprechenden Datenwerte als Beschriftungen angezeigt.

Keine Panik
quelle
Dieser "Trick" funktioniert besonders gut für abgestufte Kreise (oder ähnliche) Legenden!
Andrew Tice
4

Ich musste eine Legende für eine kategorisierte Symbologie erstellen, die auf einer datendefinierten Farbe basiert. QGIS 3 hat es für mich nicht gelöst. Also habe ich ein Attribut erstellt, das den Kategorienwert enthält, der mit dem Farbhexa-Code verknüpft ist.

Ich habe einen zufälligen kategorisierten Stil für diese Spalte erstellt, diesen Stil in eine sld-Datei exportiert und ihn dann mit regulärem Ausdruck in einen Texteditor bearbeitet, um für jede Regel den Füllfarbcode durch den im Kategorienamen angegebenen Code zu ersetzen. Danach habe ich den Katalogwert und den Namen der gefilterten Spalte bereinigt und diesen neuen Stil schließlich auf meine Ebene angewendet.

Entschuldigung, der obige Link ist auf Französisch.

http://si.cenlr.org/24-11-2017

Mathieu Bossaert
quelle
3

Ich habe das gleiche Problem mit geologischen Karten in QGIS 2.10. Die mitgelieferten Karten haben einen CMYK-Farbcode (eigentlich "YMCK"), der mit der folgenden Formel interpretiert werden kann:

color_cmyk( 
CASE WHEN substr("COLOR_CODE",3,1 ) IS 0 THEN 0
  WHEN substr("COLOR_CODE",3,1 ) IS 1 THEN 7
  WHEN substr("COLOR_CODE",3,1 ) IS 2 THEN 14
  WHEN substr("COLOR_CODE",3,1 ) IS 3 THEN 21
  WHEN substr("COLOR_CODE",3,1 ) IS 4 THEN 31
  WHEN substr("COLOR_CODE",3,1 ) IS 5 THEN 42
  WHEN substr("COLOR_CODE",3,1 ) IS 6 THEN 54
  WHEN substr("COLOR_CODE",3,1 ) IS 7 THEN 67
  WHEN substr("COLOR_CODE",3,1 ) IS 8 THEN 80
 ELSE 100
END,
CASE WHEN substr("COLOR_CODE",2,1 ) IS 0 THEN 0
  WHEN substr("COLOR_CODE",2,1 ) IS 1 THEN 7
  WHEN substr("COLOR_CODE",2,1 ) IS 2 THEN 14
  WHEN substr("COLOR_CODE",2,1 ) IS 3 THEN 21
  WHEN substr("COLOR_CODE",2,1 ) IS 4 THEN 31
  WHEN substr("COLOR_CODE",2,1 ) IS 5 THEN 42
  WHEN substr("COLOR_CODE",2,1 ) IS 6 THEN 54
  WHEN substr("COLOR_CODE",2,1 ) IS 7 THEN 67
  WHEN substr("COLOR_CODE",2,1 ) IS 8 THEN 80
  ELSE 100
END,
CASE WHEN substr("COLOR_CODE",1,1 ) IS 0 THEN 0
  WHEN substr("COLOR_CODE",1,1 ) IS 1 THEN 7
  WHEN substr("COLOR_CODE",1,1 ) IS 2 THEN 14
  WHEN substr("COLOR_CODE",1,1 ) IS 3 THEN 21
  WHEN substr("COLOR_CODE",1,1 ) IS 4 THEN 31
  WHEN substr("COLOR_CODE",1,1 ) IS 5 THEN 42
  WHEN substr("COLOR_CODE",1,1 ) IS 6 THEN 54
  WHEN substr("COLOR_CODE",1,1 ) IS 7 THEN 67
  WHEN substr("COLOR_CODE",1,1 ) IS 8 THEN 80
  ELSE 100
END, 
CASE WHEN substr("COLOR_CODE",4,1 ) IS 0 THEN 0
  WHEN substr("COLOR_CODE",4,1 ) IS 1 THEN 7
  WHEN substr("COLOR_CODE",4,1 ) IS 2 THEN 14
  WHEN substr("COLOR_CODE",4,1 ) IS 3 THEN 21
  WHEN substr("COLOR_CODE",4,1 ) IS 4 THEN 31
  WHEN substr("COLOR_CODE",4,1 ) IS 5 THEN 42
  WHEN substr("COLOR_CODE",4,1 ) IS 6 THEN 54
  WHEN substr("COLOR_CODE",4,1 ) IS 7 THEN 67
  WHEN substr("COLOR_CODE",4,1 ) IS 8 THEN 80
  ELSE 0
END)

Dies ergibt jedoch die schwarze Farbe in den Legendenfeldern.

Daher dachte ich, ich könnte das Problem lösen, indem ich das obige Skript verwende, um ein neues Farbfeld zu berechnen, das recht gut funktioniert und RGB-Werte wie 255.200.220 zurückgibt. Dann habe ich es versucht

Color_rgb("Color") 

ohne Glück eine datendefinierte Farbe zu erzeugen (ungültige Formel)! Also habe ich das Farbfeld in 3 Felder unterteilt - Rot, Grün und Blau und die folgende Formel -

color_rgb("Red","Green","Blue")  

Geben Sie im Feld Datendefinierte Farbformel die richtige Farbe auf der Karte an, und die Legende ist nicht mehr schwarz. Sie verwendet jedoch die Farbrampeneinstellungen, um die Legendenfarbe zu bestimmen.

Es scheint, dass wir eine Option im Dropdown-Feld Farbrampe benötigen, um datendefinierte Farben anzugeben, und dann sollte sie die beliebige datendefinierte Farbe verwenden, um die Legende zu erstellen.

Alle anderen Problemumgehungen sind in Ordnung, aber wenn Sie den Legendenfilter auf dem Map Composer verwenden, möchten Sie das richtige Ergebnis erzielen und müssen nicht zu jedem Legendenfeld gehen und die RGB-Codes in die ausgewählten Farboptionen eingeben.

arthur taute
quelle
3

Ich habe mit der geologischen Untersuchung hier in Westaustralien Gespräche geführt und sie können Datendateien mit geologischen Codes, RGB-Farben und geologischen Mustercodes liefern. Wir brauchen nur ein Plug-In, um diese Dateien einzulesen und diese Attribute zu den Polygonen hinzuzufügen, damit sie in der Legende angezeigt werden können. Ich habe die Option color (rgb) ausprobiert, aber der Legendenersteller sieht diese Farben nicht.

Grant Boxer
quelle
0

Ich hatte das gleiche Problem ... rgb (rot, grün, blau), wobei rot, grün, blau Werte sind, die in der Attributtabelle aufgeführt sind, um die Kartenfarbe festzulegen, aber dann wird die Farbe nicht im Ebenenbedienfeld und repliziert dann nicht in eine Legende in Print Composer übertragen ... Ich musste nur auf jede der Ebenen im Ebenenbedienfeld klicken und dann die Farben im Ebenenbedienfeld aus der Karte auswählen und zurücksetzen ... eine mühsame Lösung ... Es sollte eine Möglichkeit geben, dies in PyGIS zu codieren ...

JimWeick
quelle