Hey #Openstreetmap bubble. Was genau ist der Unterschied zwischen #Protomaps und #Versatiles?

@giggls Protomaps' .pmtiles ist ein Vector Tile Container-Format wie MBTiles. Weil es clever aufgebaut ist, kannst du an einzelne Tiles per random access gelangen.

Der Trick ist jetzt dass du eine .pmtiles Datei static hosten kannst (apache, nginx, sogar github pages usw.), und der Browser per Maplibre und pmtiles plugin dann Byte-Range requests macht um die vector tile Daten der Karte zu laden.

Versatiles braucht einen tile server den du betreiben musst.

@djh Huh und was spricht dann noch für versatiles?

@giggls Gute Frage 😊

Es gibt definitiv eckige Kanten mit Protomaps, zum Beispiel hat Firefox das Caching für Byte-Range requests nicht implementiert

https://github.com/protomaps/PMTiles/issues/272

Empfohlen für AWS wird

1. Die .pmtiles Datei auf S3 hosten

2. Ein lambda das /z/x/y.mvt requests annimmt und umschreibt auf Byte-Range requests gegen die Datei auf s3

3. Cloudfront als CDN um die /z/x/y.mvt requests global zu cachen

Das gibt dir globale high available low latency vector tiles im /z/x/y.mvt Format.

Range requests browser caching not working in Firefox (browser bug) · Issue #272 · protomaps/PMTiles

Hey folks, I noticed earlier in my experimentation with maplibre and pmtiles that range requests against a .pmtiles file are not getting cached by browsers (I'm talking about Firefox and Chrome spe...

GitHub

@giggls Beide Projekte bieten zusätzlich noch vector tile basemap styles und pipelines und tools zur Erstellung usw. da gibt sich also nicht arg viel.

Die .pmtiles Datei für den Planet ist ca. 110 GB groß. Wenn du die Datei auf einem static host + cdn histest (z.b. s3 bucket und cloudfront) hast du global vector tiles ohne dass du groß Infrastruktur brauchst und Kosten sind extremst gering.

@djh Frontend Stiles machen die wenn ich das richtig verstanden habe doch beide mit Shortbread und Maplibre-GL?

@giggls Protomaps das File Format ist unabhängig von den Tiles und deren Schema was du rein packst.

Protomaps das Projekt an sich generiert zusätzlich per planetiler vector tiles und hat basemap styles (protomaps-themes-base) für maplibre.

https://docs.protomaps.com/basemaps/maplibre

Diese default styles kannst du hier ausprobieren

https://maps.protomaps.com

Basemaps for MapLibre | Protomaps Docs

Technical Documentation for Protomaps

@djh Gibt es ein Raster-Fallback für legacy tiles?

@giggls Das .pmtiles Format erlaubt dir raster tiles zu encoden, ja.

Das hab ich auf der Arbeit mal gemacht für ein raster DEM. Da encodest du das DEM in raster tiles, steckst due raster tiles alle in eine einzige .pmtiles Datei und hostest die. Funktioniert!

https://github.com/protomaps/PMTiles/blob/main/spec/v3/spec.md#tile-type-tt

PMTiles/spec/v3/spec.md at main · protomaps/PMTiles

Cloud-optimized + compressed single-file tile archives for vector and raster maps - protomaps/PMTiles

GitHub
@djh Das meine ich nicht. Was ich meine ist serverseitiges Rendering in Rastertiles. Dieses proprietäre MapTiler Zeug macht das.

@giggls Achso. Nein gibt es Standardmäßig nicht, also ist nicht Bestandteil des Protomaps Projektes.

Wie du deine Tiles erstellst ist den .pmtiles Format erst mal egal.

Du kannst im Hintergrund sowohl Tiles im vector tile Format erstellen (z.b. mit tilemaker oder planetiler) und parallel dazu Tiles im raster Format (z.b. mit mapnik).

Beide kannst du dann in das .pmtiles Container Format stecken und von maplibre rendern lassen. Das geht technisch, ja.

@djh Kann ja eigentlich nicht weiter kompliziert sein das Serverseitig in einem OpenGL-Kontext zu machen. Ich stelle mir einen Container vor der serverseitig eine Vektorkachel anfordert und clientseitig ein png ausgibt.

@giggls Ist sicher machbar!

Das ist dann halt nicht mehr im scope von Protomaps: die wollen ja hauptsächlich vector tiles unterstützen aber vor allem so wenig bzw. keine Infrastruktur mit Servern usw. wie möglich.

@djh Na ja auf osm.org wird es ohne legacy tile support bestimmt nicht gehen.

@giggls Zum OpenStreetMap Vector Tile Projekt kann ich weiter nichts sagen, ich lese da selbst nur die News ab und zu.

Soweit ich das mitbekommen habe sollen da vector tiles aus einer postgres Datenbank generiert werden; im Shortbread Schema.

Mehr dazu z.b. hier

https://www.openstreetmap.org/user/pnorman/diary

https://github.com/pnorman/tilekiln

pnorman's Diary

OpenStreetMap is a map of the world, created by people like you and free to use under an open license.

OpenStreetMap
@djh Ja, das ist für den Anwendungszweck auf osm.org auch sinnvoll. Für 99% der Anwender die jedoch nur Karten aus OSM-Daten haben wollen ist ein Datenupdate einmal im Jahr ausreichend und ein System wie Protomaps sinnvoller.

@giggls Support für .pmtiles ist mittlerweile auch in etlichen Tools angekommen. Z.b. tilemaker kann direkt .pmtiles generieren, ebenso felt/tippecanoe, gdal, usw.

Lohnt sich definitiv Protomaps anzuschauen und damit ein wenig rumzispielen einfach nur weil es manche use cases so extrem einfach macht.

@giggls Als Beispiel: Ich hab hier eine Github Action die jeden Tag meinen Ruderfortschritt scraped und die Karte updated, die per Github Pages gehostet wird.

Die vector tiles ist eine kleine .pmtiles Datei die im repo selbst eingecheckt ist

https://daniel-j-h.github.io/rowing2024/

https://github.com/daniel-j-h/rowing2024

Geht sicher auch anders aber Protomaps macht sowas eben richtig einfach und bequem!

Rowing 2024

@giggls Zu den MBTiles und PMTiles hab ich hier ein bisschen was geschrieben gehabt, aber das braucht definitiv mehr Dokumentation und Content

https://www.openstreetmap.org/user/daniel-j-h/diary/404061

Everything You Wanted to Know About Vector Tiles (But Were Afraid to Ask)

With 2024 officially being the year of OpenStreetMap vector maps lets do a deep-dive into vector maps: their history and how the underlying vector tiles work in detail.

OpenStreetMap