{"id":14411746,"url":"https://github.com/jessekrubin/utiles","last_synced_at":"2025-08-24T22:32:36.918Z","repository":{"id":171445217,"uuid":"647439433","full_name":"jessekrubin/utiles","owner":"jessekrubin","description":"utiles = utils \u0026 tiles w/ (rs \u0026 pyo3)","archived":false,"fork":false,"pushed_at":"2024-12-16T23:39:45.000Z","size":3357,"stargazers_count":20,"open_issues_count":1,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-12-18T19:06:47.316Z","etag":null,"topics":["geoscience","maps","mercantile"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jessekrubin.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-05-30T19:37:43.000Z","updated_at":"2024-12-16T23:39:48.000Z","dependencies_parsed_at":null,"dependency_job_id":"25c7eedd-7764-4a1b-bdd6-a9a497085c1b","html_url":"https://github.com/jessekrubin/utiles","commit_stats":{"total_commits":32,"total_committers":4,"mean_commits":8.0,"dds":0.1875,"last_synced_commit":"ed69f392ea651ebba4e2d5ca9ab4990e68529c02"},"previous_names":["jessekrubin/utiles"],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jessekrubin%2Futiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jessekrubin%2Futiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jessekrubin%2Futiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jessekrubin%2Futiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jessekrubin","download_url":"https://codeload.github.com/jessekrubin/utiles/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230842300,"owners_count":18288627,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["geoscience","maps","mercantile"],"created_at":"2024-08-29T16:01:10.380Z","updated_at":"2025-08-24T22:32:36.895Z","avatar_url":"https://github.com/jessekrubin.png","language":"Rust","funding_links":[],"categories":["Rust","Watchlist","Geospatial"],"sub_categories":[],"readme":"# utiles\n\nutiles = utils + tiles\n\n_web map tile utilities, batching, serving, python and bears (oh-my)_\n\n[//]: # \"badges\"\n\n[![GitHub](https://img.shields.io/badge/github-utiles-8da0cb?logo=github)](https://github.com/jessekrubin/utiles)\n[![crates.io version](https://img.shields.io/crates/l/utiles.svg)](https://github.com/jessekrubin/utiles/blob/main/LICENSE-APACHE)\n[![crates.io version](https://img.shields.io/crates/v/utiles)](https://crates.io/crates/utiles)\n[![PyPI](https://img.shields.io/pypi/v/utiles?cacheSeconds=600)](https://pypi.org/project/utiles/)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/utiles?cacheSeconds=600)](https://pypi.org/project/utiles/)\n[![PyPI - Wheel](https://img.shields.io/pypi/wheel/utiles?cacheSeconds=600)](https://pypi.org/project/utiles/)\n\n[//]: # \"[![docs.rs docs](https://docs.rs/utiles/badge.svg)](https://docs.rs/utiles)\"\n\n## Installation\n\n```bash\n# __CLI__\n# from crates\ncargo install utiles\n# from source\ncargo install --git https://github.com/jessekrubin/utiles.git utiles\n# install the oxipng mbtiles/tiles-db wrapper cli\ncargo install --git https://github.com/jessekrubin/utiles.git utiles-oxipng\n# via the python package (which wrappers the rust-cli)\npip install -U utiles\n\n# __LIBS__\n# python (python lib + rust-cli)\npip install -U utiles\n# rust-cli\ncargo install utiles\n# rust-libs\ncargo add utiles-core utiles\n```\n\n## About\n\n`utiles` started off as a python port of mapbox's web-mercator utils\npython-library [mercantile](https://github.com/mapbox/mercantile) written\nin rust. It has since been expanded into a slim rust crate (`utiles-core`)\na less slim crate with a lib/cli (`utiles`), that has a python package wrapper.\n\nFor more details on the python package see: [./utiles-pyo3](https://github.com/jessekrubin/utiles/tree/main/utiles-pyo3)\n\n## python\n\nA mostly drop-in replacement for [mercantile](https://github.com/mapbox/mercantile) written w/ rust, plus several other\nutil(e)ities\n\n[py-utiles](https://github.com/jessekrubin/utiles/tree/main/utiles-pyo3)\n\n---\n\n# dev\n\n## Contributing\n\n- Please do! Would love some feedback!\n- Be kind!\n- DO NOT USE the phrases `blazing fast`/`blazingly fast` in any PRs, issues or docs.\n- I will happily accept PRs, and add you to the currently (5/26/2023) non-existent contributors list.\n\n---\n\n## MISC\n\n\u003cdetails\u003e\n\u003csummary\u003ezoom info\u003c/summary\u003e\n\n| zoom |                    ntiles |                     total |  rowcol_range |    max_rowcol |\n| ---: | ------------------------: | ------------------------: | ------------: | ------------: |\n|    0 |                         1 |                         1 |             0 |             1 |\n|    1 |                         4 |                         5 |             1 |             2 |\n|    2 |                        16 |                        21 |             3 |             4 |\n|    3 |                        64 |                        85 |             7 |             8 |\n|    4 |                       256 |                       341 |            15 |            16 |\n|    5 |                     1_024 |                     1_365 |            31 |            32 |\n|    6 |                     4_096 |                     5_461 |            63 |            64 |\n|    7 |                    16_384 |                    21_845 |           127 |           128 |\n|    8 |                    65_536 |                    87_381 |           255 |           256 |\n|    9 |                   262_144 |                   349_525 |           511 |           512 |\n|   10 |                 1_048_576 |                 1_398_101 |         1_023 |         1_024 |\n|   11 |                 4_194_304 |                 5_592_405 |         2_047 |         2_048 |\n|   12 |                16_777_216 |                22_369_621 |         4_095 |         4_096 |\n|   13 |                67_108_864 |                89_478_485 |         8_191 |         8_192 |\n|   14 |               268_435_456 |               357_913_941 |        16_383 |        16_384 |\n|   15 |             1_073_741_824 |             1_431_655_765 |        32_767 |        32_768 |\n|   16 |             4_294_967_296 |             5_726_623_061 |        65_535 |        65_536 |\n|   17 |            17_179_869_184 |            22_906_492_245 |       131_071 |       131_072 |\n|   18 |            68_719_476_736 |            91_625_968_981 |       262_143 |       262_144 |\n|   19 |           274_877_906_944 |           366_503_875_925 |       524_287 |       524_288 |\n|   20 |         1_099_511_627_776 |         1_466_015_503_701 |     1_048_575 |     1_048_576 |\n|   21 |         4_398_046_511_104 |         5_864_062_014_805 |     2_097_151 |     2_097_152 |\n|   22 |        17_592_186_044_416 |        23_456_248_059_221 |     4_194_303 |     4_194_304 |\n|   23 |        70_368_744_177_664 |        93_824_992_236_885 |     8_388_607 |     8_388_608 |\n|   24 |       281_474_976_710_656 |       375_299_968_947_541 |    16_777_215 |    16_777_216 |\n|   25 |     1_125_899_906_842_624 |     1_501_199_875_790_165 |    33_554_431 |    33_554_432 |\n|   26 |     4_503_599_627_370_496 |     6_004_799_503_160_661 |    67_108_863 |    67_108_864 |\n|   27 |    18_014_398_509_481_984 |    24_019_198_012_642_645 |   134_217_727 |   134_217_728 |\n|   28 |    72_057_594_037_927_936 |    96_076_792_050_570_581 |   268_435_455 |   268_435_456 |\n|   29 |   288_230_376_151_711_744 |   384_307_168_202_282_325 |   536_870_911 |   536_870_912 |\n|   30 | 1_152_921_504_606_846_976 | 1_537_228_672_809_129_301 | 1_073_741_823 | 1_073_741_824 |\n|   31 | 4_611_686_018_427_387_904 | 6_148_914_691_236_517_205 | 2_147_483_647 | 2_147_483_648 |\n\n\u003c/details\u003e\n\nZoom levels\n\n```\n    zoom               ntiles                total  rowcol_range  max_rowcol\n0      0                    1                    1             0           1\n1      1                    4                    5             1           2\n2      2                   16                   21             3           4\n3      3                   64                   85             7           8\n4      4                  256                  341            15          16\n5      5                 1024                 1365            31          32\n6      6                 4096                 5461            63          64\n7      7                16384                21845           127         128\n8      8                65536                87381           255         256\n9      9               262144               349525           511         512\n10    10              1048576              1398101          1023        1024\n11    11              4194304              5592405          2047        2048\n12    12             16777216             22369621          4095        4096\n13    13             67108864             89478485          8191        8192\n14    14            268435456            357913941         16383       16384\n15    15           1073741824           1431655765         32767       32768\n16    16           4294967296           5726623061         65535       65536\n17    17          17179869184          22906492245        131071      131072\n18    18          68719476736          91625968981        262143      262144\n19    19         274877906944         366503875925        524287      524288\n20    20        1099511627776        1466015503701       1048575     1048576\n21    21        4398046511104        5864062014805       2097151     2097152\n22    22       17592186044416       23456248059221       4194303     4194304\n23    23       70368744177664       93824992236885       8388607     8388608\n24    24      281474976710656      375299968947541      16777215    16777216\n25    25     1125899906842624     1501199875790165      33554431    33554432\n26    26     4503599627370496     6004799503160661      67108863    67108864\n27    27    18014398509481984    24019198012642645     134217727   134217728\n28    28    72057594037927936    96076792050570581     268435455   268435456\n29    29   288230376151711744   384307168202282325     536870911   536870912\n30    30  1152921504606846976  1537228672809129301    1073741823  1073741824\n31    31  4611686018427387904  6148914691236517205    2147483647  2147483648\n```\n\n\u003cdetails\u003e\n\u003csummary\u003ejson\u003c/summary\u003e\n\n```json\n[\n  {\n    \"max_rowcol\": 1,\n    \"ntiles\": 1,\n    \"rowcol_range\": 0,\n    \"total\": 1,\n    \"zoom\": 0\n  },\n  {\n    \"max_rowcol\": 2,\n    \"ntiles\": 4,\n    \"rowcol_range\": 1,\n    \"total\": 5,\n    \"zoom\": 1\n  },\n  {\n    \"max_rowcol\": 4,\n    \"ntiles\": 16,\n    \"rowcol_range\": 3,\n    \"total\": 21,\n    \"zoom\": 2\n  },\n  {\n    \"max_rowcol\": 8,\n    \"ntiles\": 64,\n    \"rowcol_range\": 7,\n    \"total\": 85,\n    \"zoom\": 3\n  },\n  {\n    \"max_rowcol\": 16,\n    \"ntiles\": 256,\n    \"rowcol_range\": 15,\n    \"total\": 341,\n    \"zoom\": 4\n  },\n  {\n    \"max_rowcol\": 32,\n    \"ntiles\": 1024,\n    \"rowcol_range\": 31,\n    \"total\": 1365,\n    \"zoom\": 5\n  },\n  {\n    \"max_rowcol\": 64,\n    \"ntiles\": 4096,\n    \"rowcol_range\": 63,\n    \"total\": 5461,\n    \"zoom\": 6\n  },\n  {\n    \"max_rowcol\": 128,\n    \"ntiles\": 16384,\n    \"rowcol_range\": 127,\n    \"total\": 21845,\n    \"zoom\": 7\n  },\n  {\n    \"max_rowcol\": 256,\n    \"ntiles\": 65536,\n    \"rowcol_range\": 255,\n    \"total\": 87381,\n    \"zoom\": 8\n  },\n  {\n    \"max_rowcol\": 512,\n    \"ntiles\": 262144,\n    \"rowcol_range\": 511,\n    \"total\": 349525,\n    \"zoom\": 9\n  },\n  {\n    \"max_rowcol\": 1024,\n    \"ntiles\": 1048576,\n    \"rowcol_range\": 1023,\n    \"total\": 1398101,\n    \"zoom\": 10\n  },\n  {\n    \"max_rowcol\": 2048,\n    \"ntiles\": 4194304,\n    \"rowcol_range\": 2047,\n    \"total\": 5592405,\n    \"zoom\": 11\n  },\n  {\n    \"max_rowcol\": 4096,\n    \"ntiles\": 16777216,\n    \"rowcol_range\": 4095,\n    \"total\": 22369621,\n    \"zoom\": 12\n  },\n  {\n    \"max_rowcol\": 8192,\n    \"ntiles\": 67108864,\n    \"rowcol_range\": 8191,\n    \"total\": 89478485,\n    \"zoom\": 13\n  },\n  {\n    \"max_rowcol\": 16384,\n    \"ntiles\": 268435456,\n    \"rowcol_range\": 16383,\n    \"total\": 357913941,\n    \"zoom\": 14\n  },\n  {\n    \"max_rowcol\": 32768,\n    \"ntiles\": 1073741824,\n    \"rowcol_range\": 32767,\n    \"total\": 1431655765,\n    \"zoom\": 15\n  },\n  {\n    \"max_rowcol\": 65536,\n    \"ntiles\": 4294967296,\n    \"rowcol_range\": 65535,\n    \"total\": 5726623061,\n    \"zoom\": 16\n  },\n  {\n    \"max_rowcol\": 131072,\n    \"ntiles\": 17179869184,\n    \"rowcol_range\": 131071,\n    \"total\": 22906492245,\n    \"zoom\": 17\n  },\n  {\n    \"max_rowcol\": 262144,\n    \"ntiles\": 68719476736,\n    \"rowcol_range\": 262143,\n    \"total\": 91625968981,\n    \"zoom\": 18\n  },\n  {\n    \"max_rowcol\": 524288,\n    \"ntiles\": 274877906944,\n    \"rowcol_range\": 524287,\n    \"total\": 366503875925,\n    \"zoom\": 19\n  },\n  {\n    \"max_rowcol\": 1048576,\n    \"ntiles\": 1099511627776,\n    \"rowcol_range\": 1048575,\n    \"total\": 1466015503701,\n    \"zoom\": 20\n  },\n  {\n    \"max_rowcol\": 2097152,\n    \"ntiles\": 4398046511104,\n    \"rowcol_range\": 2097151,\n    \"total\": 5864062014805,\n    \"zoom\": 21\n  },\n  {\n    \"max_rowcol\": 4194304,\n    \"ntiles\": 17592186044416,\n    \"rowcol_range\": 4194303,\n    \"total\": 23456248059221,\n    \"zoom\": 22\n  },\n  {\n    \"max_rowcol\": 8388608,\n    \"ntiles\": 70368744177664,\n    \"rowcol_range\": 8388607,\n    \"total\": 93824992236885,\n    \"zoom\": 23\n  },\n  {\n    \"max_rowcol\": 16777216,\n    \"ntiles\": 281474976710656,\n    \"rowcol_range\": 16777215,\n    \"total\": 375299968947541,\n    \"zoom\": 24\n  },\n  {\n    \"max_rowcol\": 33554432,\n    \"ntiles\": 1125899906842624,\n    \"rowcol_range\": 33554431,\n    \"total\": 1501199875790165,\n    \"zoom\": 25\n  },\n  {\n    \"max_rowcol\": 67108864,\n    \"ntiles\": 4503599627370496,\n    \"rowcol_range\": 67108863,\n    \"total\": 6004799503160661,\n    \"zoom\": 26\n  },\n  {\n    \"max_rowcol\": 134217728,\n    \"ntiles\": 18014398509481984,\n    \"rowcol_range\": 134217727,\n    \"total\": 24019198012642645,\n    \"zoom\": 27\n  },\n  {\n    \"max_rowcol\": 268435456,\n    \"ntiles\": 72057594037927936,\n    \"rowcol_range\": 268435455,\n    \"total\": 96076792050570581,\n    \"zoom\": 28\n  },\n  {\n    \"max_rowcol\": 536870912,\n    \"ntiles\": 288230376151711744,\n    \"rowcol_range\": 536870911,\n    \"total\": 384307168202282325,\n    \"zoom\": 29\n  },\n  {\n    \"max_rowcol\": 1073741824,\n    \"ntiles\": 1152921504606846976,\n    \"rowcol_range\": 1073741823,\n    \"total\": 1537228672809129301,\n    \"zoom\": 30\n  },\n  {\n    \"max_rowcol\": 2147483648,\n    \"ntiles\": 4611686018427387904,\n    \"rowcol_range\": 2147483647,\n    \"total\": 6148914691236517205,\n    \"zoom\": 31\n  }\n]\n```\n\n\u003c/details\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjessekrubin%2Futiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjessekrubin%2Futiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjessekrubin%2Futiles/lists"}