Releases: maplibre/martin
v0.13.0
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
- Fix sporadic macos test failures by @nyurik in #1104
- Lots of small refactorings by @nyurik in #1107
- Deprecate few things, lock and lints by @nyurik in #1111
Full Changelog: v0.12.0...v0.13.0
v0.12.0
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 #991, #1095, #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
📝 We badly need someone to document how to setup Martin on AWS lambda, and/or similar setup on the other cloud providers. See #1102
martin-cp
and mbtiles
improvements
martin-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 #1096- mbtiles update now allows different types of zoom updates - reset to content, grow only, or skip (dry run) by @nyurik in #1096
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 #1097 and #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: v0.11.6...v0.12.0
v0.11.6
What's Changed
- Multiple mbtiles and martin-cp fixes by @nyurik in #1083
- BREAKING:
martin-cp
will now setformat=pbf
instead ofmvt
. This is what QGIS and possibly others expect, and this is what tools like tilelive generates. martin-cp
setsminzoom
andmaxzoom
metadata values based on the zoom parameters- Add
mbtiles meta-update
command to refresh zoom levels based on the present tiles.
- BREAKING:
Internal Changes
Full Changelog: v0.11.5...v0.11.6
v0.11.5
Bug Fixes
- Fix composite sources returning bad data on empty by @nyurik in #1080, thanks
to @jjcfrancisco for helping identify and debug this issue.
What's Changed
mbtiles
andmartin-cp
now require--on-duplicate
when adding to existing mbtiles files by @nyurik
in #1064- New
mbtiles copy --bbox ...
filter to copy tiles within a bbox only by @nyurik
in #1060 - New
mbtiles copy --copy (all|tiles|metadata)
flag to limit what gets copied by @nyurik
in #1073 - Add a few aliases to
mbtiles
commands by @nyurik in #1063
Internal Improvements
- Lots of work on bbox vs xyz computation by @sharkAndshark and @nyurik
in #1059, #1070 - Split Clap code from
MbtilesCopier
intoCopyArgs
by @nyurik in #1072 - Minor test snapshot cleanup by @nyurik in #1074
Full Changelog: v0.11.4...v0.11.5
v0.11.4
What's Changed
- Add tiles table/view validation to
mbtiles validate
by @nyurik in #1057- Reports any invalid data in the
tiles
table/view, e.g. bad tile index or incorrect data type.
- Reports any invalid data in the
- Add extra CLI help string about RUST_LOG by @nyurik in #1053
- Clean up mbtiles tool output by @nyurik in #1048
- No more unrelated warnings due to slow running queries.
Miscellaneous
- chore: simplify fn git_source_info by @nyurik in #1055
- Move math utils to martin-tile-utils by @nyurik in #1056
- Adjust CI link checker by @nyurik in #1058
Full Changelog: v0.11.3...v0.11.4
v0.11.3
What's Changed
- Bugfix: Fix setting TileJSON with a SQL comment by @nyurik in #1045 (thx @jjcfrancisco for reporting)
- New:
martin-cp
can also set metadata values after copying by @nyurik in #1038
Internal
New Contributors
Full Changelog: v0.11.2...v0.11.3
v0.11.2
What's Changed
- add agg-tiles-hash calc to
martin-cp
by @nyurik in #1033 - Update Docker build process by @nyurik in #1022
- Upgarde to v0.10 spreet crate, cleanup SpreetResult by @nyurik in #984
- Add linting to CI for martin book by @sharkAndshark in #1030
Full Changelog: v0.11.1...v0.11.2
v0.11.1
What's Changed
- Add compression and query to martin-cp by @nyurik in #1019
- Rename dst-type to mbtiles-type by @nyurik in #1014
- Update document file names for outside links by @sharkAndshark in #1018
- Rename MartinError, benchmarks, streamline get_tile by @nyurik in #1016
Full Changelog: v0.11.0...v0.11.1
v0.11.0
What's New
- Add
martin-cp
tool to bulk-copy tiles from any Martin-supported sources by @nyurik in #1011 - Add
mbtiles summary
tool to print MBTiles statistics by @sharkAndshark in #986
Configuration
Documentation changes
- Separate supported MBTiles schema doc by @sharkAndshark in #961
- Include readme as docs for all crates by @nyurik in #981
Minor changes
Full Changelog: v0.10.0...v0.11.0
v0.10.0
Breaking Changes
Auto bounds calculation methods
Martin startup should now be much faster by default. See #958 by @nyurik, fixing #955
- Remove
--disable-bounds
flag anddisable_bounds
config parameters. - Add
--auto-bounds
/-b
CLI parameter andauto_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.
What's New
- Catalog shows sprites and fonts info by @nyurik in #951
- Add dynamic font support
/font/<name>/<start>-<end>
by @nyurik in #755
Fonts allow glyph fallback: list font names as comma-separated values, and whichever font first has the glyph, that's the glyph that will be included. This way you can specify fallback fonts -/font/Font1,Font2,Font3/0-255
MBTiles
- Add
--apply-patch
to copy, rename apply-diff by @nyurik in #945 - Rename martin-mbtiles crate to mbtiles by @nyurik in #976
Miscellaneous
- Better error reporting for config and other params by @nyurik in #957
- Fix cargo publish warning about README by @DarhkVoyd in #960
- pg func discovery ignore sys schemas by @nyurik in #946
- remove unneeded btree sorting by @nyurik in #970
- Simplify conf parsing, separate func & tbl configs by @nyurik in #956
- Update doc file names and title levels by @sharkAndshark in #972
- Fix grcov CI workflow by @nyurik in #968
- Fix martin integration tests by @nyurik in #952
New Contributors
- @DarhkVoyd made their first contribution in #960
Full Changelog: v0.9.3...v0.10.0