An Oriented Imagery Catalog (OIC) ties each drone photo to the camera pose it was captured at — so you can click a point on the map and see every photo that covered it, from the right angle. 3D Map Explorer registers OICs, auto-derives entries from FMV frame captures or drone EXIF, persists them to GeoPackage, and exposes each catalog as an ArcGIS Feature Service the Oriented Imagery Viewer consumes directly.
OrientedImageryService is an in-memory catalog registry backed by an optional GeoPackage store — so catalogs survive restarts. Each catalog is exposed as an ArcGIS Feature Service at /api/oic/{id}/featureserver/0, which is exactly the URL the Oriented Imagery Viewer expects for its FeatureLayer. Two ways to populate a catalog:
POST /api/oic, then point the viewer at the FeatureLayer URL.POST /api/orientedimagery/derive/fmv/{clipId} derives oriented entries from Full Motion Video frame captures (KLV camera pose already embedded).POST /api/orientedimagery/derive/photos derives entries from drone photo EXIF/XMP metadata.// register catalog → add images → serve POST /api/oic { "id": "sortie-12", "name": "North Ridge" } // auto-derive entries from drone photos POST /api/orientedimagery/derive/photos // viewer FeatureLayer URL GET /api/oic/sortie-12/featureserver/0/query → ArcGIS FeatureSet of oriented images
The richest oriented-imagery source is FMV — every frame already carries full camera pose in its KLV metadata. For still photography, EXIF/XMP camera tags provide the pose. Either way the catalog schema is ready, so you populate it from whichever source your sortie produced.
derive/fmv/{clipId} — captures KLV frame poses at a configurable interval.
derive/photos — pulls camera pose from EXIF/XMP metadata.
Optional OicGpkgStore — catalogs persist across restarts; best-effort load.
Each catalog emits an ArcGIS Feature Service — query + FeatureLayer URL.
FeatureLayer URL drops straight into the Oriented Imagery Viewer.
Register, list, get, add images, delete — CRUD over REST.
| Capability | Endpoint | Notes |
|---|---|---|
| List catalogs | GET /api/orientedimagery/catalogs · /api/oic | Aliases |
| Get catalog | GET /api/orientedimagery/catalogs/{id} · /api/oic/{id} | |
| Register catalog | POST /api/oic | Create catalog |
| Delete catalog | DELETE /api/oic/{id} | |
| Add images | POST /api/oic/{id}/images | Add oriented image entries |
| Derive from FMV | POST /api/orientedimagery/derive/fmv/{clipId} | KLV frame poses (?intervalSec) |
| Derive from photos | POST /api/orientedimagery/derive/photos | EXIF/XMP pose extraction |
| Feature Service | GET /api/oic/{id}/featureserver[/0[/query]] | ArcGIS FeatureLayer URL for the viewer |
Catalog + Feature Service reflect OrientedImageryRoutes.cs and OrientedImageryService.cs. Derive-from-photos EXIF/XMP pose extraction depends on complete camera metadata in the source images; partial EXIF yields partial poses.
Oriented Imagery Catalogs auto-derived from FMV or EXIF, persisted to GeoPackage, served as an ArcGIS Feature Service — the exploitation layer over your drone sorties.