martin

Blazing fast and lightweight PostGIS, MBtiles and PMtiles tile server, tile generation, and mbtiles tooling.

APACHE-2.0 License

Downloads
463
Stars
2.1K
Committers
47

Bot releases are hidden (Show)

martin - v0.14.2 Latest Release

Published by nyurik 4 months ago

What's Changed

Full Changelog: https://github.com/maplibre/martin/compare/v0.14.1...v0.14.2

martin - v0.14.1

Published by nyurik 4 months ago

Book

What's Changed

Full Changelog: https://github.com/maplibre/martin/compare/v0.14.0...v0.14.1

martin - v0.14.0

Published by nyurik 4 months ago

Book
UPDATE: this release has a minor bug in mbtiles utility, fixed in subsequent release

martin

martin-cp

mbtiles

  • New mbtiles diff command aliasing mbtiles copy --diff-with-file by @sharkAndshark in https://github.com/maplibre/martin/pull/1068
  • Add binary diff support for mbtiles by @nyurik in https://github.com/maplibre/martin/pull/1358
    • mbtiles diff now has an additional --patch-type param with whole, bin-diff-raw and bin-diff-gz values:
      • whole stores different tiles as before - as whole tiles in the tiles table
      • bin-diff-raw computes binary difference between tiles, and stores them as brotli-encoded value in a bsdiffraw table, together with a xxh3_64 hash of the tile as it will be stored after patching
      • bin-diff-gz same as bin-diff-raw, but assumes the tiles are gzip-compressed, so it uncompresses them before comparing. The xxh3_64 stores the hash of the uncompressed tile. The data will be stored in the bsdiffrawgz table (identical structure with above)
    • mbtiles copy --apply-patch will automatically detect if bsdiffrawgz or bsdiffraw tables exist, and will use binary patching.
    • mbtiles apply-patch does not support binary patching yet
    • mbtiles copy --diff-with-file ... --patch-type ... is an alias to mbtiles diff --patch-type ...
  • bug: ensure agg_tiles_hash_after_apply is added even on empty mbtiles by @nyurik in https://github.com/maplibre/martin/pull/1242

Documentation

Other Changes

New Contributors

Full Changelog: https://github.com/maplibre/martin/compare/v0.13.0...v0.14.0

martin - v0.13.0

Published by nyurik 10 months ago

Tile Caching

Add a top level config parameter -- the size of cache memory (in MB) to use for caching tiles and PMT directories, defaulting to 512, and 0 to disable. This also removes the pmtiles.dir_cache_size_mb parameter (it will be ignored, but will give a warning)

cache_size_mb: 512

The new cache will contain all tiles as provided by the source. So if PostgreSQL returns a non-compressed tile, the cache will contain the uncompressed variant, and will be compressed for each response. This will be fixed in the later releases.

Note that fonts and sprites are not cached at this time, and are still a TODO.

Internal

Full Changelog: https://github.com/maplibre/martin/compare/v0.12.0...v0.13.0

martin - v0.12.0

Published by nyurik 10 months ago

Cached PMTiles with HTTP support

Martin now supports cached local and HTTP PMTiles sources. Additionally, multiple PMTiles sources share a single web client instance, optimizing connection reuse in case multiple pmtiles reside on the same host. Implemented by @nyurik with great help from @kyleslugg who did the integration testing CI work, see https://github.com/maplibre/martin/pull/991, https://github.com/maplibre/martin/pull/1095, https://github.com/maplibre/martin/pull/1094

pmtiles:
  # Memory (in MB) to use for caching PMTiles directories [default: 32, 0 to disable]] 
  dir_cache_size_mb: 100
  paths:
    # scan this whole dir, matching all *.pmtiles files
    - /dir-path
    # specific pmtiles file will be published as a pmt source (filename without extension)
    - /path/to/pmt.pmtiles
    # A web server with a PMTiles file that supports range requests
    - https://example.org/path/tiles.pmtiles
  sources:
    # named source matching source name to a single file
    pm-src1: /path/to/pmt.pmtiles
    # A named source to a web server with a PMTiles file that supports range requests
    pm-web2: https://example.org/path/tiles.pmtiles

martin-cp and mbtiles improvements

Martin as a Reusable Crate

Martin has been refactored to allow modular reuse to be more of a library in your own Rust application. When used as a library, you can use the following features to limit which backends are compiled by @nyurik in https://github.com/maplibre/martin/pull/1097 and https://github.com/maplibre/martin/pull/1094

  • postgres - enable PostgreSQL/PostGIS tile sources
  • pmtiles - enable PMTile tile sources
  • mbtiles - enable MBTile tile sources
  • fonts - enable font sources
  • sprites - enable sprite sources

Full Changelog: https://github.com/maplibre/martin/compare/v0.11.6...v0.12.0

martin - v0.11.6

Published by nyurik 10 months ago

What's Changed

  • Multiple mbtiles and martin-cp fixes by @nyurik in https://github.com/maplibre/martin/pull/1083
    • BREAKING: martin-cp will now set format=pbf instead of mvt. This is what QGIS and possibly others expect, and this is what tools like tilelive generates.
    • martin-cp sets minzoom and maxzoom metadata values based on the zoom parameters
    • Add mbtiles meta-update command to refresh zoom levels based on the present tiles.

Internal Changes

Full Changelog: https://github.com/maplibre/martin/compare/v0.11.5...v0.11.6

martin -

Published by nyurik 10 months ago

Bug Fixes

What's Changed

Internal Improvements

Full Changelog: https://github.com/maplibre/martin/compare/v0.11.4...v0.11.5

martin - v0.11.4

Published by nyurik 11 months ago

What's Changed

Miscellaneous

Full Changelog: https://github.com/maplibre/martin/compare/v0.11.3...v0.11.4

martin - v0.11.4

Published by nyurik 11 months ago

What's Changed

Miscellaneous

Full Changelog: https://github.com/maplibre/martin/compare/v0.11.3...v0.11.4

martin - v0.11.3

Published by nyurik 11 months ago

What's Changed

Internal

New Contributors

Full Changelog: https://github.com/maplibre/martin/compare/v0.11.2...v0.11.3

martin - v0.11.2

Published by nyurik 11 months ago

What's Changed

Full Changelog: https://github.com/maplibre/martin/compare/v0.11.1...v0.11.2

martin - v0.11.1

Published by nyurik 11 months ago

What's Changed

Full Changelog: https://github.com/maplibre/martin/compare/v0.11.0...v0.11.1

martin - v0.11.0

Published by nyurik 11 months ago

What's New

Configuration

Documentation changes

Minor changes

Full Changelog: https://github.com/maplibre/martin/compare/v0.10.0...v0.11.0

martin - v0.10.0

Published by nyurik 12 months ago

Breaking Changes

Auto bounds calculation methods

  • Remove --disable-bounds flag and disable_bounds config parameters.
  • Add --auto-bounds / -b CLI parameter and auto_bounds config value:
    • quick: Compute table geometry bounds, but skips it if it takes longer than 5 seconds (default)
    • calc: Compute table geometry bounds. The startup time may be significant. Make sure all GEO columns have indexes
    • skip: Skip bounds calculation. The bounds will be set to the whole world
  • -b is now mapped to --auto-bounds param, but it will fail if used by itself because it now requires a value.

See https://github.com/maplibre/martin/pull/958 by @nyurik, fixing #955

What's New

MBTiles

Miscellaneous

New Contributors

Full Changelog: https://github.com/maplibre/martin/compare/v0.9.3...v0.10.0

martin - v0.9.3: Homebrew auto-release

Published by nyurik about 1 year ago

What's Changed

No code changes, fixing CI processes related to homebrew. Now auto-creates PRs in the maplibre/homebrew-martin repo

Full Changelog: https://github.com/maplibre/martin/compare/v0.9.2...v0.9.3

martin -

Published by nyurik about 1 year ago

What's Changed

New Contributors

Full Changelog: https://github.com/maplibre/martin/compare/v0.9.1...v0.9.2

martin - v0.9.1

Published by nyurik about 1 year ago

What's Changed

MBTiles tool

Full Changelog: https://github.com/maplibre/martin/compare/v0.9.0...v0.9.1

martin - v0.9.0

Published by nyurik about 1 year ago

What's New

  • TileJSON configuration can now be provided by PostgreSQL sources using COMMENT ON FUNCTION and COMMENT ON TABLE.
  • Multi-platform Docker support - new image work on linux/arm64 and linux/amd64 platforms.
  • New build packages: Debian amd64, and statically linked (musl) for ARM64 and AMD64.
  • Use Rustls instead of OpenSSL. Keep an eye on any PostgreSQL connection issues with SSL.
  • A lot of improvements with mbtiles tool, including apply-diff, validate, meta-all, and meta-set commands, and the ability to validate each tile and the entire mbtiles.

BREAKING

Configuration

ARM-64, Docker, packaging, and CI improvements

mbtiles tool changes

Debug tools

Other

New Contributors

Full Changelog: https://github.com/maplibre/martin/compare/v0.8.7...v0.9.0

martin - v0.8.7

Published by nyurik over 1 year ago

What's New

Sprite serving

Dynamic sprites support was added by @nyurik in https://github.com/maplibre/martin/pull/715. Given a directory with SVG images, Martin will dynamically generate a sprite index and a PNG image, for both low and high resolution displays. This feature is made possible by the spreet crate from @flother (thank you!). Per MapLibre sprites API, the new feature supports

  • /sprite/<sprite_id>.json metadata about the sprite file - all coming from a single directory
  • /sprite/<sprite_id>.png all images combined into a single PNG
  • /sprite/<sprite_id>@2x.json same but for high DPI devices
  • /sprite/<sprite_id>@2x.png

copy mbtiles tool

mbtiles tool now lets users partially copy an mbtiles file, filtering to specific zooms, and to convert de-duplicated to a flat mbtiles format.
by @upsicleclown in https://github.com/maplibre/martin/pull/712, https://github.com/maplibre/martin/pull/723

New Contributors

Full Changelog: https://github.com/maplibre/martin/compare/v0.8.6...v0.8.7

martin - v0.8.6: Massive PG query performance improvements

Published by nyurik over 1 year ago

What's Changed

Full Changelog: https://github.com/maplibre/martin/compare/v0.8.5...v0.8.6

Package Rankings
Top 28.59% on Crates.io
Top 18.62% on Pypi.org
Top 6.74% on Proxy.golang.org
Badges
Extracted from project README
Martin Book docs.rs docs GitHub crates.io version Security audit CI build