Skip to main content
https://github.com/mapchete/mapchete/blob/main/logo/mapchete_grey.svg

Tile-based geodata processing.

https://img.shields.io/pypi/v/mapchete.svg https://img.shields.io/conda/v/conda-forge/mapchete https://img.shields.io/pypi/l/mapchete.svg https://img.shields.io/github/actions/workflow/status/mapchete/mapchete/python-package.yml?label=tests https://codecov.io/gh/mapchete/mapchete/branch/main/graph/badge.svg?token=aOracso0OQ https://img.shields.io/github/repo-size/mapchete/mapchete https://readthedocs.org/projects/mapchete/badge/?version=stable

mapchete is a Python library for processing large geospatial raster and vector datasets. It reads and writes data in a tiled fashion, allowing you to run your algorithms on data that is too large to fit into memory, and it can process your data in parallel.

You define the data inputs, output format, and the geographic extent, and mapchete handles the rest. Your custom Python code is then applied to each tile, enabling complex processing workflows on a massive scale.

Key Features

  • 🗺️ Process Large Datasets: Work with massive raster and vector data without memory issues using a tile-based, out-of-core approach.

  • ⚡ Parallel Processing: Automatically run computations on multiple CPU cores to significantly speed up your workflows.

  • ⚙️ Simple Configuration: Separate your processing logic from your data configuration using easy-to-read .mapchete files.

  • 🐍 Pythonic API: Use mapchete directly from the command line or as a library in your own Python applications.

  • 🔌 Flexible & Extensible: Natively supports common raster and vector formats (e.g., GeoTIFF, GeoPackage). Easily add your own drivers for custom formats.

  • 🖥️ Interactive Inspection: Instantly visualize your processing inputs and results on a browser map with the built-in serve command.

Installation

We highly recommend installing mapchete and its dependencies from PyPI using pip or uv:

pip install mapchete
# or
uv pip install mapchete

For a complete installation including all optional dependencies (like S3 support, SQL support, etc.), use the [complete] extra:

pip install mapchete[complete]

Alternatively, it can be installed from the conda-forge channel using conda or mamba:

mamba install -c conda-forge mapchete

Quickstart: Generate a Hillshade

A great way to get started with mapchete is to generate a hillshade from a Digital Elevation Model (DEM). A hillshade creates a 3D-like relief effect by modeling how the surface would be illuminated by a light source. This example uses the modern process syntax where inputs and custom parameters are defined as typed function arguments.

You can find free DEM data for your area of interest from many sources, such as the Copernicus DEM.

1. Create a mapchete configuration file.

This file now includes a process_parameters section to control the hillshade’s appearance. These values are passed directly to your Python script. Save this file as hillshade.mapchete:

# The Python file containing the processing algorithm.
process: create_hillshade.py
# Note: there is a predefined process available, so you don't need to write your own hillshade process
# process: mapchete.processes.hillshade

# The CRS and grid definition for the output.
pyramid:
  grid: geodetic

# Define the zoom levels to process.
zoom_levels:
  min: 7
  max: 12

# User-defined parameters passed to the 'execute()' function.
process_parameters:
  azimuth: 315
  altitude: 45
  z_factor: 2.0
  scale: 1.0

# Define the input data.
# The key 'dem' will be the name of the variable passed to the execute() function.
input:
  dem: path/to/your/dem.tif

# Define the output format and location.
output:
  path: ./hillshade_output
  format: PNG
  bands: 3
  dtype: uint8  # Hillshade is an 8-bit grayscale image

2. Create your processing script.

The execute function now accepts the hillshade parameters from the config file as arguments. It also uses raise Empty, the recommended way to tell mapchete that a tile has no data and should be skipped. Save this file as create_hillshade.py:

import numpy as np
from mapchete import Empty, RasterInput
# mapchete has a built-in helper for this common task!
from mapchete.processes.hillshade import hillshade

def execute(
    dem: RasterInput,
    azimuth: int = 315,
    altitude: int = 45,
    z_factor: float = 1.0,
    scale: float = 1.0,
) -> np.ndarray:
    """
    Generate a hillshade from an input DEM tile.
    The function arguments are automatically populated from the .mapchete file.
    """
    # If the input tile is empty, raise an Empty exception to skip it.
    if dem.is_empty():
        raise Empty

    # Read the elevation data and generate the hillshade with the given parameters.
    return hillshade(
        dem.read(),
        azimuth=azimuth,
        altitude=altitude,
        z_factor=z_factor,
        scale=scale
    )

3. Run the process.

To run the process, use the execute subcommand. You can edit the values in hillshade.mapchete and re-run the process to see how the lighting changes. Make sure to use the --overwrite flag if you want to overwrite existing output.

mapchete execute hillshade.mapchete

4. View the output.

Use the serve command to inspect your results on an interactive map.

mapchete serve hillshade.mapchete

Managing Dependencies

Mapchete uses uv for dependency management and locking. The primary source of truth for dependencies is pyproject.toml.

Utilizing uv

For local development, it is recommended to use uv to manage your virtual environment and dependencies:

# Create a virtual environment and install dependencies
uv sync --all-extras

# Run mapchete or tests within the environment
uv run mapchete --help
uv run pytest

Sync Workflow

A GitHub Action workflow named sync-dependencies ensures that the project’s dependencies remain up-to-date and consistent across different environments. It runs automatically on a daily basis and on every push to the main branch.

The workflow performs the following steps:

  1. Update Locks: Runs uv lock --upgrade to refresh the uv.lock file with the latest compatible dependency versions.

  2. Sync Conda Recipe: Automatically updates the Conda recipe in conda/meta.yaml to match the requirements defined in pyproject.toml.

  3. Automated Testing: Runs the full test suite to ensure that any dependency updates don’t break existing functionality.

  4. Pull Request Creation: If changes are detected, it automatically creates a Pull Request for review.

Note on ``uv lock`` vs ``uv sync``:

  • uv lock resolves dependencies and updates the uv.lock file without installing any packages. It is used in the workflow to refresh the lock file before testing.

  • uv sync updates the virtual environment to match the lock file (and updates the lock file if necessary). This is what you’ll typically use for local development to ensure your environment is up-to-date.

Conda Recipe

The conda/meta.yaml file is a derivative of pyproject.toml and is generated using pyproject2conda. To maintain consistency, do not edit ``conda/meta.yaml`` manually; instead, update the dependencies in pyproject.toml and the sync workflow will handle the rest.

Documentation

For more detailed information, tutorials, and the API reference, please visit our full documentation at: mapchete.readthedocs.io

Contributing

Contributions are welcome! We are happy to receive bug reports, feature requests, or pull requests. Please have a look at our CONTRIBUTING.rst file for guidelines on how to get started.

License

This project is licensed under the MIT License.

Release files for mapchete 2026.7.0

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

Source distribution (sdist)

Source distribution for mapchete 2026.7.0
File Size Uploaded
mapchete-2026.7.0.tar.gz 168.9 kB Details

Built distribution (wheel)

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

Total release size: 407.4 kB

Release files / mapchete-2026.7.0.tar.gz

Download URL mapchete-2026.7.0.tar.gz
Size 168.9 kB
Tags Source
SHA-256 checksum
How to use checksums
9b8e28d27c362fc60ed17746f62845f828defaee67fb976a15e979e2be0f4682
BLAKE2b-256 checksum
How to use checksums
b002a26f6ac9546d7911a190f64f1dd88f5ed531da648e10232d7e6249face27
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via Hatch/1.16.4 cpython/3.14.6 HTTPX/0.28.1

Release files / mapchete-2026.7.0-py3-none-any.whl

Download URL mapchete-2026.7.0-py3-none-any.whl
Size 238.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b4c090d1197c70a21a3dd7f1d2afdde3b335227d54c29a2ece2d030443a51e7b
BLAKE2b-256 checksum
How to use checksums
6f0048cee3c3edbc31df49912c01c04193ac9c9d978afb1c22a79c78079e1b86
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via Hatch/1.16.4 cpython/3.14.6 HTTPX/0.28.1

Release history Release notifications | RSS feed

This release

2026.7.0 This release

2 release files

0.44

2 release files

0.43

2 release files

0.42

2 release files

0.41

2 release files

0.40

2 release files

0.39

2 release files

0.38

2 release files

0.37

2 release files

0.36

2 release files

0.35

2 release files

0.34

2 release files

0.33

2 release files

0.32

2 release files

0.31

2 release files

0.30

2 release files

0.29

2 release files

0.28

2 release files

0.27

2 release files

0.26

2 release files

0.25

1 release file

0.24

1 release file

0.23

2 release files

0.22

1 release file

0.21

1 release file

0.20

1 release file

0.19

1 release file

0.18

1 release file

0.17

1 release file

0.16

1 release file

0.14

1 release file

0.13

1 release file

0.12

1 release file

0.11

1 release file

0.10

1 release file

0.9

1 release file

0.8

1 release file

0.7

1 release file

0.6

1 release file

0.5

1 release file

0.4

1 release file

0.3

1 release file

0.2

1 release file

0.1

1 release file

0.0.1

1 release file

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