Maperitive: Fahrradwege beschriften

Guten Tag,

auch wenn Maperitive schon in die Jahre gekommen ist scheint es mir aktuell der sinnhafteste Weg zu einem soliden SVG Export zu sein. Nach einem halben Tag habe ich nun für eine Kleinstadt bereits Bushaltestellen und Radwege ordentlich darstellen lassen können.

Leider gelingt es mir nicht die Radwege ordentlich zu beschriften. Die Daten stehen da aber ich komme auch mit Hilfe der Python API nicht wirklich weiter.

lines 
    bike : relation[type=route AND route=bicycle]

target : bike
	define
		line-color : orange
		border-color : orange
	draw : line
	define 
		text : ref
		font-size : 12
		text-color : green
	draw : text

das ist mein Arbeitsstand, allerdings bekomme ich dadurch nicht die vorhandenen Radwegebeschriftungen eingebunden. Das mag möglicherweise mit einem Missverständnis der Datentypen zusammenhänge?

Als Beispiel erwähne ich zB. https://www.openstreetmap.org/relation/2972884#map=16/50.15368/11.94701&layers=C wobei ich gerne “Siebenstern-Radweg” anzeigen möchte.

Über Hilfestellungen freue ich mich sehr. Alternativ gerne auch über Hinweise auf andere Tools/Software, Prämisse ist aber ein Vektor-Exportformat mit entsprechenden Gestaltungsmöglichkeiten.

Dankeschön :slight_smile:

Leider ist dein Text ein bisschen verwirrend:

  • da Maperitive in C# geschrieben hast, wird die Python API nicht weiterhelfen.
  • du möchtest “Siebenstern-Radweg” anzeigen, was in name steht, in der Rule verweist du aber auf text : ref

Wird denn die Route(nlinie) überhaupt dargestellt? Welchen Datensatz verwendest du? Wie hast du dir diesen Datensatz zusammengestellt? Sprich ist denn die Route überhaupt in deinem Datensatz drin?

Maperitive habe ich selbst zuletzt ca. 2018/2019 genutzt, seit dem bin ich auf QGIS umgestiegen (natürlich eine ganz andere Liga)

1 Like

Hi rtrosm,

Maperitive ist als Einstieg zum Rendern nicht falsch, auch wenn es seit Jahren nicht mehr weiterentwickelt wird (man muss es daher so nehmen, wie es ist, ändern wird sich da nix mehr). Es macht mit dem OSM-Daten vieles im Hintergrund automatisch und nicht alles kann daher angepasst werden. Das, was du vorhast, müsste aber klappen.

image

Du brauchst neben deiner Rules-Datei auch noch eine Python-Datei, z.B. cycleLabel.py

def cycleLabel(e):
	str_list = []
	for set in e.tagSets:
		if set.hasTag('name'):
			str_list.append(set['name'])
	str_list.sort()
	return '+'.join(str_list)

und in der Rules-Datei importierst Du das py-Script und nutzt bei den Features osmnetwork und bei der Rule text-func

import-script:cycleLabel.py

features
	lines
		bike : osmnetwork[type=route AND route=bicycle]
rules
	target: bike
		define
			line-color : orange
			border-color : orange
		draw : line
		define
			text-func : cycleLabel(e)
			font-size : 12
			text-color : green
		draw : text

Grüße
Andreas

1 Like

@Harald_Hartmann sorry für die Verwirrung, name hatte ich ausprobiert, aber der Code spiegelt Bastelstand wieder, da hatte ich versucht unterschiedliche Parameter abzurufen. Tatsächlich hat maperitive im letzten Stand eine nicht ordentlich dokumentierte API.

@Andreas_Binder dass es nicht mehr entwickelt wird ist mir bekannt, QGIS hatte ich im Blick aber auf die Schnelle keinen Vektorimport via OSM hinbekommen. Solltest du dazu ein Tutorial (oder ein paar Stichworte) kennen nehme ich das gerne an, da war ich dann vielleicht zu unfähig zu googlen?

das von dir genannte Python-Script hatte ich auch ausprobiert. Leider wird auch hier bei der Eigenschaft “name” der Straßennahme abgerufen. Ich habe zwischenzeitlich versucht mit meinen beschränkten Python Fähigkeit, mangels Dokumentation, das object set via Maperitive Konsole zu zerlegen. Leider konnte ich da nicht weiter herausfinden ob es weitere Eigenschaften gibt.

Das hört sich danach an, dass du nicht

bei den features verwendet hast. Kann das sein?

Grüße
Andreas

Bam. Dann war mein Gedanke “falscher Datentyp” zwar korrekt aber ich habs falsch gedacht. Damit ist das python script übrigens gar nicht nötig. “name” funktioniert ganz hervorragend als text-Eigenschaft

Ja, ohne Py geht es auch, solange jede Straße nur zu einer Radroute gehört. Wenn eine Straße zu mehreren Radrouten gehört, sorgt das Py dafür, dass die Routennamen zu einem “Gesamtnamen” verkettet werden.

1 Like

Das einfachste ist das QuickOSM Plugin, in diesem Video ganz gut erklärt. QGis kann aber auch das .osm Format öffnen, z.B. aus JOSM. Wenn es immer aktuell bleiben soll, wird man aber nicht um eine Datenbank herumkommen, z.B. postgresql mit der postgis Extension, usw. Hier auf einfach mal auf dem Youtube Kanal von der FossGIS in den Vorträgen stöbern :wink: