Hallo liebe Kartografie-Experten,
für unser aktuelles Semester brauchen wir einen modifizierten Schwarzplan von Köln. Die Regeln für Maperitive habe ich schon. Allerdings weiß ich nicht, wie ich die Stadtgrenzen (oder auch Stadtteilgrenzen) wieder anzeigen lassen kann. Weiß da jemand, wie ich rauskriege, was ich in die .rules Datei schreiben muss, damit dies geht? Mit der aktuellen Konfiguration klappts nicht.
Hier kann man die Stadtgrenze auf dem Rhein und nördlich von Hitdorf sehen, diese will ich etwa in dem Stil auch behalten zusammen mit den Gebäuden und der Wasserfläche.
So sieht sie aktuell aus:
// Rules for Maperitive by ABRob/quasilotte
//
// Schwarzplan
features
areas
building : building
water : natural=water OR waterway=riverbank OR landuse=reservoir OR landuse=basin OR natural=lake OR natural=sea
lines
boundary country : boundary=administrative AND admin_level=2
boundary country : border_type=nation
boundary district : boundary=administrative AND admin_level=4
boundary canton : boundary=administrative AND admin_level=5
boundary commune : boundary=administrative AND admin_level=6
boundary municipal : boundary=administrative AND admin_level=8
boundary quartier : boundary=administrative AND admin_level=9
// railway : railway=rail
properties
map-background-color : #FFFFFF
line-style : none
rules
target : building
define
fill-color : black
draw : fill
target :water
define
min-zoom : 10
fill-color : #808080
draw : fill
target : railway
define
line-style : dashlong
line-color : white
line-width : 2
border-style : solid
border-color : #a1a1a1
border-width : 50%
draw : line
target : boundary
define
line-opacity : 1
if : boundary country
define
line-color : #0000FF
line-style : solid
line-width : 6:1;9:3;10:6
elseif : boundary district
define
line-color : #9900FF
line-opacity : 1
min-zoom : 4
line-width : 3:1;11:7
line-style : dash
elseif : boundary canton
define
line-color : #FF0000
line-opacity : 1
min-zoom : 6
line-width : 3:1;9:2;11:7
line-style : dot
elseif : boundary commune
define
line-color : #999900
line-opacity : 1
min-zoom : 8
line-width : 9:1;11:5
line-style : dashdotdot
elseif : boundary municipal
define
min-zoom : 12
line-color : #660000
line-width : 12:1;14:2
line-style : dash
elseif : boundary quartier
define
line-color : #66FF66
min-zoom : 8
line-width : 9:0.1;11:1
line-style : dot
draw : line
Die Eisenbahn habe ich erstmal ausgeklammert, da wir sie noch nicht brauen. Die Stadtgrenzen wären aber sehr wichtig, da wir wissen müssen, bis wohin die Kölner Bebbauung reicht.
Kann man sogar alles außerhalb Kölns beim Export ausblenden?
leider habe ich jetzt aktuell kein Maperitive am laufen um es sicher sagen zu können, aber müsste es nicht
boundary commune: relation[boundary=administrative AND admin_level=6]
sein? Und natürlich muss die entsprechende admin-boundary auch in euren Rohdaten sein, nicht das die z.B. beim Filter rausgeschmissen wurden. Desweiteren würde ich mir von wambachers boundaries map das poly für Köln holen und damit filtern, dann sollte alles außerhalb dieser Grenzen eh schon weg sein.
PS: Wie hab ihr denn überhaupt “exportiert” oder gefilter bzw. eure Rohdaten wie erzeugt?
ADD: nur zur Feststellung, bei eurem
boundary commune : boundary=administrative AND admin_level=6
würde meiner Meinung nach nur die Ways mit diesen Eigenschaften gefiltert werden, aber eigentlich sollten diese Eigenschaften gar nicht an den Ways sein, sondern nur in der Relation stehen
“target : boundary” heißt, dass der folgende Abschnitt für die Klasse “boundary” gilt, aber du hast keine Klasse “boundary”, sondern “boundary country”, “boundary county” usw. definiert. “target: boundary*” dürfte aber funktionieren.
Nicht so ohne weiteres. Selbst wenn du mit Osmium oder Osmconvert exakt an der Stadtgrenze abschneiden würdest, würden die Geometrien immer noch darüber hinaus ragen. Mir fällt auf Anhieb auch keine Software ein, die direkt an der Grenze die Geometrien abschneidet, da das nicht trivial ist. Mein Vorschlag wäre im Falle von Maperitive (bei Mapnik und Mapserver wäre es in dem Fall einfacher, aber deren Setup ist beim ersten Mal aufwendiger), von Hand ein Polygon zu zeichnen, das den außerkölnischen Teil der Welt/Karte umfasst, auf dem obersten Layer liegt und eine weiße Füllfarbe hat. Ich bin kein SVG-Guru, die wissen u.U. noch mehr.
Diese Einschränkung gilt in der Tat auch für meine Aussage weiter oben … da es aber hier hauptsächlich ja auf die Gebäude ankommt, habe ich das unterschlagen
Die Kartendaten wurden ganz normal mit der API von Maperitive runtergeladen (WebMap) und dann hat man ja die Offline OSM-File Karte. Diese mappt/rendert man ja mit den Regeln. Daher weiß ich auch nie, woher ich die “Namen” der Stadtgrenzen bekomme, sodass ich sie in den Regeln explizit weiter angezeigt bekomme.
Generell ist das Abschneiden aller Sachen außerhalb Köln nicht zwingend erforderlich, sondern nur ein “nice to have”.
EDIT: Danke für die Codezeile. Die Stadgrenze ist schonmal sichtbar. Jetzt muss ich nur noch rausfinden, wie ich Linienstärke und Farbe anpasse.
Stadtteilgrenzen lassen sich auch auf diesem Wege noch anzeigen, sofern mal im Semester Bedarf sein sollte?
Oh ha, da könntet ihr gerade nochmal Glück gehabt haben, weil wenn die Datenmenge zu groß ist, streikt dieser Weg.
Wie oben schon erwähnt die boundaries map von wambacher … zumindest dürfte das für euch der “einfachere” weg sein, oder eventuell auch via overpass turbo
ich würde mal sagen das sollte eigentlich selbstredend sein, oder?
Vermutlich ist dein Vorhaben auch mit Printmaps (http://printmaps-osm.de:8080/) realisierbar. Dies nur als Hinweis, denn so wie es aussieht bist du ja schon recht weit mit dem Maperative-Ansatz gekommen.
Ich finde eure alternativen Vorschläge mit den anderen Diensten wirklich ganz toll. Sieht auch auf den ersten Blick gut aus.
Problem ist nur, mir sagt das alles nichts. Mit GIS und co. kenne ich mich nur im Sinne von Maperitive etwas aus. Ich wüsste weder wie ich printmaps-osm, boundaries map noch overpass turbo benutzen kann…
Als BPOLY (Buffered Poly-File) mit einem Buffer von 0.1 km. Dadurch ist sichergestellt, dass die Grenze selber - also die Ways aus denen die Stadtgrenze besteht - nicht aus Versehen abgeschnitten wird.