Maperative: meine ersten Style-Anpassungen

Wo gibts da Probleme?

Generell (gilt nicht nur für Maperitive) gibts es mit MP bzw. auch/besondes bei Relationen das Problem wenn eine Fläche aus meheren Linien erstellt wird.

Liegt eine Linie komplett ausserhalb des Auschnitts wird dies auch nicht in dem Ausschnitt sein - dadurch kann aber keine geschlossene Fläche erzeugt werden - fehlt ja eine Linie und der Renderer weiß ja nicht das die Linie A jetzt mit Linie C verbunden werden soll weil ja Linie B fehlt…

Um dies zu umgehen muß man beim AUschneiden entsprechend mitteilen das die Relation / MP komplett mit ausgeschnitten wird.

mit osmconvert:

osmconvert --complex-ways --drop-version --drop-author --emulate-osmosis …

erzeugt entsprechendes.

Zu beachten ist das osmconvert nur mit PBF-Dateien klar kommt die kleiner als 2 GB (gilt nur bei Windows!!!).

= großräumiger Vorausschnitt ohne --complex-ways dann mit --complex-ways gewünschtes Gebiet

hi !

erst einmal wieder danke.

Fange ich von hinten an - es war erst einmal eine generelle Frage zu den Relationen bevor ich damit anfange diese zu verarbeiten.

@tunnelbauer:

Wir hatten schon gestern ausführlich über die Kirche gesprochen. Aber irgendwie bekomme ich das noch nicht so ganz umgesetzt. Wenn ich die Kirchen-tags von dem Gebäude trenne ist mir das klar, wie ich soetwas darstelle.

Das würde aber immer bedeuten das man in jedem Plan oder bei neuem OSM-Datenstand die Kirche- und Gebäude-Informationen trennen muss.

Dann muss ich aber auch die Texte von den Gebäuden entfernen - dann werden aber auch andere Gebäude nicht mehr beschriftet. Irgendwie komme ich mit der Lösung nicht ganz klar; schon rein gedanklich.

Mit dem Parkplatz ist das ja ähnlich - dort ist eine Fläche auf dem der Name steht und dann noch das P-Symbol.

Hier nochmal das Bild dazu:

**Ergänzung
**
Warum wird die Zeile mit dem Text “Kläranlage” angemerkt ?

Dann versuche ich noch einen Path als Fläche auszuprägen mit

abgleitet von der nachfolgenden pedestrian - aber leider ohne erfolgt. (Rules wieder aktuell) Das Area ist in der Rule VOR dem “normlaten” Path definiert !

Gruß Jan :slight_smile:

Kläranlage wird wegen dem Sonderzeichen " ä " angemekert!

Könntest inn der Google Group mal Igor darauf hinweisen das da noch ein Bug drin ist!

Du kannst keine Linie zu eine Fläche konvertieren

der Path ist keine geschlossene Linie und nur diese (Bzw. entsprechendes als MP oder Realtion) ergibt eine area.

Bezüglich Doppelbeschriftung

Die Infos für die Kirche sind doppelt vorhanden 1. Node und dann in der area - wenn beide sich Überdecken könnte die Labelcollision einen Text ausblenden - bin mir aber nicht sicher ob das bei verschiedenen Objekten (Node+Area) der Fall ist

Bei dem Parkplatz ist das anders diese hat ja einen Namen und die Eigenschaft parkplatz.

Beide Eigenschaften verarbeitest du ja in deinen Rules und der name hat ja erstmal nichts mit dem Parkplatz zu tun.

Was ich noch immer nicht verstehe:

Parkplatz:

Hier hast du einen POI und eine Fläche in der OSM-Datenbank.
Willst du beides auswerten? Willst du nur die Fläche auswerten oder willst du nur den POI auswerten? Wenn es dir darum geht, dass der Parklplatz nicht doppelt vorkommen soll aber die Fläche und/oder der POI ausgewertet werden soll, dann gilt für die OSM-Datenbank: Es darf nur entweder oder vorhanden sein. Kommt beides vor, wird es doppelt beschriftet.

