Skip to main content

tilemath

A modern, type-safe Python library for spherical mercator coordinate and tile utilities. Designed as an API-compatible replacement for mercantile with full type safety and minimal dependencies.

Features

  • Full Type Safety: Complete type annotations for all functions and classes
  • API Compatible: Drop-in replacement for mercantile with the same interface
  • Minimal Dependencies: Zero runtime dependencies for core functionality
  • Modern Python: Built for Python 3.10+ with modern language features
  • Fast: Optimized implementations of coordinate transformations and tile operations

Installation

pip install tilemath

Or with uv:

uv add tilemath

Quick Start

import tilemath.mercantile as mercantile

# Convert longitude/latitude to tile coordinates
tile = mercantile.tile(-122.4194, 37.7749, 12)  # San Francisco
print(f"Tile: {tile.x}, {tile.y}, {tile.z}")

# Get bounding box for a tile
bbox = mercantile.bounds(tile)
print(f"Bounds: {bbox}")

# Convert tile to quadkey
quadkey = mercantile.quadkey(tile)
print(f"Quadkey: {quadkey}")

API Reference

The library provides the same API as mercantile, including:

  • tile(lng, lat, zoom) - Get tile containing a longitude/latitude
  • bounds(tile) - Get bounding box of a tile
  • xy(lng, lat) - Convert longitude/latitude to web mercator coordinates
  • lnglat(x, y) - Convert web mercator coordinates to longitude/latitude
  • quadkey(tile) - Convert tile to Microsoft quadkey
  • quadkey_to_tile(quadkey) - Convert quadkey to tile
  • tiles(west, south, east, north, zooms) - Generate tiles for a bounding box
  • children(tile) - Get child tiles
  • parent(tile) - Get parent tile
  • neighbors(tile) - Get neighboring tiles

Type Safety

tilemath adds complete type annotations:

from tilemath.mercantile import Tile, Bbox

# All functions have proper type hints
def process_tile(tile: Tile) -> Bbox:
    return bounds(tile)

# Type checkers will catch errors
tile = Tile(x=1, y=2, z=3)
bbox: Bbox = process_tile(tile)

Requirements

  • Python 3.10 or higher
  • No runtime dependencies

Development

This project uses uv for dependency management and development workflows.

Setup

# Clone the repository
git clone https://github.com/eddieland/tilemath.git
cd tilemath

# Install dependencies
make install

Running Tests

# Run all tests
make test

# Run specific test file
uv run pytest tests/test_mercantile_upstream.py -v

Code Quality

# Run linting and type checking
make lint

# Run everything (install, lint, test)
make

Contributing

Contributions are welcome! Please see CONTRIBUTING.md for guidelines.

Acknowledgments

This project is inspired by and aims to be compatible with mercantile by Sean Gillies and contributors.

Release files for tilemath 0.1.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 tilemath 0.1.1
File Size Uploaded
tilemath-0.1.1.tar.gz 50.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for tilemath 0.1.1
File Interpreter ABI Platform
tilemath-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 67.4 kB

Release files / tilemath-0.1.1.tar.gz

Download URL tilemath-0.1.1.tar.gz
Size 50.5 kB
Tags Source
SHA-256 checksum
How to use checksums
c698197867754ef6e395be1f140af2b3921a3933c10211074741987f6056ec66
BLAKE2b-256 checksum
How to use checksums
c1a3bfd643ef929d019eff93aad88ddbf45029ff8d8218d105b8fc656b7238f1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

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 Jun 19, 2025.

Transparency log

Release files / tilemath-0.1.1-py3-none-any.whl

Download URL tilemath-0.1.1-py3-none-any.whl
Size 16.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1bf3864fa3fc1143290e45ee5aff6204876a5a3e750a235496e42b73ba8b0d75
BLAKE2b-256 checksum
How to use checksums
90ea3ae13814093175e7e3b6e6ed914b10a9683599a7b3234692feb775b16d93
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

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 Jun 19, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 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