DE:Node-tileserver

From OpenStreetMap Wiki
Jump to navigation Jump to search
Logo.png
Diese Seite handelt von historischen Inhalten der Geschichte von OpenStreetMap. Es geht dabei nicht um Gegenwärtiges, sondern um frühere Konzepte, Probleme oder Ideen.
Einfluss auf OpenStreetMap
Sie diente von 2014 bis 2019 als Tileserver-Software für die OpenRailwayMap und wurde durch Tirex und mod_tile ersetzt.
Gründe für die Überlebtheit
Diese Software wird nicht mehr weiterentwickelt und gepflegt.


node-tileserver ist ein schlanker Tileserver, der in Javascript und NodeJS geschrieben ist.

Projektbeschreibung

Dank weniger Abhängigkeiten und einer perfekten Abstimmung auf eine osm2pgsql-Datenbank lässt sich damit schnell ein eigener Kachelserver zum Erzeugen von OpenStreetMap-Karten aufsetzen.

Das Ausliefern der Kacheln profitiert vom non-blocking-I/O von NodeJS, sodass das Abarbeiten der Clientanfragen auch bei hoher Last und vielen gleichzeitigen Anfragen schnell und zuverlässig funktioniert.

Doch node-tileserver zeichnet sich nicht nur durch sein schlankes Design und seine hohe Geschwindigkeit aus, sondern auch durch die Art des Renderings: node-tileserver kann nämlich sowohl Vektorkacheln für das Rendering im Browser als auch die herkömmlichen Bitmapkacheln erzeugen und ausliefern. Zur Reduzierung der Serverlast und zur Beschleunigung der Abfragen werden die Kacheln nach dem erstmaligen Rendern auf der Festplatte zwischengespeichert und mit einem einfachen, aber zuverlässigen Expiring-Mechanismus aktualisiert. Außerdem ist der Server darauf ausgelegt, die Bitmapkacheln in mehreren verfügbaren Kartenstilen auszuliefern.

Die Besonderheit liegt aber beim Renderingvorgang selbst: Sowohl auf der Clientseite als auch auf der Serverseite wird nämlich beim eigentlichen Rendering auf KothicJS zurückgegriffen. Wird eine Vektorkarte genutzt, dann erzeugt der Kachelserver Vektorkacheln im GeoJSON-Format und liefert diese an den Client aus, wo sie dann mit KothicJS im Browser gerendert werden. Soll eine Karte dagegen herkömmlichen Bitmapkacheln verwenden, dann werden die Vektordaten bereits auf dem Server - ebenfalls mit KothicJS - gerendert und dann als fertige PNG-Grafiken an den Client gesendet.

Das Projekt entstand ab Dezember 2013 bei der Suche nach einem schlanken Renderer bzw. Kachelserver während der Entwicklung der OpenRailwayMap und wird seitdem erfolgreich für das Rendering der OpenRailwayMap eingesetzt.

Features

  • Erzeugen von Bitmapkacheln zur Nutzung in Leaflet oder OpenLayers
  • Erzeugen von Vektorkacheln für das clientseitige Rendering im Browser mit KothicJS
  • Nutzung von KothicJS sowohl als Bitmap-Renderer auf dem Server als auch als Canvas-Renderer im Browser
  • Cachingmechanismus zur Beschleunigung von Kachelanfragen
  • Kartendesign mit MapCSS
  • Unterstützung von mehreren Kartenstilen
  • Entworfen für die Nutzung mit einer hstore osm2pgsql Datenbank mit OpenStreetMap-Daten
  • Manuelles Neurendern einzelner Kacheln per GET-Request
  • Automatisches Neurendern veralteter Kacheln
  • Hohe Geschwindigkeit beim Beantworten von Clientanfragen dank des non-blocking I/O Designs von NodeJS
  • Einfache Installation auf vielen Umgebungen dank weniger Abhängigkeiten

Links