Auf eigenem Tileserver Zoomstufen höher als 18 nutzen

Hallo,

ich will auf meinem eigenen Tileserver (Ubuntu, Mapnik 2) höhere Zoomlevel als nur bis Stufe 18 anzeigen, da sich Beschriftungen teilweise gegenseitig überdecken. Ich habe in der slippymap.html die Einträge für

numZoomLevels: 19

auf

numZoomLevels: 20

geändert (anscheinend wird bei 0 angefangen zu zählen).

In der Datei /etc/mapnik-osm-data/osm.xml hab ich per Suchen und Ersetzen alle Einträge von

&minscale_zoom18;

auf

&minscale_zoom19;

geändert.

Wenn ich nun aber im Browser auf der Slippymap auf Zoomlevel 19 zoome werden die Kacheln als nicht vorhanden angezeigt. Ich habe renderd im Debug-Modus laufen, bis Zoomlevel 18 rendert er einwandfrei, ab Zoomlevel 19 passiert einfach gar nichts mehr, keine einzige Ausgabe oder Fehlermeldung.

Leider weiß ich nicht wo ich jetzt den Fehler suchen soll…
Hab ich vielleicht noch irgendwo eine Einstellung vergessen?

Danke und viele Grüße,

Christoph

Ja, Du hast bisher dem OpenLayers erlaubt, Zoom 19 anzufragen, und den Style angepasst, so dass Zoom 19 auch brauchbar aussieht, aber Du hast der Rendering-Engine nicht gesagt, dass sie auch Anfragen fuer Zoom 19 bearbeiten soll. Je nachdem, ob Du Tirex oder renderd benutzt, geht das anders.

Bei Tirex mustt Du in der fuer Deinen Style zustaendigen Config-Datei in /etc/tirex/renderer/mapnik/ ein “maxz=19” eintragen.

Bei renderd ist es ein MAXZOOM=19 in der renderd.conf. (Sehr alte Versionen von renderd haben das Limit fest eingebaut, aber das ist schon seit einer Weile im Configfile).

Bye
Frederik

Danke für die Hilfe. Es funktioniert aber immer irgendwie noch nicht. Ich setze renderd ein. Dafür verwende ich ein Ubuntu 12.04 mit dem Repo von Kai Krüger, das Paket wurde auch gerade erst letzte oder vorletzte Woche über die Paketverwaltung aktualisiert, so alt kann die Version also eigentlich nicht sein…

Meine /etc/renderd.conf sieht nun so aus (;MINZOOM=0 und MAXZOOM=19 habe ich gegenüber der Originalversion hinzugefügt):

[renderd]
stats_file=/var/run/renderd/renderd.stats
socketname=/var/run/renderd/renderd.sock
num_threads=4
tile_dir=/var/lib/mod_tile ; DOES NOT WORK YET

[mapnik]
plugins_dir=/usr/lib/mapnik/2.0/input
font_dir=/usr/share/fonts/truetype/ttf-dejavu
font_dir_recurse=false

[default]
URI=/osm/
XML=/etc/mapnik-osm-data/osm.xml
;XML=/home/server/osm/mapnik/mapnik_hy.xml
DESCRIPTION=This is the standard osm mapnik style
;ATTRIBUTION=&copy;<a href=\"http://www.openstreetmap.org/\">OpenStreetMap</a> and <a href=\"http://wiki.openstreetmap.org/w\
iki/Contributors\">contributors</a>, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>
;MINZOOM=0
MAXZOOM=19
;HOST=tile.openstreetmap.org
;SERVER_ALIAS=http://a.tile.openstreetmap.org
;SERVER_ALIAS=http://b.tile.openstreetmap.org
;HTCPHOST=proxy.openstreetmap.org

Wenn ich nun renderd -f starte (den “normalen” renderd-Service habe ich währenddessen angehalten), erhalte ich folgende Ausgabe:


Error opening file for reading: Permission denied
renderd[3179]: Rendering daemon started
renderd[3179]: Parsing section renderd
renderd[3179]: Parsing render section 0
renderd[3179]: Parsing section mapnik
renderd[3179]: Parsing section default
renderd[3179]: config renderd: unix socketname=/var/run/renderd/renderd.sock
renderd[3179]: config renderd: num_threads=4
renderd[3179]: config renderd: num_slaves=0
renderd[3179]: config renderd: tile_dir=/var/lib/mod_tile
renderd[3179]: config renderd: stats_file=/var/run/renderd/renderd.stats
renderd[3179]: config mapnik:  plugins_dir=/usr/lib/mapnik/2.0/input
renderd[3179]: config mapnik:  font_dir=/usr/share/fonts/truetype/ttf-dejavu
renderd[3179]: config mapnik:  font_dir_recurse=0
renderd[3179]: config renderd(0): Active
renderd[3179]: config renderd(0): unix socketname=/var/run/renderd/renderd.sock
renderd[3179]: config renderd(0): num_threads=4
renderd[3179]: config renderd(0): tile_dir=/var/lib/mod_tile
renderd[3179]: config renderd(0): stats_file=/var/run/renderd/renderd.stats
renderd[3179]: config map 0:   name(default) file(/etc/mapnik-osm-data/osm.xml) uri(/osm/) htcp() host()
renderd[3179]: Initialising unix server socket on /var/run/renderd/renderd.sock
renderd[3179]: Created server socket 4
renderd[3179]: Renderd is using mapnik version 2.0.0
renderd[3179]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansCondensed.ttf
renderd[3179]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansCondensed-BoldOblique.ttf
renderd[3179]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-Bold.ttf
renderd[3179]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Oblique.ttf
renderd[3179]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-Italic.ttf
renderd[3179]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSerifCondensed-BoldItalic.ttf
renderd[3179]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-ExtraLight.ttf
renderd[3179]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansCondensed-Oblique.ttf
renderd[3179]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-BoldOblique.ttf
renderd[3179]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-Oblique.ttf
renderd[3179]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-Bold.ttf
renderd[3179]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono.ttf
renderd[3179]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansCondensed-Bold.ttf
renderd[3179]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Bold.ttf
renderd[3179]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSerifCondensed.ttf
renderd[3179]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-BoldItalic.ttf
renderd[3179]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif.ttf
renderd[3179]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSerifCondensed-Italic.ttf
renderd[3179]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSerifCondensed-Bold.ttf
renderd[3179]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-BoldOblique.ttf
renderd[3179]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf
Running in foreground mode...
renderd[3179]: Starting stats thread

Meine MAXZOOM-Angabe wird also gar nicht erst geparst. Ich könnte mir vorstellen dass das Problem gleich in der ersten Zeile liegt (Error opening file for reading: Permission denied). Ich frage mich nur welche Datei er denn da nicht öffnen kann. Ein ls -l /etc | grep renderd ergibt

-rw-r--r--  1 root root           831 Mai 27 13:32 renderd.conf

also müsste die renderd.conf ja eigentlich auch für alle lesbar sein…

Hab auch schon probiert die renderd.conf nach /usr/local/etc zu linken, aber auch das brachte keinen Erfolg:

sudo ln -s /etc/renderd.conf /usr/local/etc/

Weiß jemand Rat wo der Fehler zu suchen ist?

Danke schonmal!

Viele Grüße,

Christoph

Da Rat und Raten ziemlich nah beieinander sind: was ist mit “/var/run/renderd/renderd.stats” ? lösche es mal und starte neu.

eventuell??

Gruss
walter

Ne, das wars nicht…

Grüße,

Christoph

Du könntest mit strace analysieren woher das permission denied herkommt und dann die Dateiberechtigung oder Gruppenzugehörigkeit oder sowas in der Richtung anpassen. Hat renderd ansonsten noch einen brauchbaren debug trace mit mehr Details?

Habe renderd mit strace laufen lassen. Der Fehler der “Permission Denied” liefert tritt beim Öffnen von /proc/self/auxv auf, was eine Pseudo-Datei ist die Informationen über den derzeitigen CPU-Status ausgibt. Die ist also meiner Meinung nach vermutlich dazu da um die Mapnik-Queue zu steuern, aber sicherlich nicht um irgendeine config-Datei einzulesen.

Der Vollständigkeit halber hab ich mir auch nochmal /var/log/syslog angeschaut, da kommen aber auch nicht mehr Infos bei rum als wenn ich renderd mit der Option -f aufrufe. Noch detailliertere Ausgaben als mit renderd -f gibts wohl nicht, jedenfalls nicht beim Aufruf von renderd

Danke und Grüße,

Christoph

ok, back to the roots:

minzoom & maxzoom sind relativ neu und mußten letztes Jahr noch eincompiliert werden [1]
prüfe doch mal, ob du wirklich eine top-aktuelle Version von renderd verwendest. (oder bau das in config.h ein)

Gruss
walter

[1] https://help.openstreetmap.org/questions/16037/how-to-render-high-zoom-level-maps-with-renderd

Meine renderd-Version ist 0.4-12~precise2, diese Version ist vom 28.07.2012. Anscheinend hatte das Update nichts mit renderd zu tun…

Das Paket für Ubuntu 12.10 und 13.04 ist Version 0.4-15, ich werde mal probieren das 12.10er zu installieren, mit etwas Glück bekomme ich da nicht allzu viele Probleme mit den Abhängigkeiten.
Selbst kompilieren dürfte zwar auch kein allzu großes Problem werden, allerdings greife ich wenn Möglich doch lieber auf Pakete zurück…

EDIT: Die Abhängigkeiten waren alle in Ordnung, allerdings funktionierte die Einrichtung des neuen libapache2-mod-tile-Pakets nicht. Ich werde es nun doch selbst compilieren…

Nach knapp eineinhalb Tagen vorm SSH-Terminal läuft mein Tile-Server seit 10 Minuten nun endlich wieder (zum Glück hab ich gerade frei).

Das “geschummelte Update”, eine rückwirkend betrachtet wohl nicht ganz saubere Deinstallation der Tileserver-Pakete in Verbindung mit anderer Software die noch auf dem Server laufen muss hat im Endeffekt dazu geführt dass nach dem Compilieren (streng nach Anleitung von switch2osm) gar nichts mehr ging, noch nichtmal der normale Apache zum Anzeigen von den übrigen Seiten die auf dem Server liegen. Nachdem ich dann den ganzen gestrigen Tag sowie heute Vormittag versucht habe die selbst compilierte Version ans Laufen zu bekommen (wobei das Problem eher weniger beim Compilieren lag sondern bei den zurückgebliebenen Resten der Paket-Installation) habe ich dann heute Nachmittag beschlossen wieder alles auf Anfang zu stellen. Auch das gestaltete sich geschätzt 10 mal komplizierter als eine Neuinstallation.

Ich bleibe nun erstmal bei meinen 18 Zoomleveln und warte bis ich nächstes Frühjahr auf Ubuntu 14.04 update, da ist dann die aktuelle Version von renderd auch in den Paketquellen. Ich ärgere mich im Nachhinein nur für so ein Nice-to-Have-Feature eineinhalb Tage verbraten zu haben und am Ende genausoweit wie vorher zu sein, aber wenn der Kartenserver erstmal down ist kann man ja schlecht alles hinschmeißen :smiley:

Trotzdem danke nochmal für die Hilfe, verbockt hab ich es ja selbst!

Wenn mit sehr alten Versionen alles vor Gestern gemeint war, dann ja… :wink:

Mod_tile kann bereits seit einer Weile automatisch mit hoeheren Zoomstufen umgehen und hat dafuer den Parameter MAXZOOM in renderd.conf verwendet (renderd.conf wird sowohl fuer mod_tile als auch renderd zur configuration verwendet und manche Parameter sind nur fuer eines der beiden Komponenten gedacht).

Renderd, hingegen hatte noch ein fest eingebautes Limit von 18, war jedoch vorbereitet, so das man mit einer Neukompilation sehr einfach auf hoehere Zoomstufen gehen konnte.

Ich habe nun das Festeingebaute Limit auf 20 erhoeht und renderd sollte nun auch den Parameter MAXZOOM in renderd.conf beruecksichtigen, so das jeder Style ein verschiedenes max zoom haben kann (so lange es <= 20 ist).

Das limit von Z20 kommt dadurch zu stande wie die Tiles auf der Festplatte gespeichert werden. Es wird ein 40 bit directory hash verwendet. 20 bit fuer X und 20 bit fuer Y.

Man kann zwar auch den Hashwert erhoehen, sodas man >20 gehen kann, allerdings wuerde es die gespeicherten Tiles inkompatibel machen und ohne extrem guten Grund wuerde ich das ungerne tun.

Wenn du die Packages aus meinem “osm-unstable” repository nimmst ( https://launchpad.net/~kakrueger/+archive/osm-unstable ), kannst du diese Verbesserungen auch in Ubuntu 12.04 verwenden.

Vielen Dank!

Das werde ich mal ausprobieren und dir Rückmeldung geben.

Viele Grüße,

Christoph

Sorry für die späte Antwort, bin erst jetzt dazu gekommen da ich mir mittlerweile für solche “Projekte” immer einen Zeitpuffer mit einplane falls was schief läuft und ich bei 0 beginnen muss :smiley:

Hat absolut reibungslos funktioniert, vielen Dank!

Viele Grüße,

Christoph