![Page 1: T-rex, a vector tile server for your own datablog.sourcepole.ch/assets/2017/t-rex-foss4g2017.pdf · FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data Vector](https://reader033.vdocuments.us/reader033/viewer/2022050107/5f45c286417efb315e621529/html5/thumbnails/1.jpg)
FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data
FOSS4G 2017
T-rex, a vector tile server for your own data
@PirminKalbererSourcepole, Zurich, Switzerlandwww.sourcepole.com
![Page 2: T-rex, a vector tile server for your own datablog.sourcepole.ch/assets/2017/t-rex-foss4g2017.pdf · FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data Vector](https://reader033.vdocuments.us/reader033/viewer/2022050107/5f45c286417efb315e621529/html5/thumbnails/2.jpg)
Vector Tiles
Open Data
![Page 3: T-rex, a vector tile server for your own datablog.sourcepole.ch/assets/2017/t-rex-foss4g2017.pdf · FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data Vector](https://reader033.vdocuments.us/reader033/viewer/2022050107/5f45c286417efb315e621529/html5/thumbnails/3.jpg)
FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data
Demo
> Vector tile demo> https://www.mapbox.com/maps/
![Page 4: T-rex, a vector tile server for your own datablog.sourcepole.ch/assets/2017/t-rex-foss4g2017.pdf · FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data Vector](https://reader033.vdocuments.us/reader033/viewer/2022050107/5f45c286417efb315e621529/html5/thumbnails/4.jpg)
FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data
Demo
> Vector tile demo> https://www.mapbox.com/maps/
![Page 5: T-rex, a vector tile server for your own datablog.sourcepole.ch/assets/2017/t-rex-foss4g2017.pdf · FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data Vector](https://reader033.vdocuments.us/reader033/viewer/2022050107/5f45c286417efb315e621529/html5/thumbnails/5.jpg)
FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data
Mapbox Vector Tiles
https://github.com/mapbox/vector-tile-spec
> Protocol buffer format (PBF, binary, Streamable)
> Geometry in screen pixel coordinates (Integers, ZigZag encoded)
> Multipoint/Multiline/Multipolygon
> Non-spatial attributes (optional Feature-ID)
> Multiple layers per tile
![Page 6: T-rex, a vector tile server for your own datablog.sourcepole.ch/assets/2017/t-rex-foss4g2017.pdf · FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data Vector](https://reader033.vdocuments.us/reader033/viewer/2022050107/5f45c286417efb315e621529/html5/thumbnails/6.jpg)
FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data
Mapbox Vector Tiles
![Page 7: T-rex, a vector tile server for your own datablog.sourcepole.ch/assets/2017/t-rex-foss4g2017.pdf · FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data Vector](https://reader033.vdocuments.us/reader033/viewer/2022050107/5f45c286417efb315e621529/html5/thumbnails/7.jpg)
FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data
Vector tile size
> OSM data set:> Boston: 24 MB> USA: 7.2 GB> Planet: 55 GB
> Offline maps!
> Download & Build-Tools:> http://osm2vectortiles.org/> https://openmaptiles.org/
![Page 8: T-rex, a vector tile server for your own datablog.sourcepole.ch/assets/2017/t-rex-foss4g2017.pdf · FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data Vector](https://reader033.vdocuments.us/reader033/viewer/2022050107/5f45c286417efb315e621529/html5/thumbnails/8.jpg)
FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data
WMS -> WMTS -> Vector tiles
> WMS> No tiling problems (labels, etc.)> Printing
> WMTS> Scalability> Caching (server and client)
> Vector Tiles> Scalability> Caching (server and client)> Interactivity> Flexible styling (client-side rendering)> Hi-DPI
![Page 9: T-rex, a vector tile server for your own datablog.sourcepole.ch/assets/2017/t-rex-foss4g2017.pdf · FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data Vector](https://reader033.vdocuments.us/reader033/viewer/2022050107/5f45c286417efb315e621529/html5/thumbnails/9.jpg)
Creating vector tiles
Open Data
![Page 10: T-rex, a vector tile server for your own datablog.sourcepole.ch/assets/2017/t-rex-foss4g2017.pdf · FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data Vector](https://reader033.vdocuments.us/reader033/viewer/2022050107/5f45c286417efb315e621529/html5/thumbnails/10.jpg)
FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data
Vector tile stack for custom data
![Page 11: T-rex, a vector tile server for your own datablog.sourcepole.ch/assets/2017/t-rex-foss4g2017.pdf · FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data Vector](https://reader033.vdocuments.us/reader033/viewer/2022050107/5f45c286417efb315e621529/html5/thumbnails/11.jpg)
FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data
Styling / viewer
> Mapbox Styles (JSON)> Viewer:
> Mapbox GL JS> OpenLayers 3/4
> Style Editor (OSS)> Maputnik
> Mapzen Tangram Styles (YAML)> Viewer:
> Tangram> Style Editor (OSS)
> Tangram Play
![Page 12: T-rex, a vector tile server for your own datablog.sourcepole.ch/assets/2017/t-rex-foss4g2017.pdf · FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data Vector](https://reader033.vdocuments.us/reader033/viewer/2022050107/5f45c286417efb315e621529/html5/thumbnails/12.jpg)
FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data
Vector tile creation
> Read geodata within tiles borders
> Clip geometries
> Simplify geometries> Polygons: e.g. SnapToGrid> Lines: e.g. Douglas-Peucker > Points: clustering
> Generate label points
> Deliver MVT (Protobuf) format
> Serve live or seed cache (parallelization!)
![Page 13: T-rex, a vector tile server for your own datablog.sourcepole.ch/assets/2017/t-rex-foss4g2017.pdf · FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data Vector](https://reader033.vdocuments.us/reader033/viewer/2022050107/5f45c286417efb315e621529/html5/thumbnails/13.jpg)
FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data
Vector tile stack for custom data (PG)
> node-mapnik (Kartotherian, tessera)
> Tilezen tileserver
> Tegola
> t-rex
> GeoServer
> PostGIS ST_AsMVT
https://github.com/mapbox/awesome-vector-tiles
![Page 14: T-rex, a vector tile server for your own datablog.sourcepole.ch/assets/2017/t-rex-foss4g2017.pdf · FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data Vector](https://reader033.vdocuments.us/reader033/viewer/2022050107/5f45c286417efb315e621529/html5/thumbnails/14.jpg)
t-rex
Open Data
![Page 15: T-rex, a vector tile server for your own datablog.sourcepole.ch/assets/2017/t-rex-foss4g2017.pdf · FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data Vector](https://reader033.vdocuments.us/reader033/viewer/2022050107/5f45c286417efb315e621529/html5/thumbnails/15.jpg)
FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data
t-rex
> Multiple datasources (PostGIS + GDAL/OGR)
> Auto-detection of layers in PostGIS database
> Built-in viewers for data display and inspection
> Tile generation command with simple parallelization
> Automatic reprojection to grid CRS
> Support for custom tile grids
> Single executable
![Page 16: T-rex, a vector tile server for your own datablog.sourcepole.ch/assets/2017/t-rex-foss4g2017.pdf · FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data Vector](https://reader033.vdocuments.us/reader033/viewer/2022050107/5f45c286417efb315e621529/html5/thumbnails/16.jpg)
FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data
Rust
> New programming language from Mozilla
> Next Firefox rendering engine
> Systems programming (like C, C++)
> Zero-cost abstractions
> Guaranteed memory safety
> https://www.rust-lang.org/
![Page 17: T-rex, a vector tile server for your own datablog.sourcepole.ch/assets/2017/t-rex-foss4g2017.pdf · FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data Vector](https://reader033.vdocuments.us/reader033/viewer/2022050107/5f45c286417efb315e621529/html5/thumbnails/17.jpg)
FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data
Workflow with t-rex (1)
> Installation:> http://t-rex.tileserver.ch/
> Start server:
t_rex serve --dbconn postgresql://user@host/database
or
t_rex serve --datasource <file_or_gdal_ds>
![Page 18: T-rex, a vector tile server for your own datablog.sourcepole.ch/assets/2017/t-rex-foss4g2017.pdf · FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data Vector](https://reader033.vdocuments.us/reader033/viewer/2022050107/5f45c286417efb315e621529/html5/thumbnails/18.jpg)
FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data
OGR/GDAL examples (t-rex >0.8)
> natural_earth.gpkg
> ne_110m_coastline.shp
> placemarks.kml
> route.gpx
> osm.pbf
> https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_week.geojson
> spreadsheet.vrt (Spreadsheet with lat/lon columns)
> dm01avch24d.itf, inspire.gml, OCI, ...
![Page 19: T-rex, a vector tile server for your own datablog.sourcepole.ch/assets/2017/t-rex-foss4g2017.pdf · FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data Vector](https://reader033.vdocuments.us/reader033/viewer/2022050107/5f45c286417efb315e621529/html5/thumbnails/19.jpg)
FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data
Built-in viewer
![Page 20: T-rex, a vector tile server for your own datablog.sourcepole.ch/assets/2017/t-rex-foss4g2017.pdf · FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data Vector](https://reader033.vdocuments.us/reader033/viewer/2022050107/5f45c286417efb315e621529/html5/thumbnails/20.jpg)
FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data
Mapbox GL JSON viewer
![Page 21: T-rex, a vector tile server for your own datablog.sourcepole.ch/assets/2017/t-rex-foss4g2017.pdf · FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data Vector](https://reader033.vdocuments.us/reader033/viewer/2022050107/5f45c286417efb315e621529/html5/thumbnails/21.jpg)
FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data
OpenLayers viewer
![Page 22: T-rex, a vector tile server for your own datablog.sourcepole.ch/assets/2017/t-rex-foss4g2017.pdf · FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data Vector](https://reader033.vdocuments.us/reader033/viewer/2022050107/5f45c286417efb315e621529/html5/thumbnails/22.jpg)
FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data
X-Ray viewer
![Page 23: T-rex, a vector tile server for your own datablog.sourcepole.ch/assets/2017/t-rex-foss4g2017.pdf · FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data Vector](https://reader033.vdocuments.us/reader033/viewer/2022050107/5f45c286417efb315e621529/html5/thumbnails/23.jpg)
FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data
X-Ray viewer
![Page 24: T-rex, a vector tile server for your own datablog.sourcepole.ch/assets/2017/t-rex-foss4g2017.pdf · FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data Vector](https://reader033.vdocuments.us/reader033/viewer/2022050107/5f45c286417efb315e621529/html5/thumbnails/24.jpg)
FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data
Create styles with Maputnik
> Kickstarter financed OSS editor by Lukas Martinelli
> Integrated in t-rex backend
![Page 25: T-rex, a vector tile server for your own datablog.sourcepole.ch/assets/2017/t-rex-foss4g2017.pdf · FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data Vector](https://reader033.vdocuments.us/reader033/viewer/2022050107/5f45c286417efb315e621529/html5/thumbnails/25.jpg)
FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data
Workflow with t-rex (3)
> Generate a configuration template:
t_rex genconfig --dbconn postgresql://user@host/database
> Run with configuration file:
t_rex serve --config myconfig.cfg
![Page 26: T-rex, a vector tile server for your own datablog.sourcepole.ch/assets/2017/t-rex-foss4g2017.pdf · FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data Vector](https://reader033.vdocuments.us/reader033/viewer/2022050107/5f45c286417efb315e621529/html5/thumbnails/26.jpg)
FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data
Workflow with t-rex (4)
> Generate tile cache:
t_rex generate --config myconfig.cfg
> Create MBTiles File:
mb-util --image_format=pbf /tmp/mvtcache/ne ne.mbtiles
![Page 27: T-rex, a vector tile server for your own datablog.sourcepole.ch/assets/2017/t-rex-foss4g2017.pdf · FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data Vector](https://reader033.vdocuments.us/reader033/viewer/2022050107/5f45c286417efb315e621529/html5/thumbnails/27.jpg)
Open Data
t-rex.tileserver.ch
![Page 28: T-rex, a vector tile server for your own datablog.sourcepole.ch/assets/2017/t-rex-foss4g2017.pdf · FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data Vector](https://reader033.vdocuments.us/reader033/viewer/2022050107/5f45c286417efb315e621529/html5/thumbnails/28.jpg)
FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data
Roadmap
> Release of 0.8 with OGR/GDAL support
> Clipping & Simplification for OGR/GDAL layers
> More cache output formats (S3, etc.)
> Performance optimizations for big geometries
> More to come - driven by customer needs or contributions
> ST_AsMVT integration?
![Page 29: T-rex, a vector tile server for your own datablog.sourcepole.ch/assets/2017/t-rex-foss4g2017.pdf · FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data Vector](https://reader033.vdocuments.us/reader033/viewer/2022050107/5f45c286417efb315e621529/html5/thumbnails/29.jpg)
FOSS4G 2017 Boston 18.8.2017 T-rex, a vector tile server for your own data
FOSS4G 2017
Questions? Thank you!
@PirminKalberer@sourcepole