Selbiges gilt dann analog für die Kirche.

rendering rules mit label (nur die Fläche wird ausgewertet):


eatures
	points, areas
		//parking : amenity=parking

Hier musst du das Berücksichtigen des POIs deaktivieren (erfolgt durch //)


		elseif : car park
			define
				fill-color : #F6EEB7
			draw : text

In den area-features das “draw : text” ergänzen. Dann wir der Parkplatz anhand des name-Tags der area beschriftet.

hi !

ich fange mal langsam an zu testen.

@Kläranlage → gepostet https://groups.google.com/forum/?fromgroups=#!topic/maperitive/CTxlCB64RpM

@path_area
Die ist geschlossen → http://www.openstreetmap.org/browse/way/189173766

@Parkplatz
Das ist ein Element und deshalb verstehe ich nicht warum Ihr von 2 Elmentne spricht. → http://www.openstreetmap.org/browse/way/178263496
Ebenso die Kirche → http://www.openstreetmap.org/browse/way/178263520

Das verstehe ich irgendwie gar nicht !

Gruß Jan :slight_smile:

Er muß beides Auswerten, da grade bei Parkplätzen und Kirchen diese als Node wie auch als Area getaggt sind.

Einzige Alternativeist dies in einem preProzess zu verarbeiten:

Allerdings hab ich damit keine Erfahrung.

Man kann zwar mit --all-to-nodes alle Taggs von Linien und Flächen zu einem Node wandeln.

In eine zweiten OSM-Datei müsste man dann alle Taggs von den Node entfernen (könnte mit osmfilter gehen)

Diese beiden Dateien dann in Maperitive und nur die Nodes als Beschriftung für Flächen verwenden.
Dann währen zwar immer noch den Node von der Kirche 2mal drinn (vom Node und zum Node gewandelten Fläche), aber mit der Labelcollision würde es nurnoch einmal erscheinen (falls diese an der selben Stelle liegen).

Scheint mir doch etwas viel Aufwand für den effekt.

Besser währe narürlich die Daten aus eine Datenbank abzurufen da ist es möglich einen Umkreis festzulegen wo kein weiterer Parkpaltz erscheinen darft…

Moin !

ich muss nochmal wieder etwas in Raum stellen.

Derzeit kämpfe ich verzweifelt darum “leisure=sports_centre” darzustellen. Es geht als Beispiel um die Fläche XXXXXX. Diese wird einfach nicht dargestellt.

Definiert ist das ganze über

in demselben target : $featuretype(area)-Block wie landuse=commercial und das wird nebenan gerendert.

Hat einer von Euch einen guten Tipp ?

Die Regel ist wieder aktuallisiert worden.

Gruß Jan :slight_smile:

hi !

ich habe etwas gebastelt und es hinbekommen die Kirche und auch den Parkplatz soanzuzeigen das keine Doppelbenennung vorliegt bzw. die Nodes und die Flächen zu trennen.

Es mag nicht das Non-Plus-Ultra sein - aber es funktioniert. Hier meine Lösungsansätze.

Parkplatz

Durch Ergänzung von node[] wird die Punkt-Regel nur auf diesen angewandt

parking : node[amenity=parking]

Dann kann der Parkplatz in der Fläche entsprechend angepaßt werden. Die Regel

car park: amenity=parking

bleibt und wird wie folgt ergänzt:

		elseif : car park
			define
				icon-image : icons/blackwhite/20/transport_parking.p.000000.20.png
				min-zoom : 15
				icon-width : 16
			draw : icon
			define
				text-offset-vertical : 200%
				fill-color : #F6EEB7
			draw : text

Kirche
HIer wird es etwas umständlicher da ich bei den Gebäuden die Beschriftung unterdrücken muss und gleichzeit mit dem globalen Filter building=* arbeiten will.

Für “einfache” Kirchen-Nodes gilt wie beim Parkplatz

church : node[amenity=place_of_worship AND religion=christian]

Vvon der allgemeinen Gebäude-Darstellung schließe ich einige (hier die Kirche) Objekte aus

building : building AND NOT (amenity=place_of_worship OR xxx)

und für diese definiere ich dann eine eigene Rule

building_unlabeled : building=church
		elseif : building_unlabeled
			define
				min-zoom : 10
				text-halo-width : 0
				font-size : 10
				font-weight : normal
				placement-value : 0.01
				text-halo-width : 35%
				text-halo-opacity : 1
				text-halo-color : #F1EEE8
				text: @if(name,"")
			draw : text

Bisher ist mir leider noch kein Weg untergekommen wie ich die Beschriftung unterdrücken kann - deshalb habe ich mir ein Workaround einfallen lassen:

text: @if(name,"")

Vielleicht hat einer eine Idee hierzu?

So das soll es dazu gewesen sein - etwas aufwendiger, aber es funktioniert. Die Regel ist aktuell wieder hochgeladen.

NEUE FRAGE

Enden will ich aber wieder mit einer Frage - es geht um ein Baumsymbol. Das sollte auf dem Punkt mit dem “Fuss” stehen wo auch der Node ist. Icons werden aber immer in der Mitte platziert. Eine Eigenschaft für ein Offset bei Icons habe ich nicht gefunden. Kann mir einer weiterhelfen ?

Gruß Jan :slight_smile:

Zum Thema building_unlabeled: Lass unten das draw : text weg und du kannst dir den ganzen Zinnober oberhalb sparen.

Orientierung der Symbole: http://maperitive.net/docs/Symbols/icon.html

Wer lesen kann ist klar im Vorteil.

hi Jan,
hast du mal mit align-vertical und align-horizontal rumgespielt? eventuell bringt das ja was.
Kann es selber derzeit nicht ausprobieren.
Gruss
walter

hi !

hast du mal mit align-vertical und align-horizontal rumgespielt?

ich hatte immer nach einem Offset gesucht ! Auf align* war ich gar nicht gekommen!

Danke !

gruß Jan :slight_smile:

Moin!

vor dem Mittag habe ich da noch ein neues Problem - entweder allgemeines Verständnis-Problem oder aber ein simpler Gedankenfehler und ich würde mich auch hier über Unterstützung freuen.

Die Daten beziehen sich auf die aktuelle Rule sowie meine Konfig-Vorlage. Dort gibt es 4 Gebäude die 2 Kirchen darstellen. Links immer nur building=church mit/ohne religion=christian. Auf der rechten Seite building=yes mit amenity=place_of_warship mit / ohne religion=christian.

http://www.tappenbeck.net/forum/maperative/stadtplan_jt.mrules
http://tappenbeck.net/forum/maperative/Legende_JT.osm

Definiert habe ich folgendes für die Areas - die nodes sind gesondert definiert

		building church : (building=yes AND amenity=place_of_worship) OR building=church
		building church christian: (building=yes AND amenity=place_of_worship AND religion=christian) OR (building=church AND religion=christian)

	target : building*
		define
//			fill-color : #FFFFFF
			fill-color : #BCA9A9
			line-style : none
		draw : fill
		define
			text-offset-vertical : 200%
			fill-color : #F6EEB7
		draw : text		
		if : *church
			define
				min-zoom : 15
				icon-width : 16
				icon-image : icons/blackwhite/20/place_of_worship_unknown3.glow.000000.20.p.000000.20.png
		if : *church christian
			define
				min-zoom : 15
				icon-width : 16
				icon-image : icons/blackwhite/20/place_of_worship_christian3.p.000000.20.png
		elseif : *hotel
			define
				min-zoom : 15
				icon-width : 16
				icon-image : icons/blackwhite/20/accommodation_hotel2.p.000000.20.png
		else
			stop
		draw : icon

Hat einer eine Idee warum nur ein Icon für Christian angezeigt wird - alternitv müßte das unbekannt-Icon dargestellt werden !?!?!

Jan :slight_smile:

Also mir stellt er sowieso keine Icons dar, da ich deine Icons nicht habe. Thema erledigt.

(Würdest du wissen was du tust, dann wären die Pfade der Icons auf einen Server gerichtet und nicht auf deine Festplatte…)

Ausserdem sehe ich in der osm-Datei gefühlte 10 Millionen Objekte…

Hi !

Sorry - ich packe die gleich einmal und stehen unter

http://www.tappenbeck.net/forum/maperative/blackwhite20.zip

bereit.

gruß Jan :slight_smile:

Sorry - ich verbiege nicht mein System nach deinen Vorstellungen. Das muss umgekehrt laufen…

hi !

wieso - ich habe nur den Ordner *blackwhite *in den Ordner Icons von der Maperitive-Installation gelegt.

[Maperitive-Installationsverzeichnis]\icons\blackwhite

Was hast Du anders ?

gruß Jan :slight_smile:

Weil ich keine zips von mir Unbekannten aufmache? Oder nimmst du Zuckerl von dir fremden an?

HI !

das ist ja kein Verbiegen - das ist ja eine Grundsatzfrage.

Hast Du keinen Virenchecker ? Soll ich sonst mailen - als “Unbekannter” oder kennst Du die anderen Programmierer in aller Welt (z.b. JOSM) ?

Gruß Jan :slight_smile:

gelöscht - war Blödsinn.

hi !

habe das nochmal auf ein Minimum reduziert und mit den Maperitive-Icons verlinkt.

Vielleicht ist es so einfacher.

Gruß Jan :slight_smile:

// Default rendering rules for Maperitive resembling that of OSM Mapnik
// http://maperitive.net

// Created by Igor Brejc
// Released under the Creative Commons Attribution-ShareAlike 3.0 License (http://creativecommons.org/licenses/by-sa/3.0/)
// Updates by Michael <quelbs_at_gmail.com>
// Icons used: Map icons CC-0 from SJJB Management (http://www.sjjb.co.uk/mapicons)
//
// modifi by Jan Tappenbeck, to test some configurations

features
	points, areas
		church christian: node[amenity=place_of_worship AND religion=christian]
		church : node[amenity=place_of_worship]
		
	areas
        // ----- Gebäude -----
		building church : (building=yes AND amenity=place_of_worship) OR building=church
		building church christian: (building=yes AND amenity=place_of_worship AND religion=christian) OR (building=church AND religion=christian)
		// hier muss noch differenziert werden
		building hotel : (building=yes AND tourism=hotel) OR building=hotel
		building : building AND NOT (amenity=place_of_worship OR amenity=hospital OR amenity=hotel)
		

properties
	map-background-color	: #F1EEE8
	map-background-opacity	: 1
	map-sea-color : #B5D0D0
	font-weight : bold
	font-family : Verdana
	text-max-width : 7
	text-halo-width : 25%
	text-halo-opacity : 0.75
	text-align-horizontal : center
	text-align-vertical : center
	font-stretch : 0.9
	map.rendering.lflp.min-buffer-space : 5
	map.rendering.lflp.max-allowed-corner-angle : 40

rules
		
	target : building*
		define
//			fill-color : #FFFFFF
			fill-color : #BCA9A9
			line-style : none
		draw : fill
		define
			text-offset-vertical : 200%
			fill-color : #F6EEB7
		draw : text		
		if : *church
			define
				min-zoom : 15
				icon-width : 16
				icon-image : icons/SJJB/png/place_of_worship.glow.32.png
		elseif : *church christian
			define
				min-zoom : 15
				icon-width : 16
				icon-image : icons/SJJB/png/place_of_worship_christian3.glow.32.png
		else
			stop
		draw : icon

	
		
	target : church*
		define
			text-offset-vertical : 250%
		draw : text
		if : *christian
			define
				min-zoom : 15
				icon-width : 16
				icon-image : icons/SJJB/png/place_of_worship_christian3.glow.32.png
		else
			define
				min-zoom : 15
				icon-width : 16
				icon-image : icons/SJJB/png/place_of_worship.glow.32.png
		draw : icon