For some reason (I do not know why) mercantile and @mapbox/tilebelt both
return children in the order of top-left, top-right, bottom-right,
bottom-left which I call ‘d-ordering’
cli
format string {projwin} and {projwin_web} changed to return space separated coords
supermercado compatible edges and burn cli commands added as well a s rust
lib functions (obviously)
shapes and feature functions for tile produce polygons that now DO follow
the right-hand-rule; exterior rings are clockwise
simplify/merge function(s) optimized for faster merging and WAY less
memory usage
Parent methods now returns None if z<=0
New command(s):
agg-hash command that computes the agg-tiles-hash of a tiles-db as
standardized by the martin/maplibre team (this supports more hash-types;
xxh3 appears to be the fastest and what utiles will likely default to if
not xxh64)
commands list all available commands (including hidden/dev/unimplemented
commands)
enumerate list xyz tiles in db(s) similar to tippecanoe-enumerate; for
tippecanoe compatibility use --tippecanoe/-t
sqlite/db sub-command group with vac/analyze commands and will
likely contain future pure sqlite util(e)s… these could totally be shell
scripts, but they’re nice to have on das-windows
header/head command that prints the json of a sqlite db header (which
has come in handy for weird dbs that use old code to write out sqlite dbs
(yes I have seen this))
vac/vacuum command that vacuums a sqlite db (optionally into a new db)
analyze command that analyzes a sqlite db (basically the same as doing
sqlite3 database.sqlite "PRAGMA analyze;")
copy and touch
Now supports flat/norm (normalized)/hash (flat-with-hash) formats as
standardized by the martin/maplibre people. Should also work with
non-martin-conforming mbtiles schemas (appears to for me)
Dev/hidden commands:
webpify command that converts all non-webp raster-tiles to webp (lossless
only due to image-crate not supporting lossy encoding…)
oxipng command that optimizes png(s) in mbtiles db(s) using oxipng crate
figured out how to make async tile-stream(s)
Removed even more unwrap usages
lager/logging/tracing is reloadable from python; using the new fancy
std::sync::LazyLock (yay)
lint/copy overhaul
Added --page-size to vacuum command
Using json-patch for metadata updates
Allow setting metadata value(s) from file if no value is provided (-/--)
for stdin
Figured out how to put the caller-site (eg pyo3 in the cli help so you
(likely me) can tell which utiles you are calling)
python:
Added TileFmts string formatter object
Lager singleton that can toggle tracing format and level (WIP)
Fixed backpressure issue when unpyramiding directory to mbtiles; the loading
of tiles was happening too fast and could cause memory issues on large
tile-pyramids… (this was previously not an issue b/c I would run those jobs
on my work machine which had 512gb or ram, but that machine died… RIP titus)
Write out metadata.json when pyramid-ing mbtiles to directory if the
metadata of the mbtiles does not contain duplicate keys (which it should not)
Limit jobs/concurrency when pyramid-ing mbtiles to directory to 4 (if not
specified by --jobs/-j option) to prevent nuking machines