index-geotiff
Index a GeoTIFF raster into the DGGS — a web view of GET /api/processes/index-geotiff.
Index every data-bearing pixel of a GeoTIFF as a 4D point observation (pixel centre in the raster's CRS -> ECEF, plus the dataset's temporal validity), producing one content-addressed zoneSet per requested zone-level. The raster is indexed IN PLACE — never resampled, reprojected or rasterised into the grid — so raster and vector datasets become co-queryable through the same zone identity. Georeference, CRS, NODATA and acquisition time are read from the header where present; each has an input to supply or override it. Optionally emits a pixel-aligned zone-mask GeoTIFF (original bands plus an int64 local-index mask per level with a zoneIndex lookup, since 144-bit zone ids do not fit an int64 sample).
Inputs
| Name | Type | Default | Description |
|---|---|---|---|
| dataset_uri | — | http(s) URL of the GeoTIFF (streamed under the server's size ceiling), or a staged local path under the server's raster root where one is configured. | |
| dggrs | — | Identifier of the discrete global grid reference system to index into or query against. | |
| collectionId | — | Stable, meaningful id for the resulting dataset collection (e.g. 'nl-sentinel2-b04-2026'), addressable at /collections/{collectionId} and its /dggs sub-resource. Re-indexing under the same id updates that collection. Must match [A-Za-z0-9._~-]{1,128} and must not be a DGGRS-instance id. Defaults to the job id when omitted. | |
| zone-level | — | DGGS hierarchy level(s) to index at; one zoneSet is produced per level. | |
| crs | — | CRS of the raster's model space when the header carries none, or to override it: an EPSG code ('32631', 'EPSG:32631', EPSG URN, or opengis.net EPSG URI). Built-in support covers geographic CRSs, UTM/MGA, EPSG:3857 and EPSG:5070; others require pyproj in the worker image. | |
| datetime | — | RFC 3339 instant or start/end interval the observations are valid for. Defaults to the header's acquisition instant (GDALMetadata ACQUISITIONDATETIME or the TIFF DateTime tag); REQUIRED when the header carries neither. An interval is linearly interpolated across the pixel sequence in row-major scan order (scan-time model), so every pixel is indexed at exactly one 4D coordinate; the stored zoneSet carries the exact interval. | |
| height | — | Height of the raster surface in metres, in 'height_datum'. The default 0 AMSL is the clamped-to-terrain-datum convention for surface imagery; e.g. 100 with datum AMSL indexes a 100 m hub-height wind layer. | |
| height_band | — | 0-based band index whose values are per-pixel heights in 'height_datum' (a DEM or height layer). Overrides 'height'. | |
| height_datum | — | Datum of 'height'/'height_band' values. Default AMSL (surface-clamped convention); converted to ellipsoidal via the PER-PIXEL geoid undulation before indexing. | |
| geoid_model | — | Geoid model name (file stem in HYPLICA_GEOID_DIR or the bundled fallback). Default: best available, preferring egm2008 > egm96. Regional models (e.g. GEOID18 for CONUS) are selected the same way. | |
| nodata | — | Pixels equal to this value in EVERY band are skipped. Defaults to the header's GDAL_NODATA tag; no tag and no input means every pixel is indexed. | |
| skip_nodata | — | Set false to index NODATA pixels too (footprint-style indexing of the full scene rectangle). | |
| emit_zone_mask | — | Also encode the original bands plus a pixel-aligned int64 zone-mask image per level (data-geotiff layout) and store it as a blob artifact referenced from the result. Capped by the server's mask pixel ceiling. | |
| prune | — | If true, re-indexing an existing collectionId REPLACES the collection: raster-index zoneSets present before but absent from this run are removed (membership-based, honouring content addressing). Default false keeps additive behaviour. |
Outputs
| Name | Type |
|---|---|
| collection | |
| pixels | |
| indexedPixels | |
| zoneSets | |
| temporal | |
| crs | |
| maskArtifact | |
| pruned |
Execution is asynchronous (returns a job to poll) and requires a token — see the documentation. Track runs under OGC API — Jobs.