Skip to content

Repository files navigation

OpenStreetMap Tile Server (OTS)

OTS is a server that loads OpenStreetMap data file (*.osm.pbf) into memory then generates map tiles for HTTP requests.

Compile & Packaging

  • checkout source codes
$ git clone https://github.com/OutOfBedlam/ots.git
$ cd ots
  • compiled executable binary will be created in ./tmp
$ make

Start OTS as tile-rendering-server and OSM data-server in a process

You need to download osm.pbf file from OpenStreetMap sites
https://wiki.openstreetmap.org/wiki/Planet.osm#Country_and_area_extracts

Current version of OTS loads whole map data into memory, so make sure your osm.pbf file is size enough to fit system memory.

./tmp/ots server -p 1918 -i ./tmp/my-area.osm.pbf 
sequenceDiagram
autonumber
Note over Browser, OTS: HTTP (ex: leaflet.js)
Browser ->>+ OTS : http://server_addr/tiles/{z}/{x}/{y}.png
OTS->>OTS: Convert coords
OTS->>OTS: Retrieve map data
OTS->>OTS: Gen image
OTS ->>- Browser: .png
Loading

Start tile-rendering-server and data-server

  • start a process as a data-server
./tmp/ots server -p 1918 -i ./tmp/my-area.osm.pbf 
  • start tile-rendering-server

Specify the endpoint of data-server instead of *.osm.pbf file with -i

./tmp/ots server -p 1919 -i tcp://127.0.0.1:1918
  • then web browser can retrieve map tiles as following flow

Web browser --> 127.0.0.1:1919 (rendering server) --> 127.0.0.1:1918 (data server)

sequenceDiagram
autonumber
Note over Browser, Render-Server: HTTP (ex: leaflet.js)
Browser ->>+ Render-Server : http://server_addr/tiles/{z}/{x}/{y}.png
Render-Server->>Render-Server: Convert coords
Render-Server ->>+ Data-Server : request map data with lat/lon bounds
Note over Render-Server, Data-Server: GRPC
Data-Server ->>- Render-Server: map data (osm features)
Render-Server->>Render-Server: Gen image
Render-Server ->>- Browser: .png
Loading

Configuration file

edit and copy server-config-sample.hcl, keep file extension as *.hcl. then apply the path with -c argument.

./tmp/ots server -c <config_file.hcl>

config file items

itemdescex
pnameprocess instance name"ots01"
osm-data-sourcedata file or data server address"./data.osm.pbf"
"tcp://localhost:1918"
bindlistening address"127.0.0.1"
portlistening port1919
grpc.max-recv-msg-sizegrpc limit (MB)100
grpc.max-send-msg-sizegrpc limit (MB)100
log.consolelog output to consoletruefalse
log.filenamelog file path
log.default-prefix-width10
log.default-levellog level"TRACE"
http.console-colorcolored http logtruefalse
http.debug-modedebug http logtruefalse
httplog.console
httplog.filename
httplog.default-prefix-width
httplog.default-level

rendering server only items

itemdescex
cache-sizesize of lru cache2000
show-watermarkwatermark (tile coordinates) on tilestruefalse
show-labelsenable labelstruefalse

All items in config file can be override by command line arguments. the name of argument is same as config item with double dash --. For example, to override port number ots -c my-config.hcl --port=2929, port number 2929 will be applied.

Where to download *.osm.pbf files

ex) Download south korean osm.pbf file

References about osm.pbf files

About

tile server for OpenStreetMap data file (*.osm.pbf)

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages