Angeschnittene Beschriftungen und zu viele Labels

Ich habe mir die schönen Style-Files (http://www.openstreetmap.de/germanstyle.html) heruntergeladen.
Ich weiß nicht, ob es daran liegt, aber ich habe zwei Probleme beim Rendering mit Mapnik:

Hat jemand einen Tipp, wie ich das verhindert kann?

Danke,
TrafficJam

Für abgeschnittene Label gibts
self.m.buffer_size = 128

in der Phyton-Datei.

gruß,
ajoessen

Der buffer stand schon auf 128. Ich habe ihn testhalber mal auf 192 gesetzt, es ergab sich aber leider keine Änderung.

hier http://trac.mapnik.org/wiki/TextSymbolizer
steht "min_distance Minimum distance between repeated labels such as street names or shield symbols (works across features, added in r490) "
und
"spacing Space between repeated labels "
Vielleicht hilfts…

OK, mag nun eine Anfänger-Frage sein, aber um welche Datei gehts genau?

generate_tiles.py im Standard-mapnik-Ordner. Das ist die Phyton-Datei, die den Renderauftrag abarbeitet.

Gruß,
ajoessen

Danke !

Habs in diesem Context gefunden:
# Bounding box for the tile
if hasattr(mapnik,‘mapnik_version’) and mapnik.mapnik_version() >= 800:
bbox = mapnik.Box2d(c0.x,c0.y, c1.x,c1.y)
else:
bbox = mapnik.Envelope(c0.x,c0.y, c1.x,c1.y)
render_size = 256
self.m.resize(render_size, render_size)
self.m.zoom_to_box(bbox)
self.m.buffer_size = 128

Auch welchen Wert sollte ich self.m.buffer_size ändern, um abgeschnittene Labels zu verhindern? 256? Oder noch größer? Wird dadurch das Rendern langsamer?

Benchmarktests habe ich dazu nicht gemacht. Probiers einfach mal aus. Professionell werden größere Tiles erzeugt, und in 256x256-Tiles geschnitten.

Hier noch ein Tip von der Mailingliste:

Gruß,
ajoessen

Danke!
Ich probiers mit dem nächsten Rendering-Lauf aus. Hab mir heute Screenshots von den betroffenen Stellen der Karte gemacht und werd morgen vergleichen.

Hallo nochmal, hier ein kleines Feedback:

self.m.buffer_size = 192
brachte eine kleine Verbesserung, aber erst mit
self.m.buffer_size = 256
ist es wirklich gut. Wobei auch hier manche Namen abgeschnitten werden, doch es sind zum Glück nur sehr wenige.

Höher will ich den Wert lieber nicht schrauben, denn das Rendern dauert jetzt schon etwa die Hälfte länger als vorher. :frowning:

Ganz abstellen können wirst du das nicht mit den abgeschnittenen Namen und Labels mit der normalen Tile Erstellung.

Da hilft dann nur das Rendern von Meta Tiles, d.h. es wird ein grösseres Gebiet gerendert (z.B. 10x10 Kacheln) und dann erst danach die normalen Tiles ausgeschnitten. So machen das auch die großen Renderer wie Tirex oder Tilecache, allerdings bleiben die Kacheln dann als MetaTiles auf der Festplatte und werden erst bei der Abfrage durch den Webclient entsprechend auf die 256x256 geschnitten.

Willst du das selbst machen musst du dich schon etwas mit Python auskennen und dem mathematischen Hintergrund der Kachelerstellung. Ein fertiges Pythonscript, das Metatiles und danach auch gleich daraus die normalen Tiles erstellt, habe ich noch nicht gesehen.

Genau das steht auch noch auf meiner Wunschliste, bisher hab ichs allerdings noch nicht auf die Reihe bekommen. Habs einfach nicht geschafft, die notwendigen Tools zu installieren und zu parametrieren. Vielleicht lags auch daran, dass ich da bei meinem virtuellen Ubuntu-8.04-Server an die Grenzen gestoßen bin. Wenn ich etwas Luft hab, werd ich einen neuen Anflauf wagen, bis dahin muss die www.openptmap.de eben mit den “normalen” Kacheln leben.

Die Zoomstufen bis 12 sind seit heute mit “self.m.buffer_size = 256” gerendert, die höheren Stufen folgen im normalen Takt innerhalb der nächsten 10 Tage (http://wiki.openstreetmap.org/wiki/DE:Openptmap#Kartenaktualisierung).

So schwer ist das ganze nicht …

Ich hatte vor Anfang des Jahres auch noch keine Ahnung von OSM überhaupt und erst recht nicht von der ganzen Infrastruktur drumherum in der Toolchain bis zur ersten fertigen selbst erstellten Karte. Die abgeschnittenen Labels hatten mich auch gestört, da ich auf meinem Webspace aber keine aufwendigen Apache Addons, die für Tirex oder Tilecache notwendig sind, installieren wollte sondern die ganz normale Tile Struktur nutzen wollte, habe ich mich dann etwas damit beschäftigt.

Ein guter Anfang war TopOSM:

http://wiki.openstreetmap.org/wiki/TopOSM

http://svn.openstreetmap.org/applications/rendering/toposm/

Der Kollege dort mach das nämlich genauso und rendert auch erst größere Teile … die Scripte dazu kannst du dir per SVN runterladen und ansehen. Ich habe mir die entsprechenden Code Schnipsel angesehen und so verstanden wie ich es machen muss. Jetzt rendere ich je nach Zoomstufe 4x4 bis 15x15 Metatiles mit einem zusätzlichen Buffer von 512px und habe keine Probleme mehr mit den Labels.