Ubuntupaket für lokalen Tileserver

Bevor hier Mißverständinsse auftreten. Mapnik besitzt keine Strategien. Mapnik macht nur was ihm gesagt wird! Im Prinzip geht das wie folgt: Mittels der htmldatei wird Openlayers mitgeteilt welche Layer in welchen Zoomstufen verfügbar sein sollen. Es wäre also der erste Ansatz dort zu schauen ob dein Layer auch die ersten Zoomstufen umfasst oder Openlayers den Server gar nicht fragt weil ihm gesagt wurde da gibts nichts.
Als zweites wird dann der Server gefragt hast du das Teil? Dort wird dann quasie überprüft ist das Ding da? Wenn ja ist es aktuell? dann wird es ausgeliefert. Wenn nein dann wird ein Auftrag für Mapnik fertig gemacht. Das alles steuerst du über renderd. Allerdings soll das etwas älter sein.
Wenn du quasi auf dem gleichen Server vorher nur Bayern hattest und jetzt Deutschland importiert hast, wäre es möglich das die Tiles ohne Inhalt schon vorher erstellt wurden. Damit sind sie vorhanden und bei einem neuen Import nicht als veraltet markiert worden. Sprich nach dem neue Daten angekommen sind mussen die alten Tiles als Alt gekennzeichnet werden.
Man kann alles vorberechnen. Das geht im Prinzip am schnellsten, wenn man ans ausliefern denkt. Es ist aber für ein sich öfter ändernden Datenbestand unökonomisch, weil bis das Tile wirklich angeschaut wird hat es sich vielleicht schon dreimal geändert. Du hättest also umsonst gerechnet. Das ist eben die Frage der Strategie.

Hallo

so - jetzt hab ich das verflixte Problem endlich gelöst - das war ne Mischung aus “altem Cache” und falsch konfigurierter Datenbank.
Zudem habe ich die timeout´s in der vhosts für das Laden und rendern der Kacheln erhöht - nun läuft das.

Wenn ich das jetzt alles richtig verstanden habe funktioniert die ganze geschichte so:

Der Nutzer ruft einen Ausschnitt auf - mod_title schaut nach ob diese im Cache liegt - liegt diese im Cache, wird dieser angezeigt - wenn nicht, werden diese Ausschnitte gerendert, angezeigt und im Cache abgelegt.

Soweit richtig ?

Allerdings dauert das “LIVE RENDERN” doch recht lange, was die Frage aufwirft, ob es hier einen “besseren” weg gibt ?

Kann man:

  • Bestimmte ZoomStufen FIX im Cache ablegen lassen (wenn der Server nix zu tun hat) ?
  • Evtl alles Rendern ? (Platzproblem ?)
  • andere Ansätze ?

CU
GTR

Soweit richtig verstanden. Und auch die beiden Ansätze sind die einzig möglichen bzw. eine Mischung daraus. Du musst schauen wieviel Platz, wie oft aufgerufen, wie oft aktualisiert? Daraus musst du dann die Strategie ableiten. Wenn du nie aktualisierst oder nur selten und viel Platz hast, gehts mit alles rendern sehr schnell. Wenn du ständig aktualisierst (minituley diffs) dann veralten Tiles sehr schnell. Das sollte man dann nach Zoomstufe angepasst so einstellen.
OSM verwirft auch Gewisse Bereich sofort nach der Erstellung wieder, wenn sie ausschließlich im Meer liegen sowas passiert in Deutschland aber eher nicht so oft.
Ein weiteres Kriterium ist auch das du in einer Umgebung in der jemand gerade Tiles holt schnell weiter zu berechnen damit er später beim Scrollen gar nicht merkt das die noch nicht da waren.

Hallo

kann ich irgendwie “alles” in den Cache rendern lassen ?
Wenn ja - wie ?

CU
GTR

Frag dich mehr: WOHIN?
Soviel Terabytes hast du wohl nicht an deinem Server vorrätig. Selbst auf “unserem” OSM-Tileserver reicht der Platz wohl nicht.
Hier mal die Konfiguration: http://wiki.openstreetmap.org/wiki/Servers/yevaud (*)
Ausserdem mach es wirklich keinen Sinn, da sich jederzeit an jedem Ort was ändert.

Gruss
walter

*) Kleines Schmankerl: gesammte DB auf SSD

Deutschland hat in zoom=6 ~12 Kacheln. Pro Zoomstufe vervierfacht sich die Menge. Das macht dann rund 250.000.000 Tiles bis zoom=18.

Eine Kachel in z00m=6 hat rund 20kb, eine in zoom=18 rund 2kb, macht also im Schnitt 11kb je Tile. Sind dann so insgesammt 2,5 tb an Kacheln. Wahrscheinlich etwas weniger, da es ja noch Nord- und Ostsee gibt und Deutschland nicht rechteckig ist.

Hallo

ok - das erklärt das ganze natürlich …

Dann kommt man quasi um die “live-DB” Lösung nicht rum und letzenendes kann man - abgesehen von einigem “Finetuning” in diversen Config Dateien dann nur auf “stärkere” Hardware und ggfs auf SSD setzen.

CU

Naja wie bereits gesagt wurde: Die Anzahl der Tiles wächst um den Faktor 4 mit der Zoomstufe. Wenn du jetzt bis zoom=12 vorrenderst sind das nur rund 70000 Tiles. Bei 20kb je Tile bist du dann bei ~ 1,5 gb. Den Rest lässt du dann nur auf anfrage rendern. Der erste muss dann zwar etwas warten, aber dann liegt ja auch das erstmal im cache, bis es veraltet ist.

Hängt natürlich auch von der Anzahl der Nutzer ab. Wenn nur 5 Leute den Service benutzen und jeder jedesmal warten muss, dann ist das eher blöd. Wenn das viele Nutzen, dann sieht das schon wieder ganz anders aus.

Die Zeit die es benoetigt tiles zu rendern ist stark von der Zoom stufe abhaengig. Waerend tiles in Zoomstufe 5 - 8 teilweise etliche Minuten benoetigen, sollten die meisten Tiles in Z18 in < 3 Sekunden gerendert werden.

Das live rendering von Z18 tiles funktioniert also meist sehr gut. Fuer low zoom tiles muss man allerdings die tiles vorberechnet haben, sonst wartet man entweder Minuten oder bekommt Fehler.

Das vorberechnen funktioniert mit einem Hilfsprogram namens render_list. Dort kann man einstellen welche zoom stufen man berechnen will. Das program schickt dann entsprechende render Anfragen an renderd, die mit niedriger Prioritaet gerendert werden, also wenn der Server sonst idle waere.

Je nach Verwendungszweck wuerde ich wahrscheinlich empfehlen bis ca. z12 vor zu berechnen und ab z13 auf live rendering setzen.

Hallo

danke für die Infos - das hört sich doch vernünftig an.

an render_list hätte ich daher schon massives interesse, um zumindest die Zoom-Stufen bis 12 oder so vorrendern zu lassen.

Leider finde ich im Netz wenig über /usr/bin/render_list - nur einige “Hilfe-Gesuche”

Wie würde die eine Config und der korrekte Aufruf hier genau ausschauen ?

CU
GTR

“./render_list --all --min-zoom=0 --max-zoom=12 --num-threads=2 --socket=Path_to_your_renderd_socket” sollte wahrscheinlich funktionieren.

Hallo

Prima - das funktioniert !

Noch was OT:

Ich rufe ja die slippymap.html auf und kann oben rechts zwischen mapnik und localtiles umschalten.
Hierbei gehe ich momentan davon aus, dass dass localtiles meine lokal generierten Karten darstellen und mapnik die live Daten von einem OSM Server nimmt ?!?

Hierbei ist mir aufgefallen, dass bei maximaler Zoom Stufe die mapnik Daten teilweise wesentlich detaillierter sind als die Daten die ich hier lokal habe.

Woran liegt das ?

Ich habe die DeutschlandDatei von http://www.geofabrik.de/ genommen - war das falsch ?

Das sind sicher keine Daten, die in den letzen Tagen geändert wurden …

CU
GTR

hi,
die Daten sind ok, allerdings sind die immer von der Nacht vor dem Download. Also, wenn du die jetzt runterladen würdest, wären die von heute Mitternacht. Die Live-Daten, die Mapnik verwendet, “leben” natürlich.

Aber: Bei dem einzigen von dir je genannten Url http://78.47.170.221/osm/slippymap.html kommt derzeit nur Österreich - allerdings auch mit minimalen Abweichungen.
Wir brauchen den aktuellen Url und das Datum der Rohdaten.

Meine Vermutung wäre, dass du eventuell ein anderes Style-File für das Rendern benutzt als osm.org-Mapnik. Das “lebt” nämlich auch.

Gruss
Walter

Hallo

ja - das ist korrekt - ich habe gestern noch ein wenig experimentiert.
Ich habe es richtig verstanden, dass man immer nur EINEN DATENSATZ in die DB spielen kann. - Wenn ich als Österreich einspiele und vorher Deutschland drin hatte, ist Deutschland weg und nur noch Österreich aktiv.

Ich muss also das “am besten passende” von Geofabrik laden ?
Eigentlich wollte ich nur Deutschland + 3 umliegende Länder - wenn es diese Datei aber so nicht gibt, muss ich Europa installieren - korrekt ?

CU GTR

Davon gehe ich auch aus. das Paket ist ja nun nicht mehr ganz tau frisch zusammengeschürrt. Und da könntest du auch deinen eigenen oder einen aktualisierten Mapnikstyle nehmen. Gegebenfalls musst du auch den osm2pgsqlstyle mit ändern, damit die Daten auch wirklich in der Datenbank landen.

Hallo zusammen,

ich benutze libapache2-mode-tile seit über 2 Jahren ohne Probleme in einem Ubuntu 12.04 32-bit. Jetzt habe ich ein neues Ubuntu 14.04 in 64-bit installiert. Bei dem sudo apt-get install libapache2-mod-tile gab es einen System hangup. Der hatte mit dem install nichts zu tun. Nach dem restart wurde ich von synaptic zu einem sudo dpkg --configure -a aufgefordert.

Nun ging das Problem los: Es kam der Fehler “AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1. Set the ‘ServerName’ directive globally to suppress this message”.

Ich habe alles was mir unter die Finger kam und irgendwie mit der Installation zusammen hing (Apache2* postgresql* libapache2-mode-tile) markiert für complet removal und entfernt. Danach habe ich libapache2-mode-tile erneut installiert. Leider kommt der Fehler immer wieder.

Wie mache ich eine saubere Uninstalltion damit ich wieder sauber neu installieren kann???

Danke im Voraus Rainer

Hallo Rainer,

Auf die Gefahr mich völlig zu blamieren (zumal ich das Paket nicht nutze), aber bei Ubuntu 14.04 ist localhost nicht mehr /var/www sonden /var/www/html . Stelle dies doch mal auf den alten Wert um, Google hilft hier.

Mit freundlichen Grüßen Georg V.

Hallo Rainer,

apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message

ist normal. Auf jeden Fall liegt es nicht daran dass dein Tileserver nicht mehr geht. Auch wenn mich wundert dass es bei dir 127.0.1.1 ist, normalerweise lautet die IP für localhost ja 127.0.0.1

Welche Paketquelle nimmst du denn für dein Ubuntu? Ich hatte auch mal ein Problem mit dem mod_tile, und bin dann auf das unstable-Repository gewechselt: https://launchpad.net/~kakrueger/+archive/osm-unstable
Damit hatten sich jedenfalls für mich damals die Probleme gelöst, weil die Version natürlich noch ein bisschen neuer war.

Viel Erfolg,

Christoph

Hello Georag and Christoph,

vielen Dank für Eure Infos. In der Zwischenzeit habe ich weiter probiert und ein “sudo apt-get autoremove” hat dazu geführt das die Neuinstallation jetzt geklappt hat. Nun Suche ich weiter. Auf das Unstable habe ich umgeschaltet. Es sah so aus, dass da garkein Update kam.

Ich werde jetzt weiter machen.

Gruß Rainer

Hallo Zusammen,

leider hat das nicht geholfen und ich muss jetzt wohl oder übel tief einsteigen und suchen was libapache2-mod-tile in der reinstallation nicht gemacht hat. Was ich schon gefunden habe ist, dass apache2 nicht customized wurde. In den sites- und mods-availble ist die config drin, ich musste den link dazu in den -enabled hinzufügen.

Die Suche geht weiter.

Für Hinweise bin ich Dankbar Rainer