Display and query terrain data
Use separate OGC Features and Tiles services to query map features, reusable terrain products, and map-owned RF results without hard-coding product URLs.
/api/maps/{map_id}/ogc/featuresStart with the map's feature collections.
Map features use the read-only map-scoped OGC Features service. Each rendered feature layer is a dynamiclayer--UUID collection. Use blue:layer_type to distinguish boundaries, named areas, annotations, and other content, then follow advertised links.
curl --silent --show-error --fail-with-body \
--header "Authorization: Bearer $BLUE_API_KEY" \
"$BLUE_API_URL/api/maps/$BLUE_MAP_ID/ogc/features/collections"{
"id": "layer--7d307d4e-46c4-4f6a-909f-9e7d62cd5b19",
"title": "Area of Operations",
"blue:map_layer_id": "7d307d4e-46c4-4f6a-909f-9e7d62cd5b19",
"blue:layer_type": "boundary",
"links": [
{
"rel": "items",
"href": "https://service-blue.exialabs.com/api/maps/MAP_ID/ogc/features/collections/layer--7d307d4e-46c4-4f6a-909f-9e7d62cd5b19/items",
"type": "application/geo+json"
}
]
}Reusable terrain products are advertised by the global OGC Tiles catalog.
curl --silent --show-error --fail-with-body \
--header "Authorization: Bearer $BLUE_API_KEY" \
"$BLUE_API_URL/api/ogc/tiles/collections"| Collection | Encoding | Terrain readiness dependency |
|---|---|---|
blue-native--terrain-elevation | PNG coverage | terrain_display_tiles |
blue-native--terrain-landcover | PNG coverage | terrain_display_tiles |
blue-native--roads | Mapbox Vector Tile | road_display_tiles |
blue-native--soil | Mapbox Vector Tile | soil_display_tiles |
blue-native--population | Mapbox Vector Tile | population_display_tiles |
blue-native--buildings | Mapbox Vector Tile | buildings_display_tiles |
Query boundaries and named areas as GeoJSON.
Find the collection you need by its blue:layer_type, then follow its items link. Items endpoints support bbox, datetime, limit, and offset. The default limit is 100 and the maximum is 1000.
export BLUE_LAYER_ID="LAYER_UUID_FROM_COLLECTION"
curl --silent --show-error --fail-with-body \
--header "Authorization: Bearer $BLUE_API_KEY" \
"$BLUE_API_URL/api/maps/$BLUE_MAP_ID/ogc/features/collections/layer--$BLUE_LAYER_ID/items?bbox=-104.90,38.80,-104.70,38.95&limit=100"Use the global catalog for reusable terrain tiles.
Tile addresses use tileMatrix = zoom, tileRow = y, andtileCol = x. Use the collection's tileset metadata for its format and supported zoom limits.
curl --silent --show-error --fail-with-body \
--header "Authorization: Bearer $BLUE_API_KEY" \
--output terrain-tile.png \
"$BLUE_API_URL/api/ogc/tiles/collections/blue-native--terrain-elevation/tiles/WebMercatorQuad/ZOOM/TILE_ROW/TILE_COLUMN.png"GET /api/maps/{map_id}/ogc/tiles/collections. RF collection IDs are dynamic layer--UUID values; follow their advertised tileset links.204 means a valid tile is empty or not ready. Inspect response headers and the terrain job phase for that product. Retry not-ready tiles after backoff; empty tiles may remain empty.Interpret each product according to its encoding.
- Elevation PNG: alpha 0 is nodata; otherwise
packed = R × 65536 + G × 256 + Band meters are-10000 + packed × 0.1. - Land-cover PNG: alpha 0 is nodata and the red channel contains the raw ESA land-cover category.
- Roads, population, soil, and buildings are MVT; each source-layer name matches its collection ID.
- Send
If-None-Matchwith a prior ETag and accept304as an unchanged authenticated representation.
200Tile ready
Read the PNG or MVT body and cache it according to the response headers.
204Empty or not ready
No response body. Inspect headers and product readiness before retrying.
304Not modified
Reuse the representation already stored for that ETag.
404 / 503Unavailable
The collection, address, format, RF layer, or backing service is unavailable.