eigene Tiles hosten

Hallo zusammen,

Ich habe mal eine grundsätzliche Frage zum Kacheln rendern und hosten:

Wenn ich mir mit beispielsweise Mapnik eine Karte rendere und diese dann als Kacheln fürs Web exportiere, diese Kacheln dann auf einen Webserver kopiere, kann ich diese Karte dann per Openlayers, Leaflet etc. einbinden oder muss der Webserver eine spezielle Funktion zum Kacheln ausliefern unterstützen. So könnte man sich ja schnelle eine eigene Karte machen und diese hosten.

Gruß

Ja, das funktioniert, wie von dir beschrieben.
Den Webserver braucht man, wenn man zur Verkürzung der Renderzeit die Kacheln in höheren Zoomstufen nur auf Anforderung on-demand rendern lässt.

Um das auszuprobieren, kannst du auch erst mal einen lokalen apache-Server installieren, und per http://localhost darauf zugreifen.

Gruß,
ajoessen

Vielleicht helfen dir ja die HOWTOs auf http://switch2osm.org/ weiter …?

Danke da schaue ich mal nach. On the fly rendern will ich nicht. Ich möchte die Kacheln lokal rendern und dann werde ich die immer neu hochladen. So aktuell braucht die Karte nicht zu sein. Die wird auch nicht sehr groß. Gibt es ein Tool womit ich die Kachelanzahl bzw. die Größe der Karte berechnen kann?

Nicht so wirklich, weil die jeweilige Dateigröße davon abhängt, was alles gerendert wird.

So als grobe Hausnummer:

Ganz NRW (221MB pbf) Zoom 1 bis 15 sind ca 90.000 Kacheln in 700 Ordnern und belegen 1GB; davon Z14 229 MB und Z15 668 MB. Jede weitere Zoomstufe entsprechend drei-vierfach mehr.

HTH,
ajoessen

Alles klar Danke, dann habe ich schon einmal eine ungefähre Ahnung von der Größe. Gibt es außer Mapnik und Maperitive noch andere Renderer? Welcher ist einfacher zu bedienen? Habe zu Hause schon eine Postgis Datenbank mit importierten Daten laufen nutze aber momentan zum testen Tilemill, da bekomme ich aber scheinbar keine Webtiles exportiert. Das rendern damit geht aber supereinfach.

Ist alles hier dokumentiert:
http://wiki.openstreetmap.org/wiki/User:Ajoessen/Mapnik

Zum Importieren bitte osm2pgsql statt osmosis benutzen. Sonst musst du dich noch selber um die Umwandlung von Multipolygonrelationen und geschlossenen Wegen zu Polygonen kümmern. Der Vorteil gegenüber Maperitive ist die Datenhaltung in einer Datenbank, und Verwendung des bekannten Mapnik-Stils. Und keine Größenbeschränkung bzw Entgeltordnung wie bei Tilemill.

EDIT: MIt Geoserver und Mapserver kann man sowas auch organisieren; beide können auf Postgis-Datenbanken zugreifen. Nur muß man sich dann erst mal nen kompletten Stil basteln.

Gruß,
ajoessen

Was Du noch wissen solltest: Die normale Web-Renderchain wie z.B. bei switch2osm beschrieben erzeugt nicht direkt Kacheln, sondern Metatiles, die 64 Kacheln enthalten. Dann brauchst Du noch eine zusätzliche Verarbeitungsstufe, um die Einzelkacheln dort auszupacken. Im Webbetrieb macht das das Modul mod_tile im Apache Server.

Über die Mapnik Python Schnittstelle kannst Du auch einzelne Kacheln mit dem Skript generate_tiles.py direkt erzeugen - aber das ist fürchterlich ineffizient und langsam, weil er dann den Renderer und die DB Abfragen für jede einzelne Kachel neu initialisiert während die Webvariante mit etwa demselben Overhead immer gleich 64 Kacheln auf einmal produziert.

Für große Gebiete mußt Du also

  • Metatiles erzeugen und hinterher auspacken
  • oder Metatiles rendern und in Python in Einzelkacheln zerlegen
  • oder viiiiiel Zeit mitbringen :slight_smile:

bye
Nop

Allerdings funktioniert das alles wohl nur mit Linux. Wenn man sich erst darin einarbeiten muß, braucht man mindestens ebensoviel Zeit.

NRW Zoomstufe 15 in 21 Stunden bei mir unter Windows XP; oder 2 Stunden für 0,5x0,5 Grad.

Gruß,
ajoessen

Oder bei mir 9-10 Stunden mit Maperitive (Zoom 8-16 !!!)

Was genau ist “alles”? :slight_smile:

Ich habe meine Tiles früher mit Mapnik/Python unter Win7 lokal erzeugt. Gibt’s inzwischen die Tools nicht mehr für Windows?

bye
Nop

Also wenn ich mir Python und Mapnik installiere dann kommen da nicht gleich die passenden Kacheln fürs Web heraus? Das stellt mich ja wieder vor Probleme. Hatte das so verstanden das das quasi “out of the box” läuft wenn man Mapnik über die Konfigurationsdateien zum laufen gebracht hat. Die Datenbank habe ich schon mit osm2pgsql laufen. Machen werde ich das unter Win7.

Danke für die Antworten bisher.

Das, was bei switch2osm aufgelistet ist. Einschliesslich dem Rendern von Metatiles und mod_tile. Oder laufen die auch mit Windows? Ich habs noch nie probiert, sondern immer nur generate_tiles.py.

Gruß,
ajoessen

Doch, so läuft das bei mir. Am Ende der generate_tiles.py trägst du Wunschgebiet und Zoomstufen ein, und los gehts. Wobei ich für jeden meiner transparenten Layer eigene py-Dateien angelegt habe.

Gruß,
ajoessen

Das klingt gut. Ich werde das die Tage mal testen.

Klar funktioniert das. Man muß sich nur im Klaren sein, daß es extrem ineffizient ist, ich kann mich erinnern daß damals ein Python Skript, das ähnlich wie die Web-Renderchain mit 10x10 Metatiles gearbeitet hat, mehr als 50 mal schneller war als generate_tiles.

bye
Nop

Wo ist der Unterschied zwischen den Varianten? Weiß Du wie ich das machen kann ohne tirex oder renderd zu installieren? Metatiles haben bei Mapnik ja außerdem den Vorteil, daß die Beschriftung über den Rand eines normalen Tiles hinausgehen kann.

Ich hatte dazu schon mal ein Ticket [1] erstellt.

Christian

[1] http://trac.openstreetmap.org/ticket/4179

In der April-Ausgabe der iX gibt es einen ausführlichen Artikel über “OSM-Daten in eigenen Karten nutzen”:
http://www.heise.de/ix/inhalt/2012/04/136/

mdk

Hab zwar keine Erfahrung damit, aber aus einer von TileMill erzeugten MBTiles Datei müsste sich mit mbutil auch ein Tile-Verzeichnis exportieren lassen, siehe FAQ.