Symbolik

Die Beschreibung der Darstellung des Karteninhaltes erfolgt in einer an CSS angelehnten Syntax.

Es gibt derzeit drei verschiedene Varianten, die abhängig von der Art der Datenquelle zum Einsatz kommen

Stile zuweisen

Für die meisten Ebenentypen(*1) kann bei der Definition ein Standard-Stil zugewiesen werden. Bei der Zuweisung innerhalb der JSON Definition erfolgt dies durch eines der Attribute:

  • style : der CSS-Code direkt (bitte beachten Sie hier, dass nur 4000 Zeichen eingegeben werden können)
  • cssFile : Name einer Datei mit dem CSS-Code (der Inhalt wird in diesem Fall bei Änderungen automatisch neu gelesen),
  • fallbackStyle (beim Ebenentyp GML): der CSS-Code direkt, dieser wird intern als "Notlösung" markiert, d.h. wenn die Datenquelle selber ein eigenes CSS mitbringt, wird das der Datenquelle bevorzugt verwendet.

Sind alle Attribute angegeben, wird cssFile gegenüber style gegenüber fallbackStyle bevorzugt ausgewertet, d.h. effektiv kommt nur eine der Angaben zum Einsatz.

Der an der Quelle definierte Stil wird als Standard für Zeichenanforderungen verwendet. Optional kann im Zeichenrequest jederzeit ein alternativer Stil übergeben werden.

*1 ausgenommen solche, wo die Darstellung in den Daten enthalten ist, bspw. DXF oder EMF

Konzept

CSS-Code besteht immer aus Blöcken, in denen Eigenschaften Werte zugewiesen werden.

Ein Block besteht mindestens aus einer öffnenden und einer schließenden geschweiften Klammer.

Innerhalb des Blocks werden die Eigenschaften/Wert oder als Tupel (Wertesammlung) angegeben. Diese bestehen aus einem Eigenschaftsnamen, gefolgt von einem Doppelpunkt. Dann folgt der Wert der Eigenschaft, der mit einem Semikolon abgeschlossen wird.

Eigenschaft: Wert;

Ein und dieselbe Eigenschaft sollte in einem Block nicht mehrfach angegeben werden. Ist dies doch der Fall wird immer der zu letzt angegebene Wert verwendet.

Blocktyp::BlockId {
    Eigenschaft1: Wert;
    Eigenschaft2: Wert;
}

Der Blocktyp (point, line, polygon) bestimmt welche Eigenschaften zulässig sind. Nach dem Blocktyp kann durch zwei Doppelpunkte getrennt eine BlockId folgen. Dies ist ein vom Nutzer frei wählbarer Name der, wenn vorhanden, bei Fehlermeldungen mit ausgegeben wird und auch für die manuelle Erstellung einer Kartenlegende benötigt wird.

Die BlockId darf kein Schlüsselwort sein (wie ein zulässiger Blocktypname oder "default") und muss eindeutig sein. Die mehrmalige Verwendung ein und der selben BlockId führt zu einer Fehlermeldung. Die BlockID darf ebenfalls nur ein Wort sein und kein Leerzeichen enthalten.

Der Bereich aus Blocktyp und BlockId wird auch als Selektor bezeichnet.

Im folgenden Beispiel ist der Blocktyp "line" und die BlockId ist "Hauptstraße". Innerhalb des Blocks wird der Eigenschaft "line-width" der Wert 2 zugewiesen.

line::Hauptstraße {
    line-width: 2;
}

Blöcke können ineinander geschachtelt werden. In diesem Fall erbt der innere Block den Blocktyp des äußeren Blocks, wenn der innere Block selbst keinen Blocktyp definiert.

Der äußere Block darf selbst keine Eigenschaften definieren.

Im folgenden Beispiel sind die beiden inneren Blöcke vom Typ "line". Der zweite innere Block ist ein anonymer Block, ohne BlockId.

line {
    Hauptstraße {
        line-width: 2;
    }

    {
        line-width: 5;
    }
}

Kommentare

Es ist möglich im CSS-Code Kommentare anzugeben. Es werden einzeilige und mehrzeilige Kommentare unterstützt.

line::Hauptstraße {
    line-width: 2; // Dies ist ein einzeiliger Kommentar
}

/*
Dies ist ein mehrzeiliger Kommentar
*/

Farbangaben

Farben können im CSS in verschiedenen Varianten notiert werden. Der Farbkanal selber hat Werte im Bereich 0...255, der Alpha-Wert 0...1. Hier die Möglichkeiten für die Farbzuweisung einer grünen Linie:

  • line-color: rgb(0,255,0); //Farbwert als RGB – Angabe
  • line-color: ARGB(0.5, 0, 255,0); //Farbwert – Opazität 50%, RGB
  • line-color: green; //Farbwert als Farbname
  • line-color: green(0.8); //Farbwert als Farbname mit Transparenz
  • line-color: #00ff00; //Hexadezimal ohne Transparenz
  • line-color: #00ff00FF; //Hexadezimal – Opazität* der Fläche

Weitere Informationen finden Sie hier.

Darstellung einer Linie

Im Folgenden ein einfaches Beispiel für die Darstellung einer Linie, wobei die Linienbreite zwingend notwendig ist.

Beispiel

line { //Blocktyp
    // Linienbreite in px oder m (Standard ist px, 
    daher muss diese Einheit nicht angegeben werden)
    line-width: 2;
    // Linienfarbe als RGB Code, blau
    line-color: RGB(0, 143, 255);
}

Darstellung einer Fläche

Um eine Fläche zu zeichnen ist die Eigenschaft fill-pattern (die Füllart) zwingend notwendig.

Beispiel

polygon { //Blocktyp
  // Füllfarbe gelb, Alphawert 0.8
  fill-color: yellow(0.8);
  // Füllart: flächig
  fill-pattern: solid;
}

Da für eine flächige Darstellung meist auch der Rand der Fläche farbig gezeichnet werden soll, muss hier eine weitere Eigenschaft notiert werden. Hierbei handelt es sich um die border-line Eigenschaft. Diese wird, wie die anderen Eigenschaften auch mit Eigenschaftsname: {Wert1, Wert 2}; geschrieben. Da es sich bei border-line um eine komplexe Eigenschaft handelt, können hier mehrere Werte innerhalb der geschweiften Klammer notiert werden.

Beispiel

polygon { //Blocktyp
  //Füllfarbe gelb
  fill-color: yellow;
  //Füllart flächig
  fill-pattern: solid;
  //Grenzlinie grün, 1px breit
  border-line: 
	{
	line-width: 1px;
	line-color: green;  
	};

}

Beachten Sie das ; am Ende der border-line Eigenschaft.

Um die Innenlinien und Außenlinien von Flächen verschieden darzustellen, gibt es die Eigenschaften outer-border-line und inner-border-line. Diese sind wie die border-line komplexe Eigenschaften und können mehrere Werte enthalten.

Beispiel

polygon { //Blocktyp
  //Füllfarbe gelb
  fill-color: yellow;
  //Füllart flächig
  fill-pattern: solid;
  //Außenlinie
   outer-border-line:
   {
        line-width: 2px;
        line-color: blue;
    };
    //Innenlinie
    inner-border-line:    
    {
        line-width: 3px;
        line-color: red;
        //gestrichelter Linienstil
        line-dash-style: dot;
    };
}

Darstellung eines Punktes

Einen Punkt, wie aus dem Symboleditor bekannt, gibt es im CSS nicht. Im CSS wird der Punkt als komplexe Graphik gezeichnet. Eine komplexe Graphik kann verschiedene Blöcke enthalten. Für die Darstellung eines Punktes ist ein circle Block zu erstellen. Für die Zeichnung eines Punktes ist der Radius und die Füllart zwingend erforderlich.

Beispiel

point {     //Blocktyp
   complex-graphics:
        circle {
            //Füllfarbe
	        fill-color: green;
            //Füllart
	        fill-pattern: solid; 
            //Radius
      	     radius: 10px;
  };
}

Um einen Punkt auch mit einer Außenlinie zu zeichnen, können weitere Eigenschaften dem circle Block hinzugefügt werden:

Beispiel

point {
   complex-graphics:
    circle {
        //Linienbreite
      line-width: 2px;
      //Linienfarbe
      line-color: red;
      //Füllfarbe
      fill-color: green;
      //Transparenz der Füllfarbe
      fill-color-opacity: 0.8;
      //Füllart
      fill-pattern: solid;    
      //Radius
      radius: 10px;
  };
}

weiteres Beispiel für die Darstellung von Punkt, Linie und Fläche

Beispiel

unordered {
 point {
   complex-graphics:
    circle {
      line-width: 1px;
      line-color: black;
      fill-color: RGB(128, 128, 128);
      fill-color-opacity: 0.5;
      fill-pattern: solid;      
      radius: 8px;
  };
}
 line {
     line-width: 1px;
     line-color: black;    
 }
 polygon {
     fill-color: RGB(128, 128, 128);
     fill-color-opacity: 0.33;
     fill-pattern: solid;
     border-line:
     {
       line-width: 1px;
       line-color: black;       
     };
 }
}

weitere Beispiele mit Bildern


Zuletzt geändert: 13.03.2024 12:40:13 (erstmals erstellt 19.03.2017)