Ansicht von 5 Beiträgen - 1 bis 5 (von insgesamt 5)
  • Autor
    Beiträge
  • #26922

    Buccardo
    Teilnehmer

    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
    Tobias
    Tobias
    Moderator

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

    [/crayon]

    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
    Teilnehmer

    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

    • Diese Antwort wurde geändert vor 8 Monate, 2 Wochen von  Buccardo.
    • Diese Antwort wurde geändert vor 8 Monate, 2 Wochen von  Buccardo.
    #26938
    Tobias
    Tobias
    Moderator

    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 Teilnehmer(n) gefällt dieser Beitrag
    #26944

    Buccardo
    Teilnehmer

    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 Benutzer dankten dem Autor für diesen Beitrag.
Ansicht von 5 Beiträgen - 1 bis 5 (von insgesamt 5)

Du musst angemeldet sein, um auf dieses Thema antworten zu können.