Blazing fast and lightweight PostGIS, MBtiles and PMtiles tile server, tile generation, and mbtiles tooling.
Go to file
Yuri Astrakhan 5969150f50
Implement rudimentary mbtiles binary (#696)
This will be the entry point for #667
2023-06-01 10:13:43 -04:00
.cargo Add .mbtiles support (#549) 2023-01-09 00:10:23 -05:00
.cargo-husky/hooks bump to 0.6.2 2022-12-13 20:14:07 -05:00
.github add CI path ignores 2023-05-29 21:00:44 -04:00
benches Require PostGIS 3 and use ST_TileEnvelope (#497) 2022-11-30 18:57:27 +02:00
demo Simplify demo - remove nginx (#692) 2023-05-31 00:56:11 +02:00
docs adjust book style (#691) 2023-05-30 19:13:40 -04:00
homebrew-formula add brew Formula (#623) 2023-05-24 00:34:12 -04:00
martin-mbtiles Implement rudimentary mbtiles binary (#696) 2023-06-01 10:13:20 -04:00
martin-tile-utils Consolidate all crate dependencies (#694) 2023-06-01 09:05:06 -04:00
src In auto-discover, hide geocolumns from tables with multiple ones (#663) 2023-05-22 09:44:21 -04:00
tests allow resize menu by drag side on tests/debug.html (#677) 2023-05-25 12:07:43 -04:00
.dockerignore Improve Coverage tooling (#535) 2022-12-27 06:56:27 +00:00
.gitignore Create mdbook documentation (#681) 2023-05-29 02:06:35 +00:00
arm64.Dockerfile feat/add arm64 docker support (#613) 2023-03-28 06:28:55 +00:00
Cargo.lock Implement rudimentary mbtiles binary (#696) 2023-06-01 10:13:20 -04:00
Cargo.toml Implement rudimentary mbtiles binary (#696) 2023-06-01 10:13:20 -04:00
CHANGELOG.md Migrate some urbica/martin -> maplibre/martin (#347) 2022-06-11 10:51:41 +03:00
CODE_OF_CONDUCT.md feat: clean up readme and code of conduct (#382) 2022-08-11 07:06:12 -04:00
docker-compose.yml Migrate to GitHub Docker registry (#602) 2023-03-16 16:01:33 -04:00
Dockerfile feat/add arm64 docker support (#613) 2023-03-28 06:28:55 +00:00
justfile Create mdbook documentation (#681) 2023-05-29 02:06:35 +00:00
LICENSE-APACHE Clean up licensing per on-boarding (#364) 2022-07-06 08:25:45 -04:00
LICENSE-MIT Clean up licensing per on-boarding (#364) 2022-07-06 08:25:45 -04:00
logo.png docs: ✏️ add notes on debugging 2019-02-04 20:22:04 +03:00
nginx.conf fix: tiles attribute in tilejson with x-rewrite-url (#266) 2021-10-15 18:19:36 +03:00
README.md simplify readme (#693) 2023-06-01 10:11:42 -04:00
release.toml docs: update CHANGELOG.md 2021-10-18 16:15:26 +03:00
rustfmt.toml sort use-statements during fmt (#376) 2022-08-06 12:48:10 -04:00
SECURITY_POLICY.txt Create SECURITY_POLICY.txt (#489) 2023-02-04 19:06:17 -05:00

Martin

Book docs.rs docs Slack chat GitHub crates.io version Security audit CI build

Martin is a tile server able to generate vector tiles on the fly from large PostGIS databases, or serve tiles from PMTile and MBTile files. Martin optimizes for speed and heavy traffic, and is written in Rust.

See Martin book for complete documentation.

Martin

Requirements

When using Martin with PostgreSQL, you must install PostGIS with at least v3.0+, and v3.1+ is recommended.

Installation

You can download martin from GitHub releases page.

Platform Downloads (latest)
Linux 64-bit
macOS 64-bit
Windows 64-bit

If you are using macOS and Homebrew you can install martin using Homebrew tap.

brew tap maplibre/martin https://github.com/maplibre/martin.git
brew install maplibre/martin/martin

You can also use official Docker image

export PGPASSWORD=postgres  # secret!
docker run \
       -p 3000:3000 \
       -e PGPASSWORD \
       -e DATABASE_URL=postgresql://user@host:port/db \
       ghcr.io/maplibre/martin

Use docker -v param to share configuration file or its directory with the container:

export PGPASSWORD=postgres  # secret!
docker run -p 3000:3000 \
           -e PGPASSWORD \
           -e DATABASE_URL=postgresql://user@host:port/db \
           -v /path/to/config/dir:/config \
           ghcr.io/maplibre/martin --config /config/config.yaml

Usage

PostGIS sources

Martin requires at least one PostgreSQL connection string or a tile source file as a command-line argument. A PG connection string can also be passed via the DATABASE_URL environment variable.

martin postgresql://user:password@host:port/database

Martin provides TileJSON endpoint for each geospatial-enabled table in your database.

MBTiles and PMTiles sources

Martin can serve any type of tiles from PMTile and MBTile files. To serve a file from CLI, simply put the path to the file or the directory with *.mbtiles or *.pmtiles files. For example:

martin  /path/to/mbtiles/file.mbtiles
martin  /path/to/directory

API

When started, Martin will go through all spatial tables and functions with an appropriate signature in the database. These tables and functions will be available as the HTTP endpoints, which you can use to query Mapbox vector tiles.

Method URL Description
GET / Status text, that will eventually show web UI
GET /catalog List of all sources
GET /{sourceID} Source TileJSON
GET /{sourceID}/{z}/{x}/{y} Source Tiles
GET /{sourceID1},...,{nameN} Composite Source TileJSON
GET /{sourceID1},...,{nameN}/{z}/{x}/{y} Composite Source Tiles
GET /health Martin server health check: returns 200 OK

Documentation

See Martin book for complete documentation.