Skip to main content

WFS 2.0

The same data is served as classic WFS 2.0 at https://ogc.deepfire.co/ows. Reach for WFS when you need:

  • Existing GIS tooling — QGIS, ArcGIS, GDAL/OGR and friends speak WFS natively.
  • Server-side sorting — the OGC API sortby parameter is a no-op on this service; WFS sortBy is the only way to get ordered results from the server.
  • Feature countsresultType=hits returns numberMatched without features.

Service metadata

# Capabilities
curl -s "https://ogc.deepfire.co/ows?service=WFS&version=2.0.0&request=GetCapabilities"

# Feature schema for a collection
curl -s "https://ogc.deepfire.co/ows?service=WFS&version=2.0.0&request=DescribeFeatureType&typeNames=deepfire:hotspots"

GetFeature

Features as GeoJSON, filtered with CQL_FILTER:

curl -sG "https://ogc.deepfire.co/ows" \
--data-urlencode "service=WFS" --data-urlencode "version=2.0.0" \
--data-urlencode "request=GetFeature" --data-urlencode "typeNames=deepfire:clusters" \
--data-urlencode "outputFormat=application/json" --data-urlencode "count=100" \
--data-urlencode "CQL_FILTER=active=true"

Paging uses count + startIndex (same 10,000 cap and shallow-offset advice as the OGC API).

Sorted output

# The 100 most recent live detections
curl -sG "https://ogc.deepfire.co/ows" \
--data-urlencode "service=WFS" --data-urlencode "version=2.0.0" \
--data-urlencode "request=GetFeature" --data-urlencode "typeNames=deepfire:hotspots" \
--data-urlencode "outputFormat=application/json" --data-urlencode "count=100" \
--data-urlencode "CQL_FILTER=active=true" \
--data-urlencode "sortBy=observed_at D"

sortBy=<attribute> A sorts ascending, <attribute> D descending.

Counting

curl -sG "https://ogc.deepfire.co/ows" \
--data-urlencode "service=WFS" --data-urlencode "version=2.0.0" \
--data-urlencode "request=GetFeature" --data-urlencode "typeNames=deepfire:hotspots" \
--data-urlencode "resultType=hits" --data-urlencode "CQL_FILTER=active=true"

QGIS

Layer → Add Layer → Add WFS Layer…, create a connection with URL https://ogc.deepfire.co/ows (no credentials), and the three collections appear as layers. Apply a provider filter like active = true unless you want full history.