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.

Für GRID Ebenen wird eine automatisch generierte Legende erstellt. Es ist noch nicht möglich diese selber zu hinterlegen.

Das Symbol in der Legende wird im Maßstab 1:3000 generiert.

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 drei Symbolen, wobei das erste Symbol das Legendenlabel explizit angibt ("Elbe") und das zweite Symbol generiert das Label automatisch aus der Bedingung. Das dritte Symbol erhält keine Bezeichnung, da hier kein Label-Eintrag vorhanden ist und ebenso keine Bedingung definiert wurde.

Beispiel Legende

line {
    single-choice {
        Elbe [gn == "Elbe"]{
            line-width: 4;			
            line-color: RGB(28, 28, 192);	
            map-legend-label: "Elbe";
            map-legend-scale-factor: 1;
        } 
        Prießnitz [gn == "Prießnitz"]{
            line-width: 3;			
            line-color: RGB(17, 152, 161);
            map-legend-scale-factor: 1;	
        } 
        alleanderenGewässer {
            line-width: 1;
            line-color: RGB(0, 143, 255);
        } 
    }        
}

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.

Beispiel Legende

line {
    single-choice {
        Elbe [gn == "Elbe"]{
            line-width: 4;			
            line-color: RGB(28, 28, 192);            
        } 
        Prießnitz [gn == "Prießnitz"]{
            line-width: 3;			
            line-color: RGB(17, 152, 161);
            map-legend-scale-factor: 1;	
        } 
        alleanderenGewässer {
            line-width: 1;
            line-color: RGB(0, 143, 255);
        } 
    }        
}	
map_legend {
    {
        label: "Elbe";
        scale-factor: 0.5;        
        geometry-ids: Elbe;
        geometry-type: line;  
        //oder data: gn = "Elbe";
    }
    {
        label: "Prießnitz";
        scale-factor: 1.0;
        geometry-ids: Prießnitz;
        geometry-type: line;
    }
    {
        label: "Fließgewässer";
        scale-factor: 1.0;
        geometry-ids: alleanderenGewässer;
        geometry-type: line;
    }
}

Wenn die Geometrie-Blöcke variable Ausdrücke (hier im Beispiel die text-rotation) enthalten, müssen die Daten, die für ihre Auswertung notwendig sind, ebenfalls angegeben werden:

Beispiel Legende

point::Symbol {
    complex-graphics:
    text {
    text:53;
    text-color: green;
    text-font-name: "Webdings";								
    text-height: 40px;								
    text-rotation: [winkel];
    };
}   
map_legend {
    {
    label: "Symbol 45° gedreht";
    scale-factor: 0.5;
    geometry-type: point;
    data: winkel = 45;
    geometry-ids: Symbol;
    }       
}

Hinweis

Werden im CSS weitere Spalten (hier im Beispiel "nummer" und "ort") genutzt, so müssen beide Spalten in der data-Eigenschaft der Legende notiert werden:

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

Die Eigenschaft geometry-ids kann auch mehrere IDs enthalten. Hilfreich ist dies im folgenden Beispiel. Die Symboldefinition würde zu diesem Legendeneintrag führen, wobei der Nutzer in der Karte aber eine andere Symbolik sieht.

CSS:

polygon::default {
    fill-pattern: solid;
    border-line: {
        line-width: 1px;
        line-color: black;			  
    };
}
polygon {		
    AlleAnderen {
        fill-color: yellow;
    }
    Hellerau [Stadtteilname == "Hellerau/Wilschdorf mit Rähnitz"]{
        fill-color: blue;
        fill-pattern: hatch_style_backward_diagonal;
        pattern-lines-width: 3px;
    }
}
map_legend {	
    { 
    label: "Hellerau";
    scale-factor: 1.0;
    geometry-type: polygon;
    geometry-ids: Hellerau;
    }
    { 
    label: "Alle anderen Stadtteile";
    scale-factor: 1.0;
    geometry-type: polygon;	
    geometry-ids: AlleAnderen;		
    }
}

Karte:

Beispiel Legende

Legende:

Beispiel Legende

Der Legendeneintrag unter geometry-ids kann nun so ergänzt werden, dass das Symbol für den Stadtteil Hellerau korrekt angezeigt wird.

map_legend {	
    { 
    label: "Hellerau";
    scale-factor: 1.0;
    geometry-type: polygon;
    geometry-ids: AlleAnderen, Hellerau;
    }
    { 
    label: "Alle anderen Stadtteile";
    scale-factor: 1.0;
    geometry-type: polygon;	
    geometry-ids: AlleAnderen;		
    }
}

Legende:

Beispiel Legende


Zuletzt geändert: 25.11.2019 08:08:15 (erstmals erstellt 08.04.2018)