Viewing 5 posts - 1 through 5 (of 5 total)
  • Author
    Posts
  • #26922
    Buccardo
    Participant

    Für eine Kartendarstellung möchte ich ein Theme erstellen, welches u.a. verschiedene Wegelemente bei der Wahl von Overlays anzeigt.
    Hierzu braucht’s eine ODER Verknüpfung der ‘Operatoren’ in oberster Ebene der rules,
    üblich sind aber wohl nur AND Verknüpfungen:

    Beispiel aus Elevate theme family 4.x
    <rule e=”any” k=”access|reservation” v=”private|acc_no|members_only” zoom-min=”17″>
    bedeutet in allgemeiner Logigsprache:
    <rule e=”any” AND (k=”access” OR k=reservation”) AND (v=”private” OR v=”acc_no” OR v=”members_only”) AND zoom-min=”17″>

    Benötigt wird z.B.
    in allgemeiner Logigsprache:
    <rule e=”any” AND ((k=”access” AND v=”private”) OR ( k=”reservation” AND v=”acc_no”)) AND zoom-min=”17″>
    Die Klammern um die OR Gruppe sind erforderlich, da die AND Operatoren ja eine höhere Priorität als die OR Operatoren haben.
    Wie lässt sich das am einfachsten im Theme-XML definieren??

    #26925
    Avatar photoTobias
    Keymaster

    Genauer geht es nur mit mehreren Regeln/Verschachtelungen, z.B.:

    <rule e="any" k="*" v="*" zoom-min="17">
    	<rule e="any" k="access" v="private">
    	</rule>
    	<rule e="any" k="reservation" v="acc_no">
    	</rule>
    </rule>

    Aber leider ist nicht alles möglich, mir fehlen auch manche Möglichkeiten, und manchmal müssen Regeln annähernd gleich wiederholt werden.
    Ansonsten kommen die Kombinationen oft gar nicht so vor, wie von Dir da gewünscht, da die Tags beim Kartengenieren aufbereitet wurden – acc_no gibt es nur mit access, nicht mit reservation 🙂

    Developer of Elevate mapstyle

    #26930
    Buccardo
    Participant

    Das war oben nur ein schnelles Beispiel, in meinem Theme braucht’s konkret folgende Regel:
    in allgemeiner Logigsprache:
    <rule e=“way“ AND ((cat= “osm-wege” k=“ovl-way“ AND v=“~“) OR (cat= “ovl-wege” k=“ovl-way“ AND v=“*“))>

    </rule>
    Habe auch schon befüchtet, daß sie durch den fehlenden OR Operator in zwei rule Blöcke hintereinander mit identischer Darstellung aufgeteilt werden muss, also:

    <rule cat= “ovl-wege” e=“way“ k=“ovl-way“ v=“*“>
    <line stroke=”#FFFFFF” stroke-width=”0.4dp” />

    </rule>
    <rule cat= “osm-wege” e=“way“ k=“ovl-way“ v=“~“>
    <line stroke=”#FFFFFF” stroke-width=”0.4dp” />

    </rule>
    Somit werden ways bei gewähltem Overlay “ovl-wege” mit beliebigem Wert des Attributs “ovl-way” und/oder
    ways bei gewählter OSM Grundkarte “osm-wege” ohne Attribut “ovl-way” dargestellt !?

    PS: was definiert k=”keyxyz” v=”~” genau? ->
    keyxyz ist bei dem Element nicht definiert und/oder Wert des keyxyz ist NULL (leer)?

    Danke Dir Tobias für die Antworten!
    VG Burkhard

    #26938
    Avatar photoTobias
    Keymaster

    Somit werden ways bei gewähltem Overlay „ovl-wege“ mit beliebigem Wert des Attributs „ovl-way“ und/oder

    ways bei gewählter OSM Grundkarte „osm-wege“ ohne Attribut „ovl-way“ dargestellt !?

    Soweit ich Deinem Beispiel folgen kann ja 🙂

    PS: was definiert k=“keyxyz“ v=“~“ genau? ->

    keyxyz ist bei dem Element nicht definiert und/oder Wert des keyxyz ist NULL (leer)?

    Siehe hier:

    A vertical bar “|” can be used to specify multiple values.
    An asterisk “*” serves as wildcard character.
    A tilde “~” matches if the map element does not have a tag with the specified key.

    Also wenn der key nicht vorhanden ist.

    Developer of Elevate mapstyle

    1 user thanked author for this post.
    #26944
    Buccardo
    Participant

    Die Anwahl und Darstellung funktioniert nun einwandfrei mit den zwei rule Blöcken oben!
    Somit können unter Lokus die Wege aus der OSM-Grundkarte oder der Overlay-Karte (anders getaggt) wahlweise dargestellt werden!
    Sauber!

    Danke auch für den Rendertheme.md Link mit der Beschreibung, sehr interessant! 🙂

    Meine Fragen sind damit geklärt , Status des Themas kann auf “beantwortet” gesetzt werden.

    VG

    2 users thanked author for this post.
Viewing 5 posts - 1 through 5 (of 5 total)
  • You must be logged in to reply to this topic.