[Mapnik-de] Lösung für ab geschnittene ShieldSymbolizer und Frage: "in welchem Land bin ich"
Daniel Pfeilsticker
Daniel.Pfeilsticker at intradesys.com
Mi Aug 6 10:54:28 CEST 2014
Hallo,
Am 05.08.14 14:40, schrieb Sven Geggus:
> Daniel Pfeilsticker <Daniel.Pfeilsticker at intradesys.com> wrote:
>
>> "minimum-padding" hat auch/aber den Nebeneffekt, dass es merklich
>> weniger Beschilderungen werden, weswegen ich spacing für Autobahnen für
>> zoomlevel 7-12 von 750 auf 550 verkleinert habe.
> Hm, Du hast nicht zufällig einen passenden patch von osm-de.xml für mich?
>
> http://svn.openstreetmap.org/applications/rendering/mapnik-german/osm-de.xml
Hier kommt der patch (bitte vorher an testen eh er auf Produktion geht;-)
Ich habe ihn nur in unserem von damals schon stark modifiziertem Stil
testen können...
Dabei ist mir mapnik mit einem fehlenden Bundesautobahn8.png aus gestiegen.
Mit der neuen Regel bin ich wohl durch Zufall auf ein winziges Stück
Autobahn bei Bonn gestoßen: "A 61/A 1" das mit 8 Zeichen genau das
gebraucht hätte.
cp Bundesautobahn7.png Bundesautobahn8.png hat es für mich gelöst, das
"7er" Schild nimmt auch noch sehr gut 8 Zeichen auf.
Um nicht mit Bundes- und Landes-Straßen in die selbe Falle zu tappen,
habe ich da auch entsprechend "and [length] le 8" ergänzt (die gibt es
mit 1-8).
>> Ne, ich bleibe mal schön bei mapnik. Aufwand und "google-bar-keit" von
>> Problemen sprechen klar für mapnik:-)
> Vorsicht, dass hier keine Missverständnisse aufkommen. Auch der Mapquest
> rendering stack verwendet Mapnik als backend. Er ist eher als Ersatz für
> mod_tile+tirex/renderd zu sehen. Allerdings ist das Teil wohl fast
> vollständig undokumentiert und Jochen ist AFAIK der Einzige außerhalb von
> Mapquest, der das jemals verwendet hat.
>
>> In diesem Fall sind es mehrere Länder, die Ihre eigene Karte bekommen
>> sollen (und im Prinzip auch nur die Karte für ihr Land).
> Dann würde ich an Deiner Stelle für jedes Land eine eigene Datenbank
> verwenden. Die Geofabrik hat ja inkrementelle Datenupdates für Länder. Das
> steckst Du dann in für n Länder in n Datenbanken mit n Mapnik-Styles. Mit
> tirex oder renderd ja kein Problem.
>
> Sven
>
Ja, das ist vermutlich der schnellste = günstigste Weg.
Auch wenn die Datenbank ja auch immer die Nachbarländer mit enthalten
muss, damit die Karte nicht an der Landesgrenze auf hört. Insofern
werden es wohl jeweils Kontinente in einer Datenbank.
Die Server, die wir zur Verfügung haben, haben so langsame virtuelle
Platten, dass man darauf eh nur fertige Kacheln vor rendern kann.
mod_tile reagiert aufgrund der trägen Datenbank-Platte dahinter einfach
zu langsam, um das einem Kunden zumuten zu können...
Plattenplatz und Update nur alle 6 Monate sind dafür kein Problem.
Daniel
--
Mit herzlichem Gruß / Kind Regards
Daniel Pfeilsticker
InTradeSys Limited - Zweigniederlassung Deutschland
Dillenburger Str. 75
D - 51105 Köln
T: +49.221.356622.28
F: +49.221.356622.22
HRB 53992 - USt.-Id.: DE239780984 - Geschäftsführer: Andreas Oesterhelt
-------------- nächster Teil --------------
--- osm-de.xml 2014-08-04 15:38:48.000000000 +0200
+++ osm-de.patched.xml 2014-08-06 10:33:00.000000000 +0200
@@ -3593,60 +3593,60 @@
</Style>
<Style name="roads-text-ref-low-zoom">
<Rule>
- <Filter>[highway] = 'motorway' and [length] le 8</Filter>
+ <Filter>[highway] = 'motorway' and [length] le 7</Filter><!-- no "Bundesautobahn8.png" in symbols folder" but "cp Bundesautobahn7.png Bundesautobahn8.png" would help as well -->
&maxscale_zoom10;
&minscale_zoom12;
- <ShieldSymbolizer size="10" fill="#fff" placement="line" file="&symbols;/Bundesautobahn[length].png" spacing="750" minimum-distance="30" fontset-name="bold-fonts">[ref]</ShieldSymbolizer>
+ <ShieldSymbolizer size="10" fill="#fff" placement="line" file="&symbols;/Bundesautobahn[length].png" spacing="650" minimum-distance="30" fontset-name="bold-fonts" minimum-padding="31">[ref]</ShieldSymbolizer>
</Rule>
<Rule>
- <Filter>[highway] = 'trunk'</Filter>
+ <Filter>[highway] = 'trunk' and [length] le 8</Filter>
&maxscale_zoom11;
&minscale_zoom12;
- <ShieldSymbolizer size="10" fill="#000" placement="line" file="&symbols;/B[length].png" spacing="750" minimum-distance="30" fontset-name="book-fonts">[ref]</ShieldSymbolizer>
+ <ShieldSymbolizer size="10" fill="#000" placement="line" file="&symbols;/B[length].png" spacing="750" minimum-distance="30" fontset-name="book-fonts" minimum-padding="31">[ref]</ShieldSymbolizer>
</Rule>
<Rule>
- <Filter>[highway] = 'primary'</Filter>
+ <Filter>[highway] = 'primary' and [length] le 8</Filter>
&maxscale_zoom11;
&minscale_zoom12;
- <ShieldSymbolizer size="10" fill="#000" placement="line" file="&symbols;/B[length].png" spacing="750" minimum-distance="30" fontset-name="book-fonts">[ref]</ShieldSymbolizer>
+ <ShieldSymbolizer size="10" fill="#000" placement="line" file="&symbols;/B[length].png" spacing="750" minimum-distance="30" fontset-name="book-fonts" minimum-padding="31">[ref]</ShieldSymbolizer>
</Rule>
<Rule>
- <Filter>[highway] = 'secondary'</Filter>
+ <Filter>[highway] = 'secondary' and [length] le 8</Filter>
&maxscale_zoom12;
&minscale_zoom12;
- <ShieldSymbolizer size="10" fill="#000" placement="line" file="&symbols;/L[length].png" spacing="750" minimum-distance="40" fontset-name="book-fonts">[ref]</ShieldSymbolizer>
+ <ShieldSymbolizer size="10" fill="#000" placement="line" file="&symbols;/L[length].png" spacing="750" minimum-distance="40" fontset-name="book-fonts" minimum-padding="31">[ref]</ShieldSymbolizer>
</Rule>
</Style>
<Style name="roads-text-ref">
<Rule>
- <Filter>[highway] = 'motorway' and [length] le 8</Filter>
+ <Filter>[highway] = 'motorway' and [length] le 7</Filter>
&maxscale_zoom13;
&minscale_zoom18;
- <ShieldSymbolizer size="10" fill="#fff" placement="line" file="&symbols;/Bundesautobahn[length].png" spacing="750" minimum-distance="30" fontset-name="bold-fonts">[ref]</ShieldSymbolizer>
+ <ShieldSymbolizer size="10" fill="#fff" placement="line" file="&symbols;/Bundesautobahn[length].png" spacing="750" minimum-distance="30" fontset-name="bold-fonts" minimum-padding="31">[ref]</ShieldSymbolizer>
</Rule>
<Rule>
- <Filter>[highway] = 'trunk'</Filter>
+ <Filter>[highway] = 'trunk' and [length] le 8</Filter>
&maxscale_zoom13;
&minscale_zoom18;
- <ShieldSymbolizer size="10" fill="#000" placement="line" file="&symbols;/B[length].png" spacing="750" minimum-distance="30" fontset-name="book-fonts">[ref]</ShieldSymbolizer>
+ <ShieldSymbolizer size="10" fill="#000" placement="line" file="&symbols;/B[length].png" spacing="750" minimum-distance="30" fontset-name="book-fonts" minimum-padding="31">[ref]</ShieldSymbolizer>
</Rule>
<Rule>
- <Filter>[highway] = 'primary'</Filter>
+ <Filter>[highway] = 'primary' and [length] le 8 and [length] le 8</Filter>
&maxscale_zoom13;
&minscale_zoom18;
- <ShieldSymbolizer size="10" fill="#000" placement="line" file="&symbols;/B[length].png" spacing="750" minimum-distance="30" fontset-name="book-fonts">[ref]</ShieldSymbolizer>
+ <ShieldSymbolizer size="10" fill="#000" placement="line" file="&symbols;/B[length].png" spacing="750" minimum-distance="30" fontset-name="book-fonts" minimum-padding="31">[ref]</ShieldSymbolizer>
</Rule>
<Rule>
- <Filter>[highway] = 'secondary' and not [bridge]='yes'</Filter>
+ <Filter>[highway] = 'secondary' and not [bridge]='yes' and [length] le 8</Filter>
&maxscale_zoom13;
&minscale_zoom18;
- <ShieldSymbolizer size="10" fill="#000" placement="line" file="&symbols;/L[length].png" spacing="750" minimum-distance="40" fontset-name="book-fonts">[ref]</ShieldSymbolizer>
+ <ShieldSymbolizer size="10" fill="#000" placement="line" file="&symbols;/L[length].png" spacing="750" minimum-distance="40" fontset-name="book-fonts" minimum-padding="31">[ref]</ShieldSymbolizer>
</Rule>
<Rule>
- <Filter>[highway] = 'tertiary' and not [bridge]='yes'</Filter>
+ <Filter>[highway] = 'tertiary' and not [bridge]='yes' and [length] le 8</Filter>
&maxscale_zoom13;
&minscale_zoom18;
- <ShieldSymbolizer size="10" fill="#000" placement="line" file="&symbols;/L[length].png" spacing="750" minimum-distance="40" fontset-name="book-fonts">[ref]</ShieldSymbolizer>
+ <ShieldSymbolizer size="10" fill="#000" placement="line" file="&symbols;/L[length].png" spacing="750" minimum-distance="40" fontset-name="book-fonts" minimum-padding="31">[ref]</ShieldSymbolizer>
</Rule>
<Rule>
<Filter>([highway] = 'unclassified' or [highway]='residential') and not [bridge]='yes'</Filter>