Maperitive - Wer weiß, wie ...

… man die Abstände von "Schildchen " reguliert?

Mit diesen Befehlskombinationen
http://maperitive.net/docs/manual/Symbols/shield.html
setzt man Schildchen auf Straßen.

Bei mir kam dabei so etwas heraus:

Nun wüßte ich gerne, wie man die Stapelung der Schildchen unterbindet.
Im Maperitive-Handbuch bin ich leider nicht fündig geworden.

Vielen Dank im Voraus.
tippeltappel

EDIT
Sorry für das POPUP!
Weiß jemand ein besseres Bildarchiv?

Nunja, das sind die kleinen Dinge des Alltags, die Mapnik effektiv besser kann :wink:

Gruß,
ajoessen

Mag sein, ist aber wahrscheinlich nur eine Frage der Zeit!

Ich weiß nicht in welche Richtung du willst aber ich würde die Auf und Abfahren aus den shape raus nehmen ala:

if : motorway
if : *link
define
line-width : 7:1;9.9:2.5;12.9:3;14:4;15:6;16:8;18:10
else
define
line-width : 7:1;9.9:2.5;12.9:3;14:4;15:6;16:8;18:10
define
shape : custom
shape-def :

da siehts schonmal viel besser aus.

Leider ist das Übereinanderzeichen noch nicht ausgeschlossen wie es beim Text schon jetzt gemacht wird - aber vielleicht wird das auch noch eingebaut!

:wink:
http://maperitive.net/docs/manual/Properties/ShapeSpacing.html

Naja, aber Du hast schon recht

@ quasilotte
Vielen Dank für das Beispiel! :slight_smile:

So ähnlich hatte ich die rules schon gebaut.
Nun hab ich sie unter “links” heraus genommen und unter “trunks” eingefügt.
Effekt:
Sämtliche A-Labels sind verschwunden.
Dafür werden jetzt B- und L-Labels im Autobahnschilderformat angezeigt.

Hmmmmmm - - - Da muß ich noch etwas tüfteln.
Habe auch schon eine Idee, aber heute keine Zeit mehr dafür.
Leider.

Den Space-Befehl habe ich schon ausprobiert. Das brachte aber nicht den gewünschten Erfolg.
Wenn ich die Beschreibung richtig verstehe, verteilt Space die Schildchen auf einer Linie, Überlagerungen werden aber nicht verhindert.
Das ist etwas, was der Autor des Programms plant, irgendwann einzubauen, zur Zeit aber noch nicht funktioniert.
Naja - Im Moment muß ich erst einmal zusehen, daß die richtigen Schildchen auftauchen.

Vielen Dank für Eure Tipps! :slight_smile:

Maperitive Beta kann das jetzt:
Label Collision Detection
Maperitive now detects if two or more labels overlap. In case of overlaps the label with lower priority is removed. Priority is determined by the order of the features and rules in the rules file - rules near the beginning of the file have a higher priority than the ones near the end.
siehe:
http://braincrunch.tumblr.com/post/10490479766/maperitive-beta-update

Viele Grüsse,
Federico

Vielen Dank Federico :slight_smile:

Ist schon herunter geladen und der Test läuft.

Viele Grüße
tippeltappel

Ergebnisse

** Wer weiß, wie …**

…man Maperitive beibringt, daß in einer Route nicht nur direkt auswertbare Elemente enthalten sind, sondern auch noch Relationen,
deren Elemente genauso ausgewertet werden sollen, wie die Elemente der übergeordneten Relation?

Beispiel:
http://www.openstreetmap.org/browse/relation/48147

Die Beschriftung der Strecke fällt teilweise etwas “dünn” aus. :wink:

Ich werte das Routenmerkmal network=BAB aus, um die Nummernschildchen zu erzeugen. Doch das TAG ist lediglich in der road-Relation enthalten und nicht in TCM-Relationen. Daher sind die Streckenabschnitte, die nicht direkt in die road-Relationen eingebunden sind, unbeschriftet.

Gruß
tippeltappel

Stehen die refs nicht auch noch an den highways selber?
Dann kannst du die doch mit entsprechend niedriger Priorität und großem Abstand mit rendern lassen. Wo kein Platz mehr ist, fallen sie dann eben raus.

Gruß,
ajoessen

Ich werte auch die highway aus nicht die network.

Allerdings rendert Maperitive mommentan die shape’s nur einmal - um in Abstand x zurendern geht nur shield - das läßt aber kein Text zu(jedenfalls als Schildchen)!

Ich hoffe das mit maperipy sich das verberssert - das dauert allerdings noch ein paar Monate!

@ ajoessen
Moin
Natürlich stehen die ref da.
Den Bildern in den ersten Postings liegt genau so eine Auswertungsprinzip zu Grunde. Das funktionierte aber nicht zufriedenstellend.

@ quasilotte
Wieso geht auf shield kein Text?
Meine Schildchen werden alle mit draw : shield erzeugt.

Dann muß ich mal weiter suchen.

Ich hatte es so verstanden, dass die beta das mit den Abständen jetzt vernünftig hinbekommt.

Gruß,
ajoessen

@ ajoessen
Das mache ich nicht wegen der Abstände. Wie das jetzt deutlich besser funktioniert, sieht man ja auf den letzten Bildern.
Mich stört, daß bei der Auswertung von highway=trunk auch B-Nummern und L-Nummern im BAB-Layout angezeigt werden. (Siehe Post #5)

Gruß
tippeltappel

Da hast du noch einen “Fehler” in deinen Rules!

Da ist zu erwarten das diese auch unter trunks angezeigt werden.

shape’s werden leider immer noch nur 1mal Dargestellt!
Mit shields kann man entlang ways im Abstand X diese einblenden lassen allerdings nicht als Schild sondern als Symbol evtl mit Text nebdendrann.

@ quasilotte
Vielen Dank für’s von der Leitung runter schubsen. :wink:
Nun hab ich den richtigen higwaytyp für Autobahn eingesetzt und da funktioniert es natürlich besser. :slight_smile:
Aber ein gutes Label-Layout ist was anderes.

Mir gefällt die Auswertung über highway aber trotzdem nicht. Auch wenn es jetzt funktioniert.
Die Auswertung über Routennetze fänd ich wesentlich sinnvoller.
Mit den Europastraßen funktioniert das.
Habe mal mit verschachtelten Bedingungen herum probiert. Aber irgendwie klappte das nicht.

Gruß
tt

** … nested Quering** mit kombinierten Bedingungen funktioniert?

http://maperitive.net/docs/manual/Querying_Data.html

Nach dem dort beschriebenen Vorbild rufe ich verschachtelte Relationen ab:


features
        lines
//Routen
            Strassennetz Europastrassen : relation[network=e-road]
            Strassennetz Autobahnen BAB: relation[network=BAB]
            Strassennetz Autobahnen TMC: relation[type=TMC].relation[network=BAB]

Das Ergebnis:

Eigentlich wollte ich mit einer OR-Bedingung arbeiten:


//Routen
        Strassennetz Europastrassen : relation[network=e-road]
        Strassennetz Autobahnen : relation[network=BAB] OR relation[type=TMC].relation[network=BAB]

Doch diese Syntax erzeugte eine Fehlermeldung.
Daher meine Frage: Was ist an dieser Syntax falsch?

Des weiteren frage ich mich natürlich auch, woran es liegt, daß auf der Karte keine durchgehende Numerierung der Autobahnstrecken erzeugt wird?
Liegt es wirklich nur daran, daß Maperitive die Schilder nicht gleichmäßig verteilen kann?
Die Erzeugung der Schildchen basiert bei den Autobahnen auf:

        text : ref

und bei den Europastraßen auf:

        text : int_ref

Ob die “unbeschilderten” Strecken nun auch tatsächlich diese Tags haben, konnte ich noch nicht prüfen.
Warum das sinnvoll wäre? Als ich im Wiki
http://wiki.openstreetmap.org/wiki/Talk:WikiProject_Europe/E-road_network#ref_and_int_ref
eine Diskussion las, aus der hervor geht, daß es keine einheitliche Vorgehensweise bei der Erfassung der Referenznummern gibt,
fragte ich mich natürlich:

  1. Ist das der aktuelle Stand der Dinge?
  2. Wenn dem so wäre: Liegt es möglicherweise nicht an Maperitive sondern an einer einer uneinheitlichen Datenerfassung, daß lange Strecken unbeschriftet sind?

Wenn nun alle Strecken den Auswertungskriterien entsprechen sollten, dann müßte der Code von Maperitive weiter entwickelt werden.
Wenn es ein uneinheitliches Erfassungsschema bei den ref-Nummern gibt, bleibt einem nur, nach anderen Möglichkeiten zu suchen, die Anzeige der Straßennummern zu erzwingen. Nur finde ich nicht, daß das ein sinnvoller Weg ist.

Gruß
tippeltappel

Relationen mit OR zu verküpfen geht in maperitive so :

Strassennetz Autobahnen : relation[network=BAB OR type=TMC]

@ quasilotte

Ah! Ok. Danke.

Hab noch ein wenig herumprobiert und dabei den Eindruck gewonnen, daß es nicht notwendig ist, die verschachtelte Relation anzugeben.
In den Bildern sieht man unten die verschiedenen Definitions-Varianten.
// deaktiviert die Befehlszeile

Beim Vergleichen der Bilder fällt auf, daß es ausreicht, die BAB-Relation aufzurufen. Die über eine Tochterrelation eingebundenen Streckenabschnitte werden offensichtlich mit berücksichtigt.

Was ich nicht kapiere ist, daß auch dann, wenn der Aufruf des Europastraßennetzes in den Features deaktiviert ist, verschiedene Streckenabschnitte der Autobahnen nicht beschildert werden. Was übersehe ich?

Viele Grüße
tippeltappel