Skip to main content

tylertoo

CI codecov Crates.io PyPI

Fast GeoParquet → PMTiles converter in Rust.

📖 Documentation · Getting Started · Live demo · Overview tuning · CLI reference

Quickstart

cargo install tylertoo
curl -LO https://github.com/geoparquet-io/tylertoo/releases/download/fixtures-v1/fieldmaps-madagascar-adm4.parquet
tylertoo fieldmaps-madagascar-adm4.parquet madagascar.pmtiles --max-zoom 10

The output of this should be:

[convert] scan complete: 17465 feature(s) from 17465 row(s)
[convert] pass 2: building 11 overview level(s) from a single read (finest level streamed last)
[rss] convert peak: 231 MiB
  intermediate overview: /var/.../T/.tylertoo-overview-p7TdMr.parquet (25.87 MiB, removed after export; --keep-overview PATH retains it)
[export] scan complete: 10 levels, single read, 0.15s
[export] level 10/10 z10 done: 17465 feats, 524 tiles, 1 partitions, 0.3s (total 1s)
✓ Converted fieldmaps-madagascar-adm4.parquet → madagascar.pmtiles
  752 tiles across z0..z10 in 1.18s
  z0 declared but empty: every feature generalized away there (see --collapse / --collapse-square), or an entry-zoom ladder holds every feature out of them

The output madagascar.pmtiles should be 6.7mb, and can be dropped into pmtiles.io to view it.

From here, Getting Started covers preparing your own input and the two-step overview workflow.

Status: Under active development, expect changes while we stabilize to a 1.0 — see the Road to 1.0 issue for what's currently planned.

tylertoo takes its name from "Tippecanoe and Tyler Too", the 1840 U.S. campaign slogan. It's a nod to tippecanoe, the vector-tile tool this project measures itself against — tylertoo runs alongside it.

Features:

  • COG-style multi-resolution overviews embedded in GeoParquet (tylertoo overview) — the file stays valid, exact, SQL-queryable GeoParquet
  • PMTiles export from an overview file (tylertoo export-pmtiles)
  • One-shot GeoParquet → PMTiles (tylertoo tiles, or the bare form)
  • Quality ladder tuned against tippecanoe: class ranking (Overture auto-detect), visibility gates, density budget, point clustering, line coalescing
  • Memory-bounded streaming conversion — a 632k-polygon / 38M-vertex file converts to a full z0–14 overview pyramid in ~45 s at ~1.4 GB peak RSS, or a default z0–6 pyramid in ~7 s at ~0.4 GB (16-core machine; measured, see ARCHITECTURE.md)
  • Remote inputs (s3://, https://, gs://) read via byte-range requests — with --bbox, extract a city from a remote country-scale file while downloading only the matching row groups (Remote Reads)
  • Attribute filtering (--filter / --where) — tile only the features matching a SQL-WHERE-style predicate ("confidence > 0.8", "crop IN ('soy', 'corn')"), with parquet row-group statistics pushdown so non-matching row groups are never read (or fetched, on remote input); composes with --bbox (Tuning guide)
  • Spec validation (tylertoo validate)
  • PMTiles → GeoParquet decoding (tylertoo decode) — tippecanoe-decode semantics, any PMTiles v3 MVT archive

Install

cargo install tylertoo    # CLI
pip install tylertoo      # Python

Prebuilt CLI binaries for Linux (x86_64 gnu and musl), macOS (Intel and Apple Silicon) and Windows x86_64 are attached to every GitHub Release.

Usage

# One-shot: GeoParquet in, PMTiles out (recommended)
tylertoo input.parquet output.pmtiles --min-zoom 0 --max-zoom 14

# Keep the reusable multi-resolution overview file too — one run, both artifacts
tylertoo input.parquet output.pmtiles --max-zoom 14 \
  --keep-overview overviews.parquet

The one-shot form materializes an intermediate overview GeoParquet before exporting (at least input-sized — it is not zero-disk). Its path and size are logged, --spill-dir / $TMPDIR control where it lives, and a free-space preflight warns when the volume looks too small.

The Two-Step Workflow

The overview GeoParquet file is the interesting artifact — build it explicitly when you want to validate it, query it, or re-export with different flags without re-converting:

# 1. Embed multi-resolution levels in a GeoParquet file
tylertoo overview input.parquet overviews.parquet \
  --min-zoom 0 --max-zoom 14

# 2. Validate against the spec
tylertoo validate overviews.parquet

# 3. Export a PMTiles archive for map rendering
tylertoo export-pmtiles overviews.parquet output.pmtiles

To match what tiles writes, pass export-pmtiles --min-zoom <the overview's requested minimum> — otherwise the archive header starts at the coarsest level that actually holds features.

Every tuning knob is available on the one-shot tiles command as well as on overview / export-pmtiles — see Overview Tuning. Defaults are calibrated on rendered corpus sweeps and are meant to look right out of the box.

Decoding PMTiles back to GeoParquet

# Extract one zoom of any PMTiles v3 vector archive as GeoParquet
tylertoo decode input.pmtiles output.parquet --zoom 14

The output is the tiled representation (simplified, clipped, duplicated across tiles and zooms — no round-trip guarantee), with zoom/layer/ mvt_id provenance columns for filtering. See Decoding PMTiles.

Input Preparation

Inputs must be WGS84 (EPSG:4326), and should be Hilbert-sorted with sane row groups. Use geoparquet-io (gpio, verified against 1.5.0):

# Already WGS84: Hilbert-sort and repack row groups in one pass.
gpio sort hilbert input.parquet prepared.parquet --row-group-size-mb 128

# In another projection: reproject first, then sort.
gpio convert reproject input.parquet wgs84.parquet -d EPSG:4326
gpio sort hilbert wgs84.parquet prepared.parquet --row-group-size-mb 128

Python

from tylertoo import overview, export_pmtiles, validate

overview("input.parquet", "overviews.parquet", min_zoom=0, max_zoom=14)
validate("overviews.parquet")
export_pmtiles("overviews.parquet", "output.pmtiles")

# One-shot facade (deprecated in favor of the two-step API)
from tylertoo import convert
convert("input.parquet", "output.pmtiles", min_zoom=0, max_zoom=14)

Documentation

Development

git clone https://github.com/geoparquet-io/tylertoo.git && cd tylertoo
git config core.hooksPath .githooks
cargo build && cargo check

See CONTRIBUTING.md and DEVELOPMENT.md for details.

License

Apache-2.0

Release files for tylertoo 0.7.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tylertoo 0.7.1
File Size Uploaded
tylertoo-0.7.1.tar.gz 797.6 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for tylertoo 0.7.1
File
tylertoo-0.7.1-cp39-abi3-win_amd64.whl CPython 3.9 abi3 Windows x86-64 Details
tylertoo-0.7.1-cp39-abi3-musllinux_1_2_x86_64.whl CPython 3.9 abi3 Linux musl 1.2+ x86-64 Details
tylertoo-0.7.1-cp39-abi3-musllinux_1_2_aarch64.whl CPython 3.9 abi3 Linux musl 1.2+ ARM64 Details
tylertoo-0.7.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.9 abi3 Linux glibc 2.17+ x86-64 Details
tylertoo-0.7.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.9 abi3 Linux glibc 2.17+ ARM64 Details
tylertoo-0.7.1-cp39-abi3-macosx_11_0_arm64.whl CPython 3.9 abi3 macOS 11.0+ ARM64 Details
tylertoo-0.7.1-cp39-abi3-macosx_10_12_x86_64.whl CPython 3.9 abi3 macOS 10.12+ x86-64 Details

Total release size: 69.0 MB

Release files / tylertoo-0.7.1.tar.gz

Download URL tylertoo-0.7.1.tar.gz
Size 797.6 kB
Tags Source
SHA-256 checksum
How to use checksums
57c5bd929137dc3548f5ea5947f2348c908cf8f9f89a7f1a6356beb15a14d31a
BLAKE2b-256 checksum
How to use checksums
bc4f0c80c547a75d9f5978656b77353b86c4c53a2d3e0b9dcf156a670a5a5380
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.

Transparency log

Release files / tylertoo-0.7.1-cp39-abi3-win_amd64.whl

Download URL tylertoo-0.7.1-cp39-abi3-win_amd64.whl
Size 10.1 MB
Tags CPython 3.9 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
e09380a11e16eeafb352019c7b02e087afa1598f8a06ddf4081d5da662a930ec
BLAKE2b-256 checksum
How to use checksums
997abe993f26f1aeb143b054b87c9125addf52b27d6ea7a2dc27584c80967607
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.

Transparency log

Release files / tylertoo-0.7.1-cp39-abi3-musllinux_1_2_x86_64.whl

Download URL tylertoo-0.7.1-cp39-abi3-musllinux_1_2_x86_64.whl
Size 10.3 MB
Tags CPython 3.9 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
7c570b325f0ec6c62d9ec19b258d8938e1ca5333df512cceee7dfaf0ec28499a
BLAKE2b-256 checksum
How to use checksums
6a2147c0d77d3acea248191cc6fc18a1353ca79f6c8c490e21723021accac27f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.

Transparency log

Release files / tylertoo-0.7.1-cp39-abi3-musllinux_1_2_aarch64.whl

Download URL tylertoo-0.7.1-cp39-abi3-musllinux_1_2_aarch64.whl
Size 9.8 MB
Tags CPython 3.9 Linux musl 1.2+ ARM64 abi3
SHA-256 checksum
How to use checksums
51996ad908c0c0fb147ab3dc8c0ee349a0fbead009f16beb27b64509cd5f0701
BLAKE2b-256 checksum
How to use checksums
5cbd6fb90701c7797853b57e2e059d9a8df0b9f70b16c4644a7a44be8a3d218b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.

Transparency log

Release files / tylertoo-0.7.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL tylertoo-0.7.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 10.1 MB
Tags CPython 3.9 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
023eaa85492d2d019dd9f8945096f564470c44c2a35cb48218c39f1790cd6121
BLAKE2b-256 checksum
How to use checksums
00b270353869dbac640e29b234e366a64cad9897e1f8e1d6e8f49c58cd3ab6ae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.

Transparency log

Release files / tylertoo-0.7.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL tylertoo-0.7.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 9.5 MB
Tags CPython 3.9 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
b3657b2f133aff5a5cfe797b25a048fc77cee1587b6267251c615df052f4c918
BLAKE2b-256 checksum
How to use checksums
65149dcb32468959fd1d87db60785e53bd85aa789d37c1d0b33d93b157f792c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.

Transparency log

Release files / tylertoo-0.7.1-cp39-abi3-macosx_11_0_arm64.whl

Download URL tylertoo-0.7.1-cp39-abi3-macosx_11_0_arm64.whl
Size 8.6 MB
Tags CPython 3.9 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
6d487fcac2a1f17a3f80a269c8704b6292919b3bf3aea2ef6394bdeaa8630647
BLAKE2b-256 checksum
How to use checksums
6a97fa5f59f448e494154e88d8c9ca073e0fef4bc101bc3a31feaba51fb6086c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.

Transparency log

Release files / tylertoo-0.7.1-cp39-abi3-macosx_10_12_x86_64.whl

Download URL tylertoo-0.7.1-cp39-abi3-macosx_10_12_x86_64.whl
Size 9.8 MB
Tags CPython 3.9 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
4c0a0853d028bc4752fb6f380045a367556c0fae0dbef2a5d5a0ac60597fe3b6
BLAKE2b-256 checksum
How to use checksums
dcd263862610144f58dae935819571a6334b546552a673c4e13f3f663346bae9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.7.1 This release

8 release files

0.7.0

4 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page