[Talk-de] mapnik und relationen
Sarah Hoffmann
lonvia at denofr.de
Di Dez 1 23:15:26 UTC 2009
On Tue, Dec 01, 2009 at 07:08:29PM +0100, Stephan Olbrich wrote:
> > On Mon, Nov 30, 2009 at 06:47:35PM +0100, Stephan Olbrich wrote:
> > > Hallo zusammen,
> > >
> > > gibt es irgendwo eine Anleitung, wie ich mapnik dazu bewegen kann
> > > Relationen zu rendern? (Und was ich alles beim Import der Daten in die
> > > Datenbank beachten muss, etc.)
> >
> > Es kommt darauf an, was du machen willst. Wenn du einfach die Wege
> > rendern willst, die in einer Relation enthalten sind und
> > solange es Relationen sind, die ein type-Tag haben, kannst du osm2pgsql
> > benutzen.[1] (Zumindest laut Sourcecode, probiert habe ich das bisher nur
> > mit type=route-Relationen.)
> >
> > Einfach in default.style die entsprechenden Tags eintragen, die
> > du von der Relation brauchst. Die Relationen finden sich dann wie alle
> > anderen Wege in planet_osm_line und das Rendern funktioniert genauso
> > wie für normale Wege. Zu beachten ist höchstens noch, dass es für eine
> > Relation mehrere Einträge geben kann, nämlich dann, wenn es Lücken gibt.
> > Geschachtelte Relationen funktionieren nicht.
>
> Genau sowas suche ich. Könntest Du mir als Beispiel Deinen default.style und
> Mapnik-Renderregeln schicken? (Oder die relevanten Ausschnitte)
Die Dateien, die ich für die Wanderkarte benutze, findest du hier:
http://osm.lonvia.de/dev/default.style
http://osm.lonvia.de/dev/hiking.xml
Letzteres ist aber mit Vorsicht zu geniessen, weil ich die Daten aus der
Datenbank vorverarbeite und in einer eigenen Tabelle abspeichere. Aber das
Prinzip ist das gleiche. Also, wenn du zum Beispiel alle nationalen
Wanderwege rendern willst, sieht der einfachste Mapnik-Stil dazu so aus:
<Map bgcolor="#FFFFFF" srs="+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 + lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs +over">
<Style name="nwn_big">
<Rule>
<LineSymbolizer>
<CssParameter name="stroke">#152eec</CssParameter>
<CssParameter name="stroke-width">1.5</CssParameter>
</LineSymbolizer>
</Rule>
</Style>
<Layer name="nwn_big" status="on">
<Datasource>
<Parameter name="type">postgis</Parameter>
<Parameter name="port">5432</Parameter>
<Parameter name="estimate_extent">false</Parameter>
<Parameter name="extent">-20037508,-19929239,20037508,19929239</Parameter>
<Parameter name="dbname">planet</Parameter>
<Parameter name="user">osm</Parameter>
<Parameter name="table">(select way from planet_osm_line where nwn is not null) as ways</Parameter>
</Datasource>
<StyleName>nwn_big</StyleName>
</Layer>
</Map>
(Anmerkung: für die Spalten nwn, rwn, lwn gibt es hart-kodierte Regeln
im Sourcecode, wie diese aus dem network-Tag zu entnehmen sind. Das ganze
ist historisch motiviert, weil es Zeiten gab, wo Wander- und Radrouten
nicht in Relationen, sondern mit einem Tag am Weg gekennzeichnet wurden.
Du kannst natürlich auch das network-Tag auswerten, musst es dann aber
in default.style nachtragen.)
Für weitere Experimente empfehle ich die Mapnik-Style-Referenz
http://trac.mapnik.org/wiki/XMLConfigReference
zu studieren und einen Blick in die XML-Style-Datei der Hauptkarte zu
werfen.
Gruss
Sarah
Mehr Informationen über die Mailingliste Talk-de