DE:Kosmos Rendering Help

From OpenStreetMap Wiki
Jump to: navigation, search
Help
Verfügbare Sprachen
Deutsch English Русский

Eine der interssantesten Fähigkeiten der Kosmos Rendering Engine ist die Möglichkeit für die Benutzer selbst Rendering-Regeln in OpenStreetmap-Wiki Seiten zu definieren. Ein Beispiel hierfür ist die Kosmos General Purpose Rules, welche, die Regeln zum rendern von Standardkarten enthält.

Kosmos lädt selbständig die Wiki-Seite runter und interpretiert sie. Die Idee hierfür ist, das Rendern von OSM-Daten durch Wiki-Mechanismen zu demokratisiern, so dass jeder seine Regeln zur Verfügung stellen kann. So dass viele Wiki-Seiten entstehen können, die Sätze von Regeln zum Rendern der verschiedensten Karten enthalten, wie z.B Wanderkarten, Stadtpläne, Wanderkarten...
Es können ebenfalls nach Regeln zum Ausdrucken und oder Darstellen auf Bildschirmen unterschieden werden.

Man kann auch die Rohdaten der Render-Regel Wiki-Seite in einer Text-Datei (*.txt) speichern und in Kosmos verwenden. Siehe FAQ).

Bei Fragen bezüglich Kosmos helfen die Kosmos_FAQ bestimmt weiter.

Contents

Regel Tabellen

Die Kosmos Regeln müssen in eine oder mehr Tabellen eingetragen werden, wie man auf den KosmosStandardRules oder Kosmos General Purpose Rules sehen kann. Daten ausserhalb der Tabellen werden von Kosmos ignoriert und können für Kommentare genutzt werden oder um die Regeln in einzelne Abschnitte zu gliedern (was sehr zu empfehlen ist, da man sie dann getrennt bearbeiten kann.)

Jede Reihe stellt eine Regel zum Rendern dar:

Name der Regel Ziel Selektor Vorlagen Optionen Kommentar
RestaurantNode Node amenity=restaurant Icon (MinZoom=13, IconUrl=http://wiki.openstreetmap.org/images/5/58/Restaurant.png, Width=12:5;17:20)
Text (MinZoom=15, Color=black, TagToUse=name, FontName=Arial, FontStyle=regular, FontSize=15:5;17:9, TextLineOffset=-200%)
Restaurant.png


Der Inhalt der Tabellenspalten ist folgender:

Vorlage Darstellung Syntax Osm-Objekt
IconWay Way
 {{IconWay}} 
Wege/Straßen
IconNode Node
{{IconNode}}
Punkte
IconArea Area
{{IconArea}}
Flächen,Gebäude etc.
IconRelation Relation
{{IconRelation}}
OSM-Beziehungen zB. Buslinien, Bundesstraßen, Radwege etc.

Kind-Regeln

Durch vergeben von Regelnamen, welche mit einem Punkt beginnen, spezifizieen sie sie Kind-Regeln einer Eltern-Regel. Die Elternregel ist die erste Regel, die in der Tabelle aufgeführt ist. Ein Beispiel:

HighwaySecondary Way highway=secondary Text (MinZoom=15, Color=black, TagToUse=name, FontName=Arial, FontStyle=regular, FontSize=15:6;17:9) ChildrenFirst
.Bridge bridge=yes Polyline (MinZoom=8, Color=#FDBF6F, BorderColor=gray, BorderWidth=30%, Width=8:1;10:2;13:6;17:14)
.* Polyline (MinZoom=8, Color=#FDBF6F, BorderColor=gray, Width=8:1;10:2;13:6;17:14)

Was bedeutet dies? Wir definieren, dass alle Wege, die mit highway=secondary getaggt sind, die Namen als Text gerendert werden. Brücken (getaggt zusätzlich mit bridge=yes) werden mit einer Polylinie mit dickeren Rändern gezeichnet. Alle anderen Wege mit normaler Randbreite. Kindregeln konkurrieren miteinander darum gerendert zu werden. Die Kindregel deren Selektor als erstes zutrifft wird zum rendern benutzt. Alle Kinder - derselben Eltern - danach werden für dieses Element ignoriert.

Eine Kindregel die mit .* benannt ist, repräsentiert einen Spezialfall (Default Kindregel), welche alle OSM-Elemente abdeckt, die nicht durch die anderen Kind-Regeln abgedeckt sind. Man muss keine Default Kindregel definieren, wenn muss sie aber am Ende stehen.

Ziele und Optionen für Kindregeln werden von Kosmos ignoriert.

In Manchen Fällen sollen Kindregeln vor den Elternregeln gerendert werden dann gebe die Option ChildrenFirst in der Parent-Regel an.

Element Selektoren

Zwei Arten von Elementselektoren sind verfügbar:

highway=*  (Syntax: {{tag|highway}} )

Die Variante key=value wählt das Element aus, deren Tags genau mit den angegebenen Wert versehen sind.Beispiel

natural=coastline  (Syntax: {{tag|natural|coastline}} )

Es ist auch möglich mehrer Tag-Value Paare zu kombinieren die dann als AND-Selektoren interpretiert werden. (Leerzeichen nicht vergessen zwischen den Tag-Templates! Beispiel:

amenity=restaurant cuisine=chinese name=Heiße Ratte
{{tag|amenity|restaurant}} {{tag|cuisine|chinese}} {{tag|name|Heiße Ratte}}

Wählt Chinesische Restaurants die "Heisse Ratte" heißen aus. (kenne aber keine ;) )

 IsTaggedWith(e,"ele") AND IsValueNum( e,"ele") % 100 = 0 

wählt OSM-Elemente aus die mit dem Tag z.B: ele=n00 versehen sind und deren Wert durch 100 teilbar ist. (dieses wird zum rendern von 100er Höhenlinen verwendet siehe srtm2osm})


Syntax Komplexer Ausdrücke

Note: Komplexe Ausdrücke sind momentan ein experimentelles Feature von Kosmos. Die unten beschriebene Syntax wird sich in näherer Zukunft ändern, d.h vereinfacht werden. Ausserdem möchte ich versuchen, dass das Interpretieren komplexer Ausdrücke nicht so viel Performance kostet.

Kosmos benutzt für Komlexe Ausdrücke momentan das Flee library. Benutze den Link für alle möglichen Funktionen.

Drei Spezialfunktion besitzt Kosmos zur Benutzung von Komplexen Ausdrücken:

  1. IsTaggedWith(e,"key"): gibt true wieder, wenn ein OSM-Element einen Tag mit "key" benannt ist.
  2. ValueNum(e,"tag"): gibt einen Numerischen Wert des Tags "tag" wieder.
  3. ValueString(e,"tag"): gibt einen String des Tags "tag" wieder.

Lese unbedingt vorher de:Kosmos Rendering Help#Überlegungen bezüglich der Performance

Vorlagen

Kosmosvorlagen sind grafische Darstellungen von OSM-Elementen in Karten. Momentan sind folgende Vorlagen verfügbar:

Jede Regel kann ein oder mehrere Vorlagen besitzen. Das Untenstehendes Beispiel benutzt zwei Vorlagen:

Rule Name Targets Selector Templates Options Comment
RestaurantNode Node amenity=restaurant Icon (MinZoom=13, IconUrl=http://wiki.openstreetmap.org/images/5/58/Restaurant.png, Width=12:5;17:20)
Text (MinZoom=15, Color=black, TagToUse=name, FontName=Arial, FontStyle=regular, FontSize=15:5;17:9, TextLineOffset=-200%)
Restaurant.png


Standard Parameter

Polyline Vorlagen Parameter

Polygon Template Parameter

Text Vorlagen Parameter

Die Text Vorlage arbeitet in Kosmos in zwei verschiedenen Modi, abhängig von den Element, zu welchen der Text gehört.

  1. bei Linienzügen wird der Text entlang der Linenzüge geschrieben,
  2. bei Noden wird er an der Node zentriert und waagerecht ausgerichtet.

Symbol Vorlagen Parameter

Icon Vorlagen Parameter

Bemerkung: seit der Version 2.3 kann für Noden und Flächen Piktogramme verwendet werden.

Gebrauch der Farben

Farben können entweder in HTML Farbnamen, z.B.: red, green, lime oder im Hexidezimalsystem angegeben werden, z.B.: #FF00AB. Kosmos versteht aber auch das ARGB Scheme (Alpha-Layered RGB), das hilfreich ist, wenn transparenz erwünscht ist. Beispiel: Die Farbe #80ffff00 oder #0x80ffff00 bedeutet, Gelb mit 50% Transparenz. Je kleiner der Alpakanalwert ist A von ARGB (Alpa-Rot-Grün-Blau), meist zu kenntlichmachung auch mit vorangestellter "0x" dargestellt, desto höher die Transparenz der Vorlage.

Zoom Faktor Werte

Der Zoomfaktorwerte ermöglichen die Angabe, wie sich die Eigenschaften in Abhängigkeit der Zoom-Ebene verändern. Sie geben verschiedene Größen für verschieden Zoomfaktoren (durch Semikolon getrennt) an. Die Werte dazwischen und darüber werden interpoliert.

 Width=1:1;9:1.5;17:6 

bedeutet dass die Vorlage die Breite von 1 Pixel bei Zoom-Ebene 1, 1.5px bei Zoom-Ebene 9 und 6px bei Zoom-Ebene 17 bekommt.

Man kann so viele Punkte wie gewünscht angeben. Dabei müssen sie die Werte nicht dem Typ Integer entsprechen.

Linienstile

Schlüsselwort: DashStyle

Momentan sind folgende Linenstile verfügbar:

zum Beispiel

 DashStyle=Dash 

siehe [1] für alle Möglichkeiten.

Linienenden

Schlüsselwörter Linenanfang: LineStartCap, Linienende: LineEndCap

zum Beispiel :

 LineStartCap=Round LineEndCap=Round 

für alle Möglichkeiten siehe [2]

Schraffierungen

Schlüsselwort:HatchStyle

Die möglichen und unterstützen Schraffierung können unter [3] eingesehen werden; Beispiele unter LastGrape/Gregory (LwD).

Render Optionen

Diese sind verschiedene Möglichkeiten, die das Verhalten einer Vorlage verändern. Es kann momentan aber nur EliminateSeams benutzt werden:

Two ways drawn without EliminateSeams option
Two ways drawn with EliminateSeams option
Two ways drawn with EliminateSeams option and Curved=true

EliminateSeams kann mit Polyline-Vorlagen verwendet werden. Wenn sie benutzt wird, versucht Kosmos, alle Wege mit dem gleichen Typ zu verbinden, bevor sie ausgegeben werden. Was bedeutet, dass Lücken behoben werden.

EliminateSeams verbindet einerseits nur Wege des selben Typs, andrerseits verhindert sie die ausführung der Option Curved=true. in dem Beispiel sind zwei Wege als drei Wege gezeichnet worden.

Überlegungen bezüglich der Performance

Wenn man eine möglichst schnelles Rendern von Karten mit Kosmos möchte, sollte man , besonders bei einem hohen Volumen von OSM-Daten, folgendes beachten:

Einschränkungen

Die Kosmos Rendering Engine besitzt mehrere Einschränkungen, die darauf beruhen, dass .NET GDI+ zum Rendern benutzt wird. Andrerseits gibt es mit jeder neuen Version auch noch Verbesserungen diesbezüglich.

Einschränkungen:
Es können nur 32 Zeichen vom Text-Template verarbeitet werden.

ToDo:

Links

Personal tools
Namespaces
Variants
Actions
site
Toolbox