- Docs/readme update
- NO UNWRAPPING! there is no unwrapping in utiles!
- updated
thiserror
to v2 - remove
gil-refs
pyo3 feature from python lib pyo3
v0.23.x- supermercado compatible
edges
andburn
cli commands added as well a s rust lib functions (obviously) shapes
andfeature
functions for tile produce polygons that now DO follow the right-hand-rule; exterior rings are clockwisesimplify
/merge
function(s) optimized for faster merging and WAY less memory usage- Parent methods now returns
None
ifz<=0
- New command(s):
agg-hash
command that computes theagg-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 notxxh64
)commands
list all available commands (including hidden/dev/unimplemented commands)enumerate
list xyz tiles in db(s) similar totippecanoe-enumerate
; for tippecanoe compatibility use--tippecanoe
/-t
sqlite
/db
sub-command group withvac
/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-windowsheader
/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 doingsqlite3 database.sqlite "PRAGMA analyze;"
)
copy
andtouch
- 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)
- Now supports
- 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) usingoxipng
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)
- Added
- Fix calling
utiles.ut_cli
multiple times causing tracing-subscriber crash
- Upgrade pyo3 to
v0.22.0
-- had to add signatures to all fns with optional args/kwargs - Update python dev deps
- Added
{bbox}
,{projwin}
,{bbox_web}
and{projwin_web}
format tokens to tile-formatter (those projwins are handy for gdaling)
- Fixed backpressure issue when
unpyramiding
direcotry 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
whenpyramid-ing
mbtiles to directory if the metadata of the mbtiles does not conatin 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
- Moved metadata structs and tools from
utiles-core
toutiles
utiles-python
- Refactoring and reorganizing of code
- Fixed comparison of LngLat obj
- Using rust lib for
python -m utiles
file size formatting
clippy::pedantic
- Many changes on the road to
clippy::pedantic
utiles-core
is almost fully pedanticutiles
is becoming pedanticutiles-python
is not very pedantic yet
- Many changes on the road to
- Testing:
- More tests added (mostly testing w/ python)
- Added test mbtiles file
osm-standard.0z4.mbtiles
- fmt-str command and option
--fmt
addedtiles
command; allows string formatting of json-tiles:
Format json-tiles format-string
fmt-tokens:
`{json_arr}`/`{json}` -> [x, y, z]
`{json_obj}`/`{obj}` -> {x: x, y: y, z: z}
`{quadkey}`/`{qk}` -> quadkey string
`{pmtileid}`/`{pmid}` -> pmtile-id
`{x}` -> x tile coord
`{y}` -> y tile coord
`{z}` -> z/zoom level
`{-y}`/`{yup}` -> y tile coord flipped/tms
`{zxy}` -> z/x/y
Example:
> echo "[486, 332, 10]" | utiles fmtstr
[486, 332, 10]
> echo "[486, 332, 10]" | utiles fmtstr --fmt "{x},{y},{z}"
486,332,10
> echo "[486, 332, 10]" | utiles fmt --fmt "SELECT * FROM tiles WHERE zoom_level = {z} AND tile_column = {x} AND tile_row = {y};"
SELECT * FROM tiles WHERE zoom_level = 10 AND tile_column = 486 AND tile_row = 332;
- Fixed problem with python tile
__richcmp__
not handling invalid tiles and non-tile-like objs
- Updated to pyo3
v0.21.0
- Cli help messages cleaned up
- General spring cleaning!
- Hid the
utiles tilejson
cli aliastrader-joes
- Minor bug fixes
- Expanded utiles cli with several more commands
- Converted cli to rust as an excerise in learning clap
- Moved old click cli to
utiles._legacy.cli
- Added tilejson/tj command to rust cli to write out tilejson files for mbtiles
- Added meta command to rust cli to write out json of metadata table for mbtiles
- Drop python 3.7 (was good knowing you)
- Update pyo3 to 0.20.0
- Added rasterio/rio entry points ('utiles' and 'ut' alias bc why type
rio utiles
overrio ut
)
- Added
__len__
to TilesGenerator for pbars