Skip to main content

Toolkits for Geospatial Machine Learning

Project description

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

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

geomltoolkits-2.0.1.tar.gz (20.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

geomltoolkits-2.0.1-py3-none-any.whl (29.8 kB view details)

Uploaded Python 3

File details

Details for the file geomltoolkits-2.0.1.tar.gz.

File metadata

  • Download URL: geomltoolkits-2.0.1.tar.gz
  • Upload date:
  • Size: 20.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","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}

File hashes

Hashes for geomltoolkits-2.0.1.tar.gz
Algorithm Hash digest
SHA256 91038c495a5e7c3c534234641b4a800151a80ed4c2455093598c3b84e686d23b
MD5 ed9b9988d4809c95a0f6a2766e3d5e7e
BLAKE2b-256 1946013908543a5ffe6af5d625cc7e0da07717c34f42a19333f56c26bc4737b2

See more details on using hashes here.

File details

Details for the file geomltoolkits-2.0.1-py3-none-any.whl.

File metadata

  • Download URL: geomltoolkits-2.0.1-py3-none-any.whl
  • Upload date:
  • Size: 29.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","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}

File hashes

Hashes for geomltoolkits-2.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8b3997332e84d41625e906dbc0455a6f771f6e042aec1ecca71e0843bf59149a
MD5 4f7578ce588cd68a2327db886fa9f762
BLAKE2b-256 329037a1cc635b726f39d58677758f511af6f1d4ba8074b75f451b707d67383e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page