[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>