Blazing fast and lightweight PostGIS, MBtiles and PMtiles tile server, tile generation, and mbtiles tooling.
APACHE-2.0 License
Bot releases are visible (Hide)
Full Changelog: https://github.com/maplibre/martin/compare/v0.14.1...v0.14.2
Published by nyurik 4 months ago
mbtiles copy --apply-patch
when applying bin-diff-raw
patches by @nyurik in https://github.com/maplibre/martin/pull/1384
Full Changelog: https://github.com/maplibre/martin/compare/v0.14.0...v0.14.1
Published by nyurik 4 months ago
UPDATE: this release has a minor bug in mbtiles
utility, fixed in subsequent release
--preferred-encoding (gzip|brotli)
to use when tile is not pre-encoded by source by @sharkAndshark in https://github.com/maplibre/martin/pull/1189
--auto-bounds
silently ignored with --config
by @nyurik in https://github.com/maplibre/martin/pull/1223
mbtiles diff
command aliasing mbtiles copy --diff-with-file
by @sharkAndshark in https://github.com/maplibre/martin/pull/1068
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
tablebin-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 patchingbin-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 yetmbtiles copy --diff-with-file ... --patch-type ...
is an alias to mbtiles diff --patch-type ...
git_source_info
to get_source_info
by @sharkAndshark in https://github.com/maplibre/martin/pull/1164
agg_tiles_hash_before_apply
, warnings, and validate on patch by @nyurik in https://github.com/maplibre/martin/pull/1266
Full Changelog: https://github.com/maplibre/martin/compare/v0.13.0...v0.14.0
Published by nyurik 10 months ago
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.
Full Changelog: https://github.com/maplibre/martin/compare/v0.12.0...v0.13.0
Published by nyurik 10 months ago
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
improvementsmartin-cp
will now update min/max zoom levels after copying to an mbtiles file, but only if the existing metadata min/max zooms do not include the tiles actually contained in the file by @nyurik in https://github.com/maplibre/martin/pull/1096
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
Full Changelog: https://github.com/maplibre/martin/compare/v0.11.6...v0.12.0
Published by nyurik 10 months ago
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 parametersmbtiles meta-update
command to refresh zoom levels based on the present tiles.Full Changelog: https://github.com/maplibre/martin/compare/v0.11.5...v0.11.6
mbtiles
and martin-cp
now require --on-duplicate
when adding to existing mbtiles files by @nyurikmbtiles copy --bbox ...
filter to copy tiles within a bbox only by @nyurikmbtiles copy --copy (all|tiles|metadata)
flag to limit what gets copied by @nyurikmbtiles
commands by @nyurik in https://github.com/maplibre/martin/pull/1063
MbtilesCopier
into CopyArgs
by @nyurik in https://github.com/maplibre/martin/pull/1072
Full Changelog: https://github.com/maplibre/martin/compare/v0.11.4...v0.11.5
Published by nyurik 11 months ago
mbtiles validate
by @nyurik in https://github.com/maplibre/martin/pull/1057
tiles
table/view, e.g. bad tile index or incorrect data type.Full Changelog: https://github.com/maplibre/martin/compare/v0.11.3...v0.11.4
Published by nyurik 11 months ago
mbtiles validate
by @nyurik in https://github.com/maplibre/martin/pull/1057
tiles
table/view, e.g. bad tile index or incorrect data type.Full Changelog: https://github.com/maplibre/martin/compare/v0.11.3...v0.11.4
Published by nyurik 11 months ago
martin-cp
can also set metadata values after copying by @nyurik in https://github.com/maplibre/martin/pull/1038
Full Changelog: https://github.com/maplibre/martin/compare/v0.11.2...v0.11.3
Published by nyurik 11 months ago
martin-cp
by @nyurik in https://github.com/maplibre/martin/pull/1033
Full Changelog: https://github.com/maplibre/martin/compare/v0.11.1...v0.11.2
Published by nyurik 11 months ago
Full Changelog: https://github.com/maplibre/martin/compare/v0.11.0...v0.11.1
Published by nyurik 11 months ago
martin-cp
tool to bulk-copy tiles from any Martin-supported sources by @nyurik in https://github.com/maplibre/martin/pull/1011
mbtiles summary
tool to print MBTiles statistics by @sharkAndshark in https://github.com/maplibre/martin/pull/986
mbtiles copy --dst-type
arg name by @nyurik in https://github.com/maplibre/martin/pull/1003
Full Changelog: https://github.com/maplibre/martin/compare/v0.10.0...v0.11.0
Published by nyurik 12 months ago
--disable-bounds
flag and disable_bounds
config parameters.--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 indexesskip
: 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
/font/<name>/<start>-<end>
by @nyurik in https://github.com/maplibre/martin/pull/755
--apply-patch
to copy, rename apply-diff by @nyurik in https://github.com/maplibre/martin/pull/945
Full Changelog: https://github.com/maplibre/martin/compare/v0.9.3...v0.10.0
Published by nyurik about 1 year ago
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
Full Changelog: https://github.com/maplibre/martin/compare/v0.9.1...v0.9.2
Published by nyurik about 1 year ago
mbtiles
tool (see below)Full Changelog: https://github.com/maplibre/martin/compare/v0.9.0...v0.9.1
Published by nyurik about 1 year ago
COMMENT ON FUNCTION
and COMMENT ON TABLE
.linux/arm64
and linux/amd64
platforms.mbtiles
tool, including apply-diff
, validate
, meta-all
, and meta-set
commands, and the ability to validate each tile and the entire mbtiles./catalog
JSON structure by @nyurik in https://github.com/maplibre/martin/pull/754
id_format
to source_id_format
, refactor by @nyurik in https://github.com/maplibre/martin/pull/794
metrics
to reserved list, docs by @nyurik in https://github.com/maplibre/martin/pull/802
COMMENT ON FUNCTION
and COMMENT ON TABLE
by @sharkAndshark in https://github.com/maplibre/martin/pull/829 and https://github.com/maplibre/martin/pull/871
--save-config
, alias from_schemas
as from_schema
by @nyurik in https://github.com/maplibre/martin/pull/795
clip_geom
, buffer
and extent
under auto_publish
conf by @sharkAndshark in https://github.com/maplibre/martin/pull/887
mbtiles
tool changesmeta-all
command by @nyurik in https://github.com/maplibre/martin/pull/865
debug.html
to show and inspect all layers by @sharkAndshark in https://github.com/maplibre/martin/pull/820
Full Changelog: https://github.com/maplibre/martin/compare/v0.8.7...v0.9.0
Published by nyurik over 1 year ago
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
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
Full Changelog: https://github.com/maplibre/martin/compare/v0.8.6...v0.8.7
Published by nyurik over 1 year ago
Full Changelog: https://github.com/maplibre/martin/compare/v0.8.5...v0.8.6