Skip to main content

Geo ML Toolkits

Toolkits for geospatial machine learning workflows.

The project supports downloading imagery tiles and OSM features, rasterizing labels, and preparing ML datasets.

Installation

pip install geomltoolkits

Development Setup

Prerequisites:

  • Python 3.10+
  • uv
  • just

Install dependencies:

just install

Quick Python Example

import os

from geomltoolkits.downloader import osm as OSMDownloader
from geomltoolkits.downloader import tms as TMSDownloader
from geomltoolkits.raster.burn import burn_labels
from geomltoolkits.raster.vectorize import vectorize_mask
from geomltoolkits.training.prepare import prepare_dataset

zoom = 18
work_dir = "banepa"
tms = "https://tiles.openaerialmap.org/62d85d11d8499800053796c1/0/62d85d11d8499800053796c2/{z}/{x}/{y}"
bbox = [85.51678033745037, 27.6313353660439, 85.52323021107895, 27.637438390948745]

os.makedirs(work_dir, exist_ok=True)

chips_dir = await TMSDownloader.download_tiles(
    tms=tms,
    zoom=zoom,
    out=work_dir,
    bbox=bbox,
    georeference=True,
    dump_tile_geometries_as_geojson=True,
    prefix="OAM",
)

labels_dir = os.path.join(work_dir, "labels")
await OSMDownloader.download_osm_data(
    geojson=os.path.join(work_dir, "tiles.geojson"),
    out=labels_dir,
    dump_results=True,
)

masks_dir = os.path.join(work_dir, "masks")
burn_labels(
    labels_path=os.path.join(labels_dir, "osm-result.geojson"),
    chips_dir=chips_dir,
    output_dir=masks_dir,
)

prepare_dataset(
    chips_dir=chips_dir,
    labels_dir=masks_dir,
    output_dir=os.path.join(work_dir, "dataset"),
    dataset_format="yolo",
)

vectorize_mask(
    input_tiff=os.path.join(masks_dir, "OAM-0-0-0.tif"),
    output_geojson=os.path.join(work_dir, "vectorized.geojson"),
)

Detailed walkthrough notebook: example_usage.ipynb

download_tiles sends at most max_concurrency requests at once (default 100), and each request has its own request_timeout (default 60 seconds). Timeouts, connection errors, incomplete response bodies, HTTP 429 and HTTP 5xx are retried with exponential backoff, up to max_attempts tries in total (default 4). Tiles the source returns as HTTP 404 are skipped. Other HTTP and connection errors count as failures, and the call raises RuntimeError when failures exceed max_failures. An error while writing or georeferencing a tile stops the download.

CLI Commands

The package exposes a single CLI entrypoint:

geoml --help

Available commands:

  • geoml download-tiles
  • geoml download-osm
  • geoml patch
  • geoml burn
  • geoml prepare

Examples:

geoml download-tiles \
  --tms "https://tiles.openaerialmap.org/.../{z}/{x}/{y}" \
  --zoom 18 \
  --bbox "85.51678033745037,27.6313353660439,85.52323021107895,27.637438390948745" \
  --out banepa \
  --georeference \
  --dump-geometries

geoml download-osm \
  --aoi banepa/tiles.geojson \
  --out banepa/labels \
  --dump

geoml burn banepa/labels/osm-result.geojson banepa/chips banepa/masks

geoml prepare banepa/chips banepa/masks banepa/dataset --dataset-format yolo

Project Tasks

Use Just for local checks and development:

just lint
just typecheck
just test
just check

Metadata

Release files for geomltoolkits 2.1.2

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

Source distribution (sdist)

Source distribution for geomltoolkits 2.1.2
File Size Uploaded
geomltoolkits-2.1.2.tar.gz 26.3 kB Details

Built distribution (wheel)

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

Total release size: 60.5 kB

Release files / geomltoolkits-2.1.2.tar.gz

Download URL geomltoolkits-2.1.2.tar.gz
Size 26.3 kB
Tags Source
SHA-256 checksum
How to use checksums
7e9113bf3a5cbdc1e5dd28cde042baa75bee75f80c6afd49faf4395a60822b7c
BLAKE2b-256 checksum
How to use checksums
3db9ea08cc1f23f38e204d48ee65a1c32c3c7a5be05108115592c6ddd111c665
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.1 {"installer":{"name":"uv","version":"0.13.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / geomltoolkits-2.1.2-py3-none-any.whl

Download URL geomltoolkits-2.1.2-py3-none-any.whl
Size 34.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
291f0e921cc3f05583ef66e10a4964a35c9ecad4d0e44cce56ceb6d6ba6b2c8a
BLAKE2b-256 checksum
How to use checksums
11b68a1d90aeb6cd8aa6b001cc59e9414695f383ffaa18c69bd6a8661a82d9af
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.1 {"installer":{"name":"uv","version":"0.13.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

2.1.2 This release

2 release files

2.1.1

2 release files

2.1.0

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.9

2 release files

0.3.8

2 release files

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.6

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.0

2 release files

0.0.2

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