Skip to main content

waykit

waykit is a python tool to generate location metatata like peaks, huts and other pois for a given gpx file

Usage

You can run the tool directly from github with uvx

uvx git+https://github.com/hoffmann/waykit -o output.geojson input.gpx

To install and run the package from pypi:

# use your preferred tool to create a virtual environment
pip install waykit
waykit -o output.geojson input.gpx 

You can also clone the repository and run it locally

uv run waykit -o output.geojson input.gpx 

Providers

waykit ships with two data providers that can be selected via the --provider flag.

openstreetmap (default)

Queries the Overpass API at runtime to fetch peaks and alpine huts within a bounding box around the GPX track. This always returns up-to-date data but requires an internet connection and is subject to Overpass rate limits.

waykit -o output.geojson input.gpx
waykit --provider openstreetmap -o output.geojson input.gpx

cached

Uses a bundled, gzipped JSONL export of OpenStreetMap data. The data is loaded into a square-grid spatial index on first use, so lookups are fast and fully offline. This is useful for repeatable results, CI pipelines, or environments without network access.

waykit --provider cached -o output.geojson input.gpx

The cached dataset currently covers alpine huts in the Alps. It will be expanded over time to include peaks and other POI types.

Spatial indexing

waykit includes a custom square-grid spatial index rather than using an established system like H3, S2, or Geohash. This is intentional.

The grid index is a simple equirectangular projection divided into fixed-size meter cells. The entire implementation is pure Python with no external dependencies, making it straightforward to understand, debug, and extend.

A key goal is cross-language portability. The same algorithm and cell ID encoding can be reimplemented in JavaScript (or any other language) without pulling in a native binding or a large library. This keeps both the Python package and a future browser/Node.js version lightweight and dependency-free.

For the scale waykit operates at (regional hiking areas like the Alps), the equirectangular approximation is more than accurate enough. A full spherical grid system would add complexity without meaningful benefit.

Run the tests

If you have just installed you can use the following

just test

otherwise check the command in the justfile to run the pytests

Metadata

Release files for waykit 0.2.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 waykit 0.2.0
File Size Uploaded
waykit-0.2.0.tar.gz 844.2 kB Details

Built distribution (wheel)

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

Total release size: 1.7 MB

Release files / waykit-0.2.0.tar.gz

Download URL waykit-0.2.0.tar.gz
Size 844.2 kB
Tags Source
SHA-256 checksum
How to use checksums
5ff1acd11428cb15feb3d6449ab591c85900347e88a4e4e0802652abbc9a36d6
BLAKE2b-256 checksum
How to use checksums
67745308c732cd161b2aa23c76d9badf94d5783a783d46d59eb3c393e45e8ab6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / waykit-0.2.0-py3-none-any.whl

Download URL waykit-0.2.0-py3-none-any.whl
Size 844.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
550b50b6974e2cbd88632e1c7a5559ba0d18fa383dd30b5824e4a9664c194a9f
BLAKE2b-256 checksum
How to use checksums
575c00ba548813f84a887aa336ae60b6e1fbb22e90294ed17bbb8a229fc7a222
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.2.0 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