Ich habe von meiner Gemeinde einen kleinen Aufrag bekommen, der mich aber nun doch schon zwei Tage beschäftigt, was diverse Gründe hat.
Der Auftrag ist eigentlich recht trivial (bis es an die Umsetzung geht): Bundeslandgrenzen, Autobahnen, Bundesstraßen, Rennsteig, Städe (>20.000 EW), Schleusegrund
Zuerst geht es an die Datenbeschaffung, die schonmal die ersten Probleme mit sich bringt, z.B. größere Teile von Bundesstraßen die nicht in einer Relation sind (z.B. B 85). Naja, aber mit folgenden zwei Kommandos habe ich zumindest erstmal einen brauchbaren Datenbestand:
// bbox extrahieren
osmconvert --drop-author -b=9.52,49.70,11.83,51.12 germany-latest.osm.pbf -o=uebersicht.o5m
// daten filtern
osmfilter uebersicht.o5m --keep="place=town =city place=municipality highway=* AND ref=B\ *" --keep-relations="route=hiking AND name=Rennsteig type=TMC AND name=A* route=road AND ref=B\ * boundary=administrative AND admin_level=4" -o=uebersicht.osm
und mit der maperitive rule (siehe unten) sieht es auf den ersten Blick gar nicht mal sooo schlecht aus:
Aber jetzt kommt ja dann noch das Finishing für die Druckaufbereitung, z.B. sollen nebenläufige Bundesstrassenabschnitte von Autobahnen (z.B. B26 Bamberg-Schweinfurt, B19 Würzburz-Schweinfurt, B 303 die zwischen Ebersdorf und Kronach zweigleisig verläuft?!) der übersichtlichkeithalber entfernt werden.
Ich habe also in maperitive einfach mal export-svg angeschmissen und den output mit Inkscape geöffnet, in der Annahme, dass ich dann Pfade oder Linien vorfinde, die ich dann ganz einfach bearbeiten/vereinfachen/kombinieren kann - so wie ich es schon jahrelang gewohnt bin … und das Drama nahm seinen Lauf:
Mehrere Ebenen selben Typs, Keine Pfade/Linien und keine Texte sondern Symbole (?!) (siehe Quelltext unten), Umwandlung von Objekt/Kontur in Pfade hilft nur teilweise, usw.
HILFE!!!
Wer kann mir hierbei weiterhelfen? Gerne auch TileMill oder QGis 2.x. Habe die Tage auch schon beides versucht, bin dort aber nur halb soweit gekommen, da ich aktuell leider kein funktionierendes PostGIS am Laufen habe, sondern z.B. in QGIS einfach die OSM-Daten in eine SpatialDB importiert habe (und dort die Relationen fehlen/nicht gehen?!).
ZIEL: vereinfacht gesagt 5 Ebenen (Bundeslandgrenzen, Autobahn, Bundesstrasse, Rennsteig, Städe) in inkscape und pro Ebene (außer Städe) zusammenhängende Linien/Pfade
PS: Nach den Tagen bin ich, wenn es um die Datenbeschaffung, das Drucken und der Druckaufbereitung mit OSM Daten geht doch ziemlich ernüchtert und ich mir schon überlege, wo ich überall Notes hinterlasse
maperitive rule:
features
points, areas
areas
lines
bundesstrasse : highway AND @isMatch (ref, "^B.*")
bundesstrasse : relation[(route=road AND @isMatch (ref, "^B.*"))]
autobahn : relation[type=TMC AND @isMatch (name, "^A.*")]
rennsteig: relation[type=route AND name=Rennsteig]
boundary : relation[boundary=administrative AND admin_level=4 AND NOT natural=coastline]
points
point town : ((place=town or place=city) AND population >= 25000)
point schleusegrund: place=municipality AND name="Schleusegrund"
properties
map-background-color : #FFFFFF
map-background-opacity : 1
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 : autobahn
define
min-zoom : 8
line-style : solid
line-join : round
line-start-cap : round
line-end-cap : round
line-style : solid
line-width : 8
line-color : #006eb4
draw : line
target : rennsteig
define
min-zoom : 8
line-color : #077100
line-opacity : 1
line-width : 6
draw : line
target : bundesstrasse
define
line-style : solid
line-join : round
line-start-cap : round
line-end-cap : round
line-style : solid
line-color : #FFD300
line-opacity : 1
line-width : 6
draw : line
target : point*
define
font-weight : bold
font-size : 10
define
shape : circle
shape-size : 8
fill-color : red
line-color : red
line-width : 1
if : *schleusegrund
define
shape-size : 15
define
font-size : 15
draw : shape
draw : text
target : boundary
define
line-width : 2
line-color : #954000
line-opacity : 1
line-style : dashdot
draw : line
output.svg
<?xml version="1.0" encoding="utf-8"?>
<svg xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" xml:space="preserve" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" x="0" y="0" width="433" height="433" clip-path="url(#MapClipRectangle)" style="overflow:hidden;text-rendering:optimizeLegibility" xmlns="http://www.w3.org/2000/svg">
<title>Map Generated Using Maperitive (http://maperitive.net)</title>
<desc>Map Generator: Maperitive v2.3.35 by Igor Brejc
Time: 03/25/2016 13:35:20
</desc>
<defs>
<clipPath clipPathUnits="userSpaceOnUse" id="MapClipRectangle">
<rect x="0" y="0" width="433" height="433" />
</clipPath>
<symbol id="1" style="fill:none">
<path d="M220.46 139.02 l0.38 -1.18 0.97 -0.89 1.26 -0.74 1.09 -0.6 1.57 -1.14 2.51 -2.42 1.04 -0.84 1.94 -1.35 2.65 -1.82 1.31 -0.83 1.44 -0.77" />
<path d="M236.61 126.4 l-1.48 0.77 -1.31 0.82 -2.66 1.82 -1.2 0.82 -1.47 1.08 -2.82 2.71 -1.07 0.82 -1.58 0.91 -1.25 0.72 -1 0.95 -0.38 1.21" />
</symbol>
<symbol id="3" style="fill:none">
<path d="M141.99 40.11 l-0.05 -0.12" />
<path d="M392.03 76.95 l-1.37 0.78" />
<path d="M390.7 77.77 l1.09 -0.71 0.25 -0.06" />
<path d="M63.41 406.67 l0.02 -0.16" />
</symbol>
<symbol id="4" style="fill:none">
<path d="M141.99 40.11 l-0.05 -0.12" />
<path d="M63.41 406.67 l0.02 -0.16" />
<path d="M52.92 346.93 l-0.56 1.54" />
</symbol>
...
<symbol id="symbol_shape_1" style="fill:#FF0000;stroke-linejoin:round;stroke:#FF0000">
<circle cx="0" cy="0" r="15" />
</symbol>
<symbol id="symbol_shape_2" style="fill:#FF0000;stroke-linejoin:round;stroke:#FF0000">
<circle cx="0" cy="0" r="8" />
</symbol>
<symbol id="symbol_text_3">
<text transform="translate(200.92,184.27) scale(0.9,1)">Schleusegrund</text>
<text transform="translate(200.92,184.27) scale(0.9,1)">Schleusegrund</text>
</symbol>
<symbol id="symbol_text_4">
<text transform="translate(209.96,161.79) scale(0.9,1)">Suhl</text>
<text transform="translate(209.96,161.79) scale(0.9,1)">Suhl</text>
</symbol>
...
</defs>
<g id="Map_background" style="fill:#F1EEE8;stroke:#000000" inkscape:groupmode="layer" inkscape:label="Map background">
<g id="map_background" inkscape:groupmode="layer" inkscape:label="map background">
<rect x="0" y="0" width="433" height="433" id="Map_Background_Fill" style="stroke:none" />
</g>
</g>
<g id="Line_artwork" style="stroke-linejoin:round" inkscape:groupmode="layer" inkscape:label="Line artwork">
<g id="autobahn" style="stroke-linecap:round;stroke:#006EB4;stroke-width:8" inkscape:groupmode="layer" inkscape:label="autobahn">
<use xlink:href="#1" />
</g>
<g id="bundesstrasse" style="stroke-linecap:round;stroke:#FFD300;stroke-width:6" inkscape:groupmode="layer" inkscape:label="bundesstrasse">
<use xlink:href="#3" />
</g>
<g id="bundesstrasse1" style="stroke-linecap:round;stroke:#FFD300;stroke-width:6" inkscape:groupmode="layer" inkscape:label="bundesstrasse">
<use xlink:href="#4" />
</g>
<g id="autobahn1" style="stroke-linecap:round;stroke:#006EB4;stroke-width:8" inkscape:groupmode="layer" inkscape:label="autobahn">
<use xlink:href="#5" />
</g>
<g id="boundary" style="stroke-dasharray:6,2,2,2;stroke:#954000;stroke-width:2" inkscape:groupmode="layer" inkscape:label="boundary">
<use xlink:href="#6" />
</g>
<g id="bundesstrasse11" style="stroke-linecap:round;stroke:#FFD300;stroke-width:6" inkscape:groupmode="layer" inkscape:label="bundesstrasse">
<use xlink:href="#7" />
</g>
<g id="bundesstrasse111" style="stroke-linecap:round;stroke:#FFD300;stroke-width:6" inkscape:groupmode="layer" inkscape:label="bundesstrasse">
<use xlink:href="#8" />
</g>
<g id="rennsteig" style="stroke:#077100;stroke-width:6" inkscape:groupmode="layer" inkscape:label="rennsteig">
<use xlink:href="#9" />
</g>
<g id="autobahn11" style="stroke-linecap:round;stroke:#006EB4;stroke-width:8" inkscape:groupmode="layer" inkscape:label="autobahn">
<use xlink:href="#10" />
</g>
<g id="bundesstrasse1111" style="stroke-linecap:round;stroke:#FFD300;stroke-width:6" inkscape:groupmode="layer" inkscape:label="bundesstrasse">
<use xlink:href="#11" />
</g>
<g id="bundesstrasse11111" style="stroke-linecap:round;stroke:#FFD300;stroke-width:6" inkscape:groupmode="layer" inkscape:label="bundesstrasse">
<use xlink:href="#12" />
</g>
<g id="rennsteig1" style="stroke:#077100;stroke-width:6" inkscape:groupmode="layer" inkscape:label="rennsteig">
<use xlink:href="#13" />
</g>
<g id="autobahn111" style="stroke-linecap:round;stroke:#006EB4;stroke-width:8" inkscape:groupmode="layer" inkscape:label="autobahn">
<use xlink:href="#14" />
</g>
<g id="bundesstrasse111111" style="stroke-linecap:round;stroke:#FFD300;stroke-width:6" inkscape:groupmode="layer" inkscape:label="bundesstrasse">
<use xlink:href="#15" />
</g>
<g id="bundesstrasse1111111" style="stroke-linecap:round;stroke:#FFD300;stroke-width:6" inkscape:groupmode="layer" inkscape:label="bundesstrasse">
<use xlink:href="#16" />
</g>
<g id="autobahn1111" style="stroke-linecap:round;stroke:#006EB4;stroke-width:8" inkscape:groupmode="layer" inkscape:label="autobahn">
<use xlink:href="#17" />
</g>
</g>
<g id="Symbols__icons" style="fill:#FF0000;stroke-linejoin:round;stroke:#FF0000" inkscape:groupmode="layer" inkscape:label="Symbols & icons">
<g id="point_schleusegrund__shape" inkscape:groupmode="layer" inkscape:label="point schleusegrund (shape)">
<use transform="translate(256.88,176.85)" xlink:href="#symbol_shape_1" />
</g>
<g id="point_town__shape" inkscape:groupmode="layer" inkscape:label="point town (shape)">
...
</g>
</g>
<g id="Labels" style="stroke:#000000;font-family:Verdana;font-weight:bold" inkscape:groupmode="layer" inkscape:label="Labels">
<g id="point_schleusegrund__text" style="font-size:15px" inkscape:groupmode="layer" inkscape:label="point schleusegrund (text)">
<g style="stroke-width:3.75;stroke:#FFFFFF;fill:none;stroke-opacity:0.75">
<use xlink:href="#symbol_text_3" />
</g>
<g style="fill:#000000;stroke:none;fill-opacity:1">
<use xlink:href="#symbol_text_3" />
</g>
</g>
<g id="point_town__text" style="font-size:10px" inkscape:groupmode="layer" inkscape:label="point town (text)">
<g style="stroke-width:2.5;stroke:#FFFFFF;fill:none;stroke-opacity:0.75">
<use xlink:href="#symbol_text_4" />
</g>
<g style="fill:#000000;stroke:none;fill-opacity:1">
<use xlink:href="#symbol_text_4" />
</g>
...
</g>
</g>
...
</svg>