Tirex oder Mod Tile? Update-Strategie

Hallo,

bis jetzt nutze ich für meine Karte (OpenLayers, Mapnik, osm2pgsql) eine selbst geschriebene Update-Strategie, die sich rein auf Lesezugriffe stützt. In Zukunft würd ich gern eine Standard-Lösung einsetzen. Dabei bin ich natürlich über Tirex und Mod Tile gestolpert und hab versucht, die betreffenden Wiki-Seiten zu verstehen.

Was ich suche, ist ein Tool, das Folgendes ermöglicht:

  • Metatiles
  • Tile-Update auf Grundlage eines Diff-Files

Ist es in diesem Fall egal, ob ich Tirex oder Mod Tile verwende? Muss ich zwingend beides installieren, oder langt eines davon?
Kennt sich jemand damit näher aus?

mod_tile und tirex sind zwei unterschiedliche Dinge die jedoch meist zusammen gehoeren.

mod_tile ist ein apache modul, das bereits gerenderte metatiles ausliefert, bzw veraltete oder nicht vorhandene tiles an einen hintergrund rendering server weiterleitet.

tirex ist dieser hintergrund rendering server, jedoch kein webserver.

Insofern benoetigt man beides. Es gibt noch eine alternative zu tirex namens renderd. Renderd liegt im source code im gleiche Verzeichnis wie mod_tile, sodass es dort manchmal unklarheiten gibt welche Komponente gemeint ist (und moeglicherweise das ist was du mit mod_tile meinst). Man benoetigt nur entweder renderd oder mod_tile.

Bezueglich der update Strategie: Osm2pgsql kann eine Liste von veraenderten tiles waerend der Diff-verarbeitung generieren. Diese Liste kann dann per render_expired entweder direkt rendern lassen, oder als “dirty” markieren, so das mod_tile die tile dann per renderd/tirex neuberechnen laesst das naechste mal das jemand diese tile anschaut.

Danke, das klingt hervorragend. Ich hätte gern, dass die Tiles in denen sich Daten geändert haben, sofort neu gerendert werden. Das heißt, ich brauch Tirex und Mod tile, ja?

Ich stell bestimmt später nochmal dumme Fragen, wenns dann drum geht, das Zeug korrekt zu parametrieren. :slight_smile:

Vielleicht magst du auch hier vorbei schauen: http://wiki.openstreetmap.org/wiki/DE:HowTo_Mapnik_%26_Tirex
Ich war zwar nicht in der Lage dem Gesamtem zu folgen, aber bestimmte Details waren sehr interessant.

Du brauchst:

(tirex oder renderd) und (mod_tile)

Fuer das Aktualisieren von Tiles, die sich geaendert haben, gibt es drei (mehr oder weniger) verbreitete Techniken:

  1. Liste aus osm2pgsql generieren lassen und dann in die Render-Queue einstellen (z.B. mit dem Utility render_expired, das man mit tirex und renderd nutzen kann)

  2. Mit einem Ruby-Skript das Diff-File parsen und Render-Requests generieren (macht der OSM-Server, s. http://trac.openstreetmap.org/browser/applications/utils/export/tile_expiry))

  3. Eine auf Python+Datenbank basierende Loesung, die Tiles je nach Zoomstufe unterschiedlich expired: https://subversion.nexusuk.org/trac/browser/openpistemap/trunk/scripts/expire_tiles.py

Vor ein paar Tagen hat Tim Alder auf der talk-de-Mailingliste ausserdem geschrieben, dass er an einem Update-Verfahren arbeitet, das auch die Tile-Abrufe mit beruecksichtigt.

Bye
Frederik

Hallo und nochmal danke für die Tipps!

Also, wenn ich diff-Files (z.B. .osc) auswerten will, um Tiles gezielt rendern zu lassen, dann brauche ich ein zusätzliches Script, weil das bei Tirex, Renderd, oder Mod_Tile nicht dabei ist?

Damit scheiden aber Vorschläge 1 und 3 von Frederik aus. Von Ruby hab ich keinen Schimmer, aber notfalls arbeite ich mich halt ein bisschen ein. :slight_smile:
Frederik, hast du einen alternativen Link für 2.? Der von dir gepostete meldet nur “No node /applications/utils/export/tile_expiry) at revision 26412”.

Markus

Wieso scheiden Vorschlaege 1 und 3 aus?

Es sind alles verschiedene Arten um festzustellen welche Tiles neu gerendert werden muessen. Diese Liste an tiles muessen dann durch einen Renderer Gerendert werden. Das kann z.B. Tirex oder Renderd sein, es kann aber auch ein anderer Renderer deiner Wahl sein der eine Liste von tiles rendern kann.

Mod_tile und renderd/tirex alleine erledigen das nicht. Aber um die Daten up-to-date zu halten benoetigt man eh osm2pgsql und das Ergebniss dann mit einem zusaetzlichen Programm wie render_expired zu verarbeiten sollte ein Problem sein. Wohl gemerkt render_expired nimm lediglich die Liste und reicht diese dann an renderd/tirex weiter reicht. Das eigentliche rendern erledigt also weiterhin renderd/tirex und passt damit sehr gut in das normale rendering flow von mod_tile.

Nach einer Weile noch einmal hallo! :slight_smile:

Ich bin beim Installieren nach
http://wiki.openstreetmap.org/wiki/DE:HowTo_Mapnik_%26_Tirex#OSM_Kartenstil
vorgegangen und stecke grad fest. In der Hoffnung, dass ihr mir weiterhelfen könnt, hier eine Beschreibung des Problems:

Nach dem “Vorberechnen”
http://wiki.openstreetmap.org/wiki/DE:HowTo_Mapnik_%26_Tirex#Vorberechnen
sind im Tile-Verzeichnis /var/lib/tirex/tiles/osm keine Tiles zu finden. Auch das Verzeichnis “osm” fehlt, es sind nur die beiden Verzeichnisse “example” und “test” vorhanden.
Mapnik läuft - das habe ich bereits getestet.

Das Tirex-Log sieht so aus:
2011-08-08T21:37:20 id=1312832240_42580152 map=osm x=8 y=8 z=4 prio=25 request_time=1312832240 expire= sources= render_time=0 success=

tirex-Status bringt das hier:


 Tirex Master Status (updated=2011-08-08 21:49:53)

 Master server:
  started=2011-08-08 21:34:16 pid=485

 Statistics:
  count_error=192
  count_expired=0
  count_requested=192
  count_timeouted=0

 Queue:
  Prio   Size Maxsize           Age
    25      0       1
                                   
   all      0       1

 Buckets: (load=0.04)
  Name                 Priority  Rendering  MaxRend  Maxload Active Can Queued           Age
  live                   1-   9          0        4       20    yes yes      0
  important             10-  19          0        3        8    yes yes      0
  background            20-              0        2        4    yes yes      0

 Currently rendering: (num=0)
  Map                           X          Y   Z Prio Age

 Renderers:
  Name        Port  Procs  Path                               
  mapnik      9331      3  /usr/lib/tirex/backends/mapnik 
  test        9330      2  /usr/lib/tirex/backends/test   

 Maps:
  Name                 Renderer    Zoom  Tiledir                               
  example              mapnik      0- 4  /var/lib/tirex/tiles/example   
  osm                  mapnik      0-18  /var/lib/tirex/tiles/osm       
  surveillance         mapnik      0-18  /var/lib/tirex/tiles/surveillance 
  test                 test        0-10  /var/lib/tirex/tiles/test      

Hat jemand eine Idee…?