Kartenlegenden für Vektor-Stile

Das Abfrufen von Legendenbildern für Vektor-Ebenen ist über den hier beschriebenen Handler möglich.

Die Quelle für ein Legende ist dabei das Vektor-Css einer Ebene.

Explizite Definition der Legendeneinträge

Es gibt zwei Möglichkeiten ein Kartenlegendensymbol zu zeichnen.

Die bevorzugte Variante ist die BlockIds ("geometry-ids") der Blöcke anzugeben, aus denen das Symbol besteht. Wenn keine BlockIds angegeben sind, müssen Daten so wie sie in der Datenquelle definiert sind, angegeben werden.

Mit diesen Daten werden dann die Bedingungen der Geometrie-Blöcke ausgewertet und festgestellt, welche Blöcke zu zeichnen sind.

Wenn die Geometrie-Blöcke variable Ausdrücke enthalten, müssen die Daten, die für ihre Auswertung notwendig sind, ebenfalls angegeben werden:

map_legend {
	Laubwald_Symbol {
		label: "Laubwald";
		scale-factor: 1.0;
		geometry-type: polygon;
		geometry-ids: id0, id1;
		data: GEOTYPE = "Wald", SUB_GEOTYPE = "Laubwald", LABEL = "", PARAM1 = 13, PARAM2 = 18.5;
	}

	Nadelwald_Symbol {
		label: "Nadelwald";
		scale-factor: 0.5;
		geometry-type: polygon;
		geometry-ids: id2;
		data: GEOTYPE = "Wald", SUB_GEOTYPE = "Nadelwald", LABEL = "", PARAM2 = 19.5;
	}
}

Automatisch generierte Legende

Eine automatische Legendenerstellung findet nur statt wenn kein nicht leerer "map_legend" Block vorhanden ist. Die Eigenschaften von CSS Blöcken dürfen keine Daten aus einer Datenquelle verwenden. Die Bedingungen und Eigenschaften von CSS Blöcken dürfen keine dynamische Funktionen (ein Parameter ist ein Spaltenwert) enthalten. Ein CSS Block darf nur zu einem Legendensymbol gehören.

CSS Blöcke die die gleichen Bedingungen haben, werden zu einem Legendensymbol zusammengefasst. Der erste CSS Block aus dem ein Legendensymbol besteht, kann die zwei optionalen Eigenschaften "map-legend-label" und "map-legend-scale-factor" definieren. Die "map-legend-label" Eigenschaft erlaubt es explizit ein Label für das Legendensymbol anzugeben. Wird die Eigenschaft nicht definiert, so wird das Label automatisch, aus den Bedingen für den CSS Block, generiert. Die Eigenschaft "map-legend-scale-factor" erlaubt es die Größe des Legendensymbols zu ändern.

Das folgende Beispiel zeigt gültiges CSS für die automatische Legendenerstellung. Die generierte Legende besteht aus zwei Symbolen, wobei das erste Symbol das Legendenlabel explizit angibt ("Hauptstraße") und das zweite Symbol generiert das Label automatisch aus den Bedingungen ("(GEOTYPE = "Straße") und (SUBGEOTYPE = "Nebenstraße")").

line::default {
	render-quality: antialiased;
	line-color-opacity: 1.0;
	line-join: round;
	line-cap: flat;
	line-dash-style: solid;
}

ordered [GEOTYPE == "Straße"] {
	line {
		id0 [SUBGEOTYPE == "Hauptstraße"] {
			line-width: [MeterToPixel(8)+6];
			line-color: RGB(255, 0, 0);
			map-legend-label: "Hauptstraße";
			map-legend-scale-factor: 0.5;
		}

		id1 [SUBGEOTYPE == "Nebenstraße"] {
			line-width: 6m;
			line-color: RGB(0, 255, 0);
			map-legend-scale-factor: 0.5;
		}

		id2 [SUBGEOTYPE == "Hauptstraße"] {
			line-width: 8m;
			line-color: RGB(0, 255, 0);
		}
	}
}

Hinweise

Nutzen Sie in der Symbolerstellung als Quelle bspw. für Beschriftungen eine Spalte der Datenquelle, so beachten Sie die Übereinstimmung der Spaltenbezeichnung in der Legende: (im Beispiel die Spalte "ort")

unordered {
    point  {
            complex-graphics:        
            circle     {...},              
            text {		
				text: [ort];
				text-color: black;
				text-font-name: "arial";
				text-height: 10px;			
				text-quality: antialiased;
				text-horizontal-alignment: center;
				text-vertical-alignment: center;		
			};
 }
}
/*Definition der Legende*/
map_legend {
    {
    scale-factor: 0.5;
     geometry-type: point;
     data: ort= "Dresden";
    }
}

Werden im CSS weitere Spalten (hier im Beispiel "nummer" und "ort" genutzt, so müssen diese ebenfalls in der Legende notiert werden:

map_legend {
  {
    scale-factor: 0.5;
    geometry-type: point;
    data:   nummer= "1", ort = "Musterstadt";
    }
}


Zuletzt geändert: 06.09.2018 16:56:57 (erstmals erstellt 08.04.2018)