Maperative: Flächendarstellung

Moin !

nach der tollen Unterstützung zum Wochenende bin ich noch einmal auf einer anderen Baustelle angekommen die ich bis jetzt nicht in Griff bekommen habe. Es geht diesmal nochmal um die Darstellung von Flächen.

In meinem Beispiel versuche ich auf dem Sportplatz in Albersdorf das leisure=sport_centre darzustellen was nach dem find-Befehl vorhanden ist.

Das Problem liegt in dem Fall vor, wenn die übergreifende Darstellung von landuse=residental (http://www.openstreetmap.org/browse/way/189325812) mit angezeigt werden soll. Dieses überdeckt das sport_centre.

Kann mir einer weiterhelfen ?

Nachfolgend der Rules-Code. Die vollständige Datei ist zu finden unter http://www.tappenbeck.net/forum/maperative/stadtplan_jt.mrules

Gruß Jan :slight_smile:


	areas
		// -- Definition für die Darstellung in der Legendenkonfiguration
		all areas :
		//
		// -- allgemeine Gebäude
		building all : building AND @isFalse(amenity) AND @isFalse(religion) AND @isFalse(tourism) AND @isFalse(shop) AND NOT building=church  AND NOT building=capel  AND NOT building=cathedral AND NOT building=hotel AND NOT building=supermarket AND NOT amenity=university AND NOT amenity=school
		// townhall - public building
		// -- Shop
		// -- Religion
		building church : ((building=yes AND amenity=place_of_worship) OR ((building=church OR building=cathedral OR building=capel) AND @isFalse(religion)))
		building church christian: (building=yes AND amenity=place_of_worship AND religion=christian) OR ((building=church OR building=cathedral OR building=capel) AND religion=christian)
		building church jewish: (building=yes AND amenity=place_of_worship AND religion=jewish) OR ((building=church OR building=cathedral OR building=capel) AND religion=jewish)
		building church muslim: (building=yes AND amenity=place_of_worship AND religion=muslim) OR ((building=church OR building=cathedral OR building=capel) AND religion=muslim)
		building hotel : (building=yes AND tourism=hotel) OR building=hotel
		// -- Bildung
		building school : (building=yes AND amenity=school) OR building=school
		building uni : (building=yes AND amenity=university) OR building=university
		// -- Gesundheit

		
		beach : natural=beach
		missing : note=missing
		water : natural=water OR waterway=riverbank OR landuse=reservoir OR landuse=basin
		village green : landuse=village_green
		forest : landuse=forest OR natural=wood
		farm : landuse=farm
		farmyard:landuse=farmyard
		grass : landuse=grass
		fell : natural=fell
		glacier : natural=glacier
		national park : boundary=national_park
		allotments : landuse=allotments
		academic : node[@isOneOf(amenity, university, college, school)] area[@isOneOf(amenity, university, college, school)]
		meadow : natural=meadow OR landuse=meadow
		scrub : natural=scrub
		energie_bio : generator:source = biofuel
		nature reserve : leisure=nature_reserve
		playground : leisure=playground
		car park: amenity=parking
		track : leisure=track
		graveyard : amenity=grave_yard OR landuse=cemetery
		military : landuse=military OR military=barracks
		park : leisure=park
		leisure garden : leisure=garden
		leisure pitch : leisure=pitch
		leisure stadium : leisure=stadium
		landuse retail : landuse=retail
		landuse industrial : landuse=industrial
		commercial area : landuse=commercial
		residential area : landuse=residential
		aeroway apron : aeroway=apron
		aeroway terminal : aeroway=terminal
		highway pedestrian : highway=pedestrian
		orchard : landuse=orchard
		farmland : landuse=farmland
		quarry : landuse=quarry
		leisure sports_centre : leisure=sports_centre

	target : $featuretype(area)
		define
			line-style : none
			line-width : 1
		if : forest
			define
				min-zoom : 10
				text-halo-width : 0
				font-size : 10
				placement-value : 0.01
				text-halo-width : 35%
				text-halo-opacity : 1
				text-halo-color : #F1EEE8
			draw : text
			define
				min-zoom : 9
				fill-texture : Textures/W-Mischwald.PNG
				//fill-color : #8DC56C
		elseif : leisure sports_centre
			define
				min-zoom : 10
				fill-color : #CCFEF0
		elseif : wetland
			define
				min-zoom : 10
				fill-texture : Textures/W-Moor-trans.PNG
		elseif : reedbed
			define
				min-zoom : 10
				fill-texture : Textures/jt_wetland_reedbed.PNG
		elseif : beach
			define
				min-zoom : 10
				fill-color : #FEFEC0
		elseif : footway area
			define
				min-zoom : 10
				fill-color : #FEFEC0
		elseif : farm
			define
				min-zoom : 9
				fill-color : #E9D8BD
		elseif : farmyard
			define
				min-zoom : 9
				fill-color : #DCBE91
		elseif : landuse railway
			define
				min-zoom : 9
				fill-color : #DCBE91
		elseif : fell
			define
				fill-color : #C5FF5B black 10%
		elseif : swimming		
			define
				fill-color : #B5D0D0
		elseif : water
			define
				fill-color : #B5D0D0
		elseif:academic
			define
				fill-color : #F0F0D8
				line-color : #E5D2CC
				line-style : solid
		elseif : leisure sports_centre
			define
				min-zoom : 10
				fill-color : #CCFEF0
		elseif : residential area
			define
				fill-color : #DCDCDC
		elseif : grass
			define
				fill-color : #CFECA8
		elseif : allotments
			define
				fill-color : #C8B084
		elseif : meadow

 ....

Work around:

“fill-opacity” für residential auf “0.25” setzen (und dann bei den Umhüllenden der anderen Flächen eventuell die Lininestärke rausnehmen oder reduzieren)

Ich hab zwar deine Rules nicht getestet aber ich würd mal sagen:

elseif : leisure sports_centre
define
min-zoom : 10
fill-color : #CCFEF0
elseif : residential area
define
fill-color : #DCDCDC

  1. In deinen elseif ist das [ leisure sports_centre ] 2. mal vorhanden - sollte nur einmal.

  2. die Reihenfolge ist beim Rendern auch zu beachten! - Da gilt das Target

Hier malst du erst leisure sports_centre und darüber dann residential area …
was nrtürlich in einem Wohngebiet nicht gut zu sehen ist.

Massnahmen:
Reihenfolge umkehren
Transparent füllen entweder wie tunnelbauer empfiehlt mit fill-opacity oder transparenten Texturenen (NSG, Miltitägebiete)
oder als ultimo ins target des entsprechenden Objekts noch: map.rendering.topmost-layer : True einfügen
(verwende ich bei Wasserflächen - da doch recht oft ohne MP Seen in Waldgebieten erfasst werden)

hi !

danke erst einmal Euch beiden. Das mit dem Workaround würde ich als Notlösung sehen.

Das ich das doppelt hatte war wohl schon betriebsblind. Entfernt!

Die aktuelle Variante steht jetzt unten - aber egel ob residental - sport oder sport - residental, es wird nichts anderes angezeigt!

gruß Jan :slight_smile:

	target : $featuretype(area)
		define
			line-style : none
			line-width : 1
		if : forest
			define
				min-zoom : 10
				text-halo-width : 0
				font-size : 10
				placement-value : 0.01
				text-halo-width : 35%
				text-halo-opacity : 1
				text-halo-color : #F1EEE8
			draw : text
			define
				min-zoom : 9
				fill-texture : Textures/W-Mischwald.PNG
				//fill-color : #8DC56C
		elseif : wetland
			define
				min-zoom : 10
				fill-texture : Textures/W-Moor-trans.PNG
		elseif : reedbed
			define
				min-zoom : 10
				fill-texture : Textures/jt_wetland_reedbed.PNG
		elseif : beach
			define
				min-zoom : 10
				fill-color : #FEFEC0
		elseif : footway area
			define
				min-zoom : 10
				fill-color : #FEFEC0
		elseif : farm
			define
				min-zoom : 9
				fill-color : #E9D8BD
		elseif : farmyard
			define
				min-zoom : 9
				fill-color : #DCBE91
		elseif : landuse railway
			define
				min-zoom : 9
				fill-color : #DCBE91
		elseif : fell
			define
				fill-color : #C5FF5B black 10%
		elseif : swimming		
			define
				fill-color : #B5D0D0
		elseif : water
			define
				fill-color : #B5D0D0
		elseif:academic
			define
				fill-color : #F0F0D8
				line-color : #E5D2CC
				line-style : solid
		elseif : residential area
			define
				fill-color : #DCDCDC
		elseif : leisure sports_centre
			define
				min-zoom : 10
				fill-color : #CCFEF0
		elseif : grass
			define

Also aus meiner Sicht ist die Definition sports_centre nur einmal enhalten (Zeile 119+461). Zeile 62 ist nämlich auskommentiert.

map.rendering.topmost-layer geht auch nicht, da er sonst das sports_centre über den Platz auch noch legt - das will Jan glaub ich auch nicht…

Wird somit beim Semitransparent bleiben.

Die Reihenfolge unter area spielt auch eine Rolle

mit:

	leisure sports_centre : leisure=sports_centre
	residential area : landuse=residential

wird es gezeichnet und mit

	residential area : landuse=residential
	leisure sports_centre : leisure=sports_centre

überdeckt.

MHH irgendwie sind da zwei Hirachiegebende Ebenen ist mir da irgendwie noch garnicht aufgefallen. Muß ich selbe mal nachhaken ob das unter elseif andest ist wie in den normalen target’s

hi !

+1, vielen Dank.

Jetzt nur noch eine Frage zum Schluss - habt Ihr noch einen Trick wie man die Rules am besten bearbeitet (Editor).

So ganz effektiv ist das ja nicht mit dem ständigen hoch und runter scrollen und wieder suchen.

Gruß Jan :slight_smile:

Hallo Jan

Nimm einfach einen Editor, der eine Datei in zwei verschiedenen Fenstern öffnen kann.
Für Windows oder Linux habe ich leider keinen Tipp.
Auf dem Mac verwende ich Textwrangler von BareBonesSoftware.

Edbert (EvanE)

Da kann ich aushelfen:
Notepad++ (Windows)
Kate (Linux, Windows)

Beide haben viele nützliche Funktionen: mehrere parallele Ansichten, Bookmarks (Zeilen markieren und zwischen markierten Zeilen springen), Syntax-Highlighting (ok, (noch) nicht für Maperitive), automatische Ergänzung schon einmal benutzter Wörter, automatische Einrückung (gut, das sollte jeder Editor mit Ausnahme des Windows Notepad können).

zurückgezogen !

Mahlzeit - jetzt ist kurz Zeit für eine Frage.

Kann man eigentlich in Maperitive Variablen definieren die man “oben” zuweißt und im laufe der Rules dann wieder verwendet?

gruß Jan :slight_smile: