★ New · feat/stac

STAC: cataloged imagery for corridor monitoring

Two capabilities in one. Browse and ingest imagery over your rights-of-way from remote public catalogs — Element 84 Earth Search, Microsoft Planetary Computer, or any custom STAC API — and turn the utility's own folders of drone-flight rasters, vectors, and LiDAR into a spec-conformant STAC catalog your whole GIS team can query.

STAC API 1.0.0OGC CQL2 (Filter Ext.)Element 84 Planetary ComputerSAS signingCOG / MVTLAS / LAZ / COPC
Search any catalog

One search box across every STAC API

Draw your corridor as the AOI, set a date range, and go. The browser auto-detects whether a catalog speaks the OGC CQL2 Filter Extension or the older STAC query extension, and emits the right request from a single query — no hand-writing filters.

  • Built-in remote catalogs: Element 84 Earth Search (Sentinel-2 L2A, Landsat C2 L2, NAIP) and Microsoft Planetary Computer (Sentinel-2, Landsat, NASADEM) — the workhorse sources for vegetation and ROW monitoring.
  • Planetary Computer SAS signing handled transparently — NeedsSigning asset hrefs are signed server-side so the browser can GET COGs directly.
  • CORS bypass, per-source auth, and automatic retry/circuit-breaker resilience centralized in the embedded proxy.
  • Add any custom STAC API at runtime — including commercial tasking providers you already buy from; schema-driven filter UI reads each collection's queryables — no hardcoded field lists.
POST /api/stac/sources/earth-search/search
// single query → correct dialect per catalog
{
  "collections": ["sentinel-2-l2a"],
  "intersects": {
    "type": "Polygon",
    "coordinates": [/* AOI */]
  },
  "datetime": "2026-05-01/2026-06-30",
  "query": { "eo:cloud_cover": { "lt": 10 } }
}
→ assets rendered as ArcGIS ImageryTileLayer
In-App Screenshot

STAC Catalog Browser & EO Ingest

VoltGrid desktop — STAC Browser and EO Fetch panel querying Sentinel-2 and Landsat catalogs
STAC catalog search querying Planetary Computer and Earth Search with AOI bounds, cloud cover threshold, and direct S3 COG streaming
Publish your own

Your inspection flights, as a STAC catalog

Ingest a folder of GeoTIFFs, COGs, Shapefiles, GeoJSON, GPKG, or LAS/LAZ/COPC — drone orthos from pole inspections, corridor LiDAR, post-storm collections — and serve it as a spec-conformant STAC API at /stac — landing page, conformance, collections, queryables, items, and GET + POST /search.

🛰️

Auto metadata extraction

AssetMetadataExtractor pulls bbox, CRS, and projection from rasters (GDAL), vectors (OGR), and point clouds (native LasReader).

📦

GeoPackage-backed store

Catalog items persist in a local stac.gpkg — survives restarts, fully offline, ready for the storm room.

🔎

Spec-conformant surface

STAC API 1.0.0 core, collections, OGC API Features, item-search (+sort, +fields), and the query extension v0.3.0.

🧩

Dynamic filter UI

Reads queryables + collection summaries to build filter widgets — no field list hardcoded.

🖼️

Renders in ArcGIS

STAC assets stream into ImageryTileLayer / ImageryLayer for instant visualization.

🔒

CORS & auth solved

The desktop proxy absorbs browser-hostile CORS, SAS signing, and bearer auth so the client just works.

Two surfaces, one feature

The API at a glance

Remote search is proxied under /api/stac; your own catalog lives under the spec path /stac with management under /api/stacserver.

SurfaceEndpointPurpose
Remote clientGET/POST /api/stac/sourcesList / add / remove remote catalogs
Remote clientPOST /api/stac/sources/{id}/searchSearch a remote catalog (dialect auto)
Remote clientGET /api/stac/sources/{id}/collectionsList collections + queryables
In-app serverGET /stac · /stac/conformanceSTAC 1.0.0 landing + conformance
In-app serverGET /stac/collections/{cid}/itemsServe items from stac.gpkg
In-app serverGET+POST /stac/searchSpec item-search (sort + fields)
ManagementPOST /api/stacserver/collections/{cid}/ingestIngest local files into a collection

STAC endpoints strictly follow the official STAC 1.0.0 core and API specifications with complete conformance documentation.

publish your own catalog
# ingest a folder of rasters + clouds
POST /api/stacserver/collections/{cid}/ingest
  { "paths": ["D:/imagery/*.tif",
            "D:/clouds/*.laz"] }

# then any STAC client can query it
GET  /stac/collections/{cid}/items
POST /stac/search
  { "bbox": [...] }

● spec-conformant · offline · on :5059
Why it matters

Stop fighting browsers to reach STAC

Browsers can't talk to most STAC APIs directly — CORS, Planetary Computer SAS signing, and bearer auth all block the client. The desktop host sits in between and absorbs all of it, so your GIS team searches and renders corridor imagery without ever leaving the map.

Search public catalogs. Publish your own.

Both STAC roles — consumer and provider — ship in a single in-app feature, fully offline-capable. Every inspection flight becomes discoverable imagery the next storm season.