Agribound¶
Unified agricultural field boundary delineation from satellite imagery using geospatial foundation models, pre-trained segmentation, and embeddings.
Agribound provides a single interface to multiple delineation engines and satellite sources, handling the full pipeline from satellite composite generation through post-processing and export. It supports Google Earth Engine-based imagery (Landsat, Sentinel-2, HLS, NAIP, SPOT), local GeoTIFFs, and pre-computed embedding datasets (Google Satellite Embedding, TESSERA).
The pipeline runs: composite building → optional fine-tuning → delineation engine → post-processing (smooth, simplify, filter) → LULC crop filtering → export. For ensembles, SAM2 boundary refinement is applied per source for pixel-accurate boundaries.
Automatic LULC Crop Filtering¶
Unlike other field boundary packages that detect all visual boundaries (including roads, water, forests, and buildings), agribound automatically removes non-agricultural polygons using land-use/land-cover data. This is enabled by default and requires no user configuration.
The best available LULC dataset is selected automatically based on your study area:
- US: USGS Annual NLCD (1985–2024, 30 m) — classes 81/82 (Pasture, Cultivated Crops)
- Global (≥2015): Google Dynamic World (10 m, nearest year) — crop probability band
- Global, pre-2015: Copernicus C3S Land Cover (1992–2022, 300 m) — cropland classes
Disable with lulc_filter=False for local files without GEE access or unsupervised embedding workflows.
Example Results¶
Supervised: DINOv3 + SAM2 on NAIP (Eastern Lea County, New Mexico, USA) — Fine-tuned on NMOSE reference boundaries, LULC-filtered (NLCD), SAM2-refined on 1 m NAIP. Blue = predicted, yellow = reference. Note: Fields in Texas bordering New Mexico are also present.

Unsupervised: TESSERA + LULC Filter + SAM2 (Pampas, Argentina) — No training, no reference data. TESSERA embedding clustering + LULC crop filter (Dynamic World) + SAM2 on Sentinel-2.

See the Gallery for results across all regions and engines.
Note: The satellite basemap shown in these screenshots may not correspond to the same acquisition date as the imagery used for delineation.
Quick Install¶
For GPU-accelerated engines and GEE support, install optional extras:
See the Installation guide for all available extras.
Quickstart¶
import agribound
gdf = agribound.delineate(
study_area="area.geojson",
source="sentinel2",
year=2024,
engine="delineate-anything",
gee_project="my-gee-project",
)
The returned GeoDataFrame contains field boundary polygons with area, perimeter, and provenance metadata. See the Quickstart tutorial for a complete walkthrough.
Key Sections¶
| Section | Description |
|---|---|
| Installation | Install agribound and optional dependencies |
| Quickstart | 5-minute tutorial covering Python and CLI usage |
| Satellite Sources | Available imagery sources and compositing options |
| Engines | Comparison of all seven delineation engines |
| Configuration | Full reference for AgriboundConfig |
| CLI Usage | Command-line interface reference |
| API Reference | Python API documentation |
| Gallery | Visual results across 9 regions, 5 satellites, and all engines |
| Contributing | Developer guide for adding engines and sources |
| Citation & References | How to cite agribound, funding sources, and disclaimer |
License¶
Agribound is released under the Apache 2.0 License.