Skip to main content

Classify rasters (KMeans, Random Forest, DN rules) and vectorise to polygons.

Project description

raster2poly

Classify rasters and vectorise the result to clean polygons — in three lines of code.

Supports unsupervised clustering (KMeans), supervised classification (Random Forest from ROI shapefiles), and rule-based DN thresholds. Outputs are dissolved, filtered GeoDataFrames ready for GIS.

Installation

pip install raster2poly

Quick start

Unsupervised (KMeans)

from raster2poly import RasterClassifier

clf = RasterClassifier("satellite_image.tif")
gdf = clf.unsupervised(n_clusters=6, algorithm="mini_batch_kmeans")
clf.save(gdf, "classes.gpkg")

Supervised (ROI shapefile)

gdf = clf.supervised("training_rois.shp", class_col="class_id")
clf.save(gdf, "supervised.shp")

The ROI file can contain Points or Polygons (or both). For polygons, every pixel inside the geometry is used as a training sample — far more robust than a single zonal mean.

Rule-based (DN ranges)

rules = {
    1: [(4, 0.15, 1.0), (5, 0.0, 0.10)],  # high Red, low NIR → built-up
    2: [(5, 0.25, 1.0)],                     # high NIR → vegetation
}
gdf = clf.from_dn_ranges(rules)

Band numbers are 1-based. A pixel must satisfy all conditions in the list to be assigned that class.

Key improvements over the original script

Issue in original Fix
point_query returns wrong shape for multi-band Replaced with per-pixel rasterised extraction
Only zonal mean used for polygon ROIs Every pixel inside the polygon is a training sample
Hardcoded 'class' column name Configurable class_col parameter
No polygon dissolve — millions of tiny fragments dissolve=True by default, plus min_area filter
rasterstats dependency for simple ops Replaced with rasterio.features.geometry_mask
No CRS check on ROI shapefile Auto-reprojects vector → raster CRS
Output always Shapefile Auto-detects .shp / .gpkg / .geojson
No nodata → NaN conversion Nodata replaced with NaN on load, masked throughout

Output format

The returned GeoDataFrame has two columns:

  • class_id (int) — the class label
  • geometry — dissolved polygons

Save to any format: .shp, .gpkg, .geojson.

License

MIT

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

raster2poly-0.1.0.tar.gz (23.2 kB view details)

Uploaded Source

Built Distribution

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

raster2poly-0.1.0-py3-none-any.whl (9.2 kB view details)

Uploaded Python 3

File details

Details for the file raster2poly-0.1.0.tar.gz.

File metadata

  • Download URL: raster2poly-0.1.0.tar.gz
  • Upload date:
  • Size: 23.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for raster2poly-0.1.0.tar.gz
Algorithm Hash digest
SHA256 380d4186de92bc57fed582e76901b56b53f03ed24a4c47233485d12c42fbe06e
MD5 8b5fbaee846317c4772b870efd3db626
BLAKE2b-256 2f1dd2f829813c9c26df312e84c1aad23cad1fd7eff2ebac5368b7b72220ca62

See more details on using hashes here.

Provenance

The following attestation bundles were made for raster2poly-0.1.0.tar.gz:

Publisher: release.yml on geoharkat/raster2poly

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file raster2poly-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: raster2poly-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 9.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for raster2poly-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3988bee97829d774c19a0160c3c518376eb6121d6ff4c3860be09dabe35ef247
MD5 48410e402453c11073f4844796d452f3
BLAKE2b-256 3f9c26f95c4ffa920d53afe80f3a21c0310e497cb0f0d06124f652374cf8853f

See more details on using hashes here.

Provenance

The following attestation bundles were made for raster2poly-0.1.0-py3-none-any.whl:

Publisher: release.yml on geoharkat/raster2poly

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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