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.0.tar.gz (20.5 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.0-py3-none-any.whl (29.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: geomltoolkits-2.0.0.tar.gz
  • Upload date:
  • Size: 20.5 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.0.tar.gz
Algorithm Hash digest
SHA256 c3982b35322e8b5079bba33df0facb18a1712a244d4c2c603315d76c71e9bde7
MD5 246e709df852f27f8bde1c7300a0c636
BLAKE2b-256 68439a3d642d700e8a0a5e680b6b9d0caf9ec9ce4af76e2088a24d708d4512bd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: geomltoolkits-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 29.6 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fa7507c406a88f9e6e1a7a5c868074583c9ce723a0bc639793a7cc1c49fab406
MD5 5010ab36494bb806b99c2dfc3c80e1f9
BLAKE2b-256 9d695ffdd230eab6e494bf4c0b0ed263323adb1b3faf0db6bec7577831488c35

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