api.openathena.com

OpenAthena™ cloud RESTful API

Provided By: 𝚹 Theta Informatics LLC

This cloud API enables other applications to use OpenAthena's terrain-raycast method for geo-locating any point within drone imagery.

OpenAthena™ can instantly and precisely geolocate any single pixel of any single drone image. It does this by combining drone position and orientation data with a digital twin of terrain elevation.

OpenAthena obtains precise ground coordinates (typical median error < 10 meters) for any single drone image pixel, without the need for any special hardware. This is extremely useful for use of drones for search and rescue, public safety, defense technology, and more.

Video Demo: https://youtu.be/it9khfq-IeQ

For more information, visit https://OpenAthena.com

To obtain an API key for testing and evaluation, please contact info@theta.limited

OpenAthena API Summary:


Examining and Using the Digital Elevation Model Cache

Show

OpenAthena Core analyzes drone image metadata using elevation data automatically downloaded from OpenTopography.org. By default, OpenAthena Core downloads data from the COP30 digital surface model dataset. The downloaded elevation data, or DEMs, are stored in a demcache directory (configured via openathenacore.properties or via command-line argument) and are cached in memory.

Other datasets are now supported if your OpenTopography subscription level provides access to them. To specify a different elevation dataset, set and pass the dataset parameter, where appropriate, in the API.

dataset parameter values
ValueDescription
SRTMGL1Shuttle Radar Topography Mission Global 30m
3DEPUSGS 1/3 arc-second Digital Elevation Model 10m
DTED2DTED2+ 1 arc sec 30m
EUDTMContinental Europe Digital Terrain Model 30m
COP30Copernicus Global DSM 30m
DEFAULTDefault/SRTMGL1 30m
MARITIMEUse Mean Sea Level instead of any terrain height (use over oceans)
GET /api/v1/openathena/dem (return DEM cache entries)
Parameters

None

Responses
http codecontent-typeresponse
200application/jsonJSON array of DEM cache entries; key is cache
404application/jsonInvalid DEM query
GET /api/v1/openathena/dem/{name} (return cache entry for specific DEM filename)
Parameters
nametypedata typedescription
{name}requiredstringdigital elevation model filename
Responses
http codecontent-typeresponse
200application/jsonJSON object containing DEM cache entry; key is cacheEntry
404application/jsonDEM entry not found
GET /api/v1/openathena/dem?lat={lat}&lon={lon} (Search for and retrieve a cache entry for a particular lat,lon location)
Parameters
nametypedata typedescription
latrequiredfloat/decimallatitude e.g. 33.837470333333336
lonrequiredfloat/decimallongitude e.g. -84.52259847222223
Responses
http codecontent-typeresponse
200application/jsonJSON object containing matching DEM cache entry; key is cacheEntry
404application/jsonUnable to find matching cache entry
GET /api/v1/openathena/dem/count (Get number of cache entries)
Parameters

None

Responses
http codecontent-typeresponse
200application/jsonJSON object containing number of entries; key is demCacheCount
404application/jsonInvalid DEM query
GET /api/v1/openathena/dem/date (Get date/time of last cache refresh)
Parameters

None

Responses
http codecontent-typeresponse
200application/jsonJSON object containing string date/time of cache refresh; key is demCacheDate
404application/jsonInvalid DEM query`
GET /api/v1/openathena/dem/bytes (Get size of cache)
Parameters

None

Responses
http codecontent-typeresponse
200application/jsonJSON object containing size in bytes of cache, key is demCacheSize
404application/jsonInvalid DEM query
DELETE /api/v1/openathena/dem/{name} (Delete a DEM cache entry; admin only)
Parameters
nametypedata typedescription
{name}requiredstringfilename (w/o full path) of cache entry to delete (e.g. DEMxxx.cop30)
Responses
http codecontent-typeresponse
200application/jsonDEM cache entry successfully deleted
404application/jsonInvalid DEM operation
POST /api/v1/openathena/dem?lat={lat}&lon={lon}&len={len} (Fetch a new DEM centered at lat,lon size len by len meters.)
Parameters
nametypedata typedescription
latrequiredfloat/decimallatitude e.g. 33.837470333333336
lonrequiredfloat/decimallongitude e.g. -84.52259847222223
lenrequiredintegerlen (meters) of side of bounding box (e.g. 10000)
datasetoptionalstringdataset to use: SRTM, THREEDEP, COP30, EUDTM, DEFAULT
Responses
http codecontent-typeresponse
200application/jsonreturned cache filename
404application/jsonInvalid DEM query
POST /api/v1/openathena/dem/alt?lat={lat}&lon={lon}[&dataset={string}] (Return the terrain alt for lat,lon; may induce a DEM download)
Parameters
nametypedata typedescription
latrequiredfloat/decimallatitude e.g. 33.837470333333336
lonrequiredfloat/decimallongitude e.g. -84.52259847222223
datasetoptionalstringOptional elevation dataset (see dataset valid values above)
Responses
http codecontent-typeresponse
200application/jsonJSON object containing altitude info; the fields are terrainAltWGS84 terrainAltAMSL
geoidOffset demDescription
400application/jsonInvalid inputs, no matching DEM, etc.
GET /api/v1/openathena/bulkdemdownloader/{uuid} (Return the bulk DEM downloader task associated with this uuid)

Parameters

nametypedata typedescription
uuidrequiredstringUUID e.g. f81ef2cd-4dbd-4550-bbe5-1e212b9ab12e

Responses

http codecontent-typeresponse
200application/jsonJSON object containing bulk DEM downloader task info; the field is bulkdemdownloader
404application/jsonInvalid UUID or no such bulk DEM downloader
GET /api/v1/openathena/bulkdemdownloader (Return JSON array of bulk DEM downloader tasks. Tasks include currently running, queued to run, and those previously run.)

Parameters

None

Responses

http codecontent-typeresponse
200application/jsonJSON object containing JSON array of bulk DEM downloader task info objects; the field is bulkdemdownloadqueue
POST /api/v1/openathena/bulkdemdownloader (Create and submit a bulk DEM downloader task. Provide opposite corners of bounding box, tile size, dataset, overlap and optional job name.)
nametypedata typedescription
nonerequiredJSON objectJSON object containing image metadata
POST Body JSON Object Key/Value Pairs
key nametypedata typedescriptionexample
lenrequiredfloatlength in meters of tile square25_000
lat1requiredfloat/decimallatitude of corner159.78810595075987
lon1requiredfloat/decimallongitude of corner1-50.51953142881393
lat2requiredfloat/decimallatitude of corner264.80844051498411
lon2requiredfloat/decimallongitude of corner2-40.59374874830245
datasetrequiredstringelevation dataset (see dataset valid values above)THREEDEP
overlaprequiredfloat0.0 < Percentage overlap < 1.00.20
jobnameoptionalstringoptional short job description or nameArea download
Responses
http codecontent-typeresponse
201application/jsonJSONobject containing result; bulk DEM download task created
400application/jsonBad request due to invalid task parameters
POST /api/v1/openathena/bulkdemdownloader/{uuid}/stop (Stop a bulk DEM downloader task. Even if successful, already queued DEM tile downloads will complete.)

Parameters

nametypedata typedescription
uuidrequiredstringUUID e.g. f81ef2cd-4dbd-4550-bbe5-1e212b9ab12e

Responses

http codecontent-typeresponse
202application/jsonJSONobject containing result; bulk DEM download task created
200application/jsonUnable to stop job; it may not exist or may already be stopped.

Examining Drone Information Database

Show
GET /api/v1/openathena/drone?search={string} (Search for a drone info database entry)
Parameters
nametypedata typedescription
stringrequiredstringdrone search string (e.g. dji or fisheye)
Responses
http codecontent-typeresponse
200application/jsonJSON array of matching drones
404application/jsonInvalid or no search string
GET /api/v1/openathena/{makeModel} (Get entries matching make/model string)
Parameters
nametypedata typedescription
makeModelrequiredstringmake/model string to match
Responses
http codecontent-typeresponse
200application/jsonJSON array of matching drones
404application/jsonInvalid drone query
GET /api/v1/openathena/drone/count (Get number of entries in the drone info database)
Parameters

None

Responses
http codecontent-typeresponse
200application/jsonJSON object containing number of entries; key is count
404application/jsonInvalid drone query
GET /api/v1/openathena/drone/date (Get the date of the drone information database)
Parameters

None

Responses
http codecontent-typeresponse
200application/jsonJSON object containing date of drone info database
404application/jsonInvalid drone query

Analyzing Drone Images

Show

For geolocating a specific pixel within a drone image, the drone image itself does not need to be uploaded. Instead, the required camera position and orientation metadata is provided via the POST method and sent to the OpenAthena Core API server. All values should be passed via JSON as quoted strings even if they are floats, ints, etc.

For altitude, either GPS Altitude (defined as height above the WGS84 ellipsoid [HAE] in meters) or MSL Altitude (defined as height above mean sea level [AMSL] in meters) must be provided. HAE and AMSL are actually two different vertical datums which are deceptively similar, but can be off as much as 30 meters from each other in a typical case. Whether the drone platform reports its altitude in HAE or AMSL depends on the flight control software and even firmware version being used. Using one incorrectly for the other will add at least 20-30 meters of targeting error to OpenAthena's terrain-raycast.

See this web page for an explainer on the difference between HAE and AMSL vertical datums for elevation.

OpenAthena Core analyzes drone image metadata using elevation data automatically downloaded from OpenTopography.org. By default, OpenAthena Core downloads data from the COP30 digital surface model dataset. The downloaded elevation data, or DEMs, are stored in a demcache directory (configured via openathenacore.properties or via command-line argument) and are cached in memory.

Other datasets are now supported if your OpenTopography subscription level provides access to them. To specify a different elevation dataset, set and pass the dataset parameter, where appropriate, in API. This type may also be referred to, in query parameters, as dataset.)

dataset parameter values
ValueDescription
SRTMGL1Shuttle Radar Topography Mission Global 30m
3DEPUSGS 1/3 arc-second Digital Elevation Model 10m
DTED2DTED2+ 1 arc sec 30m
EUDTMContinental Europe Digital Terrain Model 30m
COP30Copernicus Global DSM 30m
DEFAULTDefault/SRTMGL1 30m
MARITIMEUse Mean Sea Level instead of any terrain height (use over oceans)

OpenAthena Core bundles a database of camera calibration values (camera intrinsics) for known drone camera make and models. These camera intrinsic values are necessary for calculating the pitch and yaw angle of any off-center image pixel. OpenAthena Core references this database to find matching calibration values for the camera make and model name included in your API request.

Alternatively, if your camera make and model name are not in OpenAthena's drone models database (such as for a custom camera), you can include camera intrinsics parameters directly within your API request instead.

These optional parameters for camera intrinsics are documented below.

optional drone camera intrinsics

See this link for an explanation of these camera instrinsic parameters.

See this link for a link to Theta's open source camera calibration tool which calculates these values using a few dozen images taken of a B/W checkerboard calibration pattern poster. Theta has prints of this poster available for order, email info@theta.limited for details.

key namedata typedescriptionexample
isThermalbooleantrue if thermal camera; false otherwisedefault false
widthPixelsintpixel width of full resolution camera sensor5472
heightPixelsintpixel height of full resolution camera sensor3648
lensTypestringperspective or fisheye'perspective' only supported at present
ccdWidthMMPerPixelfloatwidth of each pixel (in mm)12.83332/5472.0
ccdHeightMMPerPixelfloatheight of each pixel (in mm)8.55554/3648.0
radialR1floatfirst radial distortion coefficient for the camera lensdefault is 0.0
radialR2floatsecond radial distorion coefficientdefault is 0.0
radialR3floatthird radial distorion coefficientdefault is 0.0
tangentalT1floatfirst tangential distortion coefficient for the camera lensdefault is 0.0
tangentalT2floatsecond tangential distortion coefficientdefault is 0.0

Location calculation Request

POST /api/v1/openathena/locationsimple (Return simplified geolocation of pixel within a drone image via provided metadata)
Parameters
nametypedata typedescription
nonerequiredJSON objectJSON object containing image metadata
POST Body JSON Object Key/Value Pairs
key nametypedata typedescriptionexample
NameoptionalstringUnique string for cache lookupexample42.jpg
GPS Latituderequiredfloatlatitude +- decimal degrees33.837470333
GPS Longituderequiredfloatlongitude +- decimal degrees-84.522598472
GPS Altitudesemi-requiredfloataltitude in WGS84 Height Above Elipsoid (HAE) meters (see note above)437.920107
MSL Altitudesemi-requiredfloataltitude in Above Mean Sea Level (AMSL) meters according to EGM96 Geoid (see note above)101.233
Focal Lengthrequiredfloatfocal length of image6.72
Focal Length 35optionalfloat35mm equivalent focal length24.0
ImageWidthrequiredintimage width in pixels (scaled values are OK)4032
ImageHeightrequiredintimage height in pixels (scaled vales are OK)3024
Camera:Rollrequiredfloatdegrees roll of camera relative to ground (clockwise from camera perspective is positive)0.0
GimbalPitchDegreerequiredfloatdegree pitch of gimbal or camera; measured in degrees downward from horizon41.40
GimbalYawDegreerequiredfloatcompass heading in degrees; north is 0 and increasing clockwise156.30
Camera Makerequiredstringmanufacturer name of drone cameraDJI
Camera Modelrequiredstringmodel name of drone cameraFC8482
Digital Zoom Ratiooptionalfloatdigital zoom (centered crop) ratio, leave at 1.0 if digital crop has not been applied to image1.0
timestamp_iso8601optionalstringISO8601 format time stamp YYYY-MM-DDTHH:mm:ss.sssZ2026-01-25T21:28:43.123Z
xpropoptionalfloatx position of target within image frame as a proportion 0-1.0, measured from the left edge increasing rightward0.50 is default
ypropoptionalfloaty position of target within image frame as a proportion 0-1.0, measured from the top edge increasing downwards0.50 is default
datasetoptionalstringTerrain elevation dataset to use for calculations, if possibleCOP30 (see list above)
drone camera intrinsicsoptionalsee aboveonly needed if camera make and model not in database; see above for key names and descriptions
cottypeoptionalstringType value to include CoT messagesa-p-G (see COT specs)
cotuidoptionalstringCoT UID to include in CoT messagesOpenAthenaCore-November01-668
Responses
http codecontent-typeresponse
200application/jsonJSON object containing simplified geolocation information
400application/jsonLocation error
Returned JSON location Object Key/Value Pairs
key namedata typedescriptionexample
targetLatfloattarget latitude33.8358084243378
targetLonfloattarget longitude-84.5207742586809
targetAltHAEfloattarget altitude309.8363786905352
targetDistanceMetersfloatdistance to target281.2324945266905
predictedCEfloatpredicted error, meters11.521343585384802
TLE_CatStringpredicted error categoryCAT_2
elevationDataModelStringdataset that elevation data came fromCopernicus Global DSM 30m
POST /api/v1/openathena/location (Return detailed geolocation data of pixel within a drone image via provided metadata)
Parameters
nametypedata typedescription
nonerequiredJSON objectJSON object containing image metadata
POST Body JSON Object Key/Value Pairs
key nametypedata typedescriptionexample
NameoptionalstringUnique string for cache lookupexample42.jpg
GPS Latituderequiredfloatlatitude +- decimal degrees33.837470333
GPS Longituderequiredfloatlongitude +- decimal degrees-84.522598472
GPS Altitudesemi-requiredfloataltitude in WGS84 Height Above Elipsoid (HAE) meters (see note above)437.920107
MSL Altitudesemi-requiredfloataltitude in Above Mean Sea Level (AMSL) meters according to EGM96 Geoid (see note above)101.233
Focal Lengthrequiredfloatfocal length of image6.72
Focal Length 35optionalfloat35mm equivalent focal length24.0
ImageWidthrequiredintimage width in pixels (scaled values are OK)4032
ImageHeightrequiredintimage height in pixels (scaled vales are OK)3024
Camera:Rollrequiredfloatdegrees roll of camera relative to ground (clockwise from camera perspective is positive)0.0
GimbalPitchDegreerequiredfloatdegree pitch of gimbal or camera; measured in degrees downward from horizon41.40
GimbalYawDegreerequiredfloatcompass heading in degrees; north is 0 and increasing clockwise156.30
Camera Makerequiredstringmanufacturer name of drone cameraDJI
Camera Modelrequiredstringmodel name of drone cameraFC8482
Digital Zoom Ratiooptionalfloatdigital zoom (centered crop) ratio, leave at 1.0 if digital crop has not been applied to image1.0
timestamp_iso8601optionalstringISO8601 format time stamp YYYY-MM-DDTHH:mm:ss.sssZ2026-01-25T21:28:43.123Z
xpropoptionalfloatx position of target within image frame as a proportion 0-1.0, measured from the left edge increasing rightward0.50 is default
ypropoptionalfloaty position of target within image frame as a proportion 0-1.0, measured from the top edge increasing downwards0.50 is default
datasetoptionalstringTerrain elevation dataset to use for calculations, if possibleCOP30 (see list above)
drone camera intrinsicsoptionalsee aboveonly needed if camera make and model not in database; see above for key names and descriptions
cottypeoptionalstringType value to include CoT messagesa-p-G (see COT specs)
cotuidoptionalstringCoT UID to include in CoT messagesOpenAthenaCore-November01-668
polarOriginoptionalstringOrigin coordinates for use in calculating polar coordiantes of target (lat,lon or MGRS)33.836739,-84.522274 or 16S GC 29277 46817
polarOriginAltoptionalfloatAltitude in meters above MSL242
Responses
http codecontent-typeresponse
200application/jsonJSON object containing detailed geolocation information
400application/jsonLocation error
Returned JSON location Object Key/Value Pairs
key namedata typedescription
targetLonfloatlongitude decimal degrees
targetLatfloatlatitude decimal degrees
targetDistanceMetersfloatdistance to target in meters
targetAltHAEfloattarget alt, height in meters above ellipsoid
targetAltEGMfloattarget alt, meters EGM/Geoid/MSL
finalThetafloatfinal target theta, degrees
linearErrorfloatestimate of linear error in meters
predictedCEfloatpredicted circular error in meters
TLE_Catstringpredicted circular error category
imageSelectedProportionYfloattarget proportion in image, y-axis 0.0-1.0
imageSelectedProportionXfloattarget proportion in image, x-axis 0.0-1.0
imageHeightfloatpixels
imageWidthfloatpixels
imageDateTimeUTCstringUTC date/time image taken
pitchOffsetDegSelectedPointfloattarget pitch offset, degrees
finalAZfloatfinal target azimuth, degrees
digitalZoomRatiofloatzoom factor
calculationDateTimeUTCstringUTC date/time of calculation
azimuthOffsetUserCorrectionfloatuser azimuth correction, degrees
cameraRollAngleDegfloatcamera roll, degrees
isCameraModelRecognizedbooleanis drone camera in drone database
droneElevationHAEfloatdrone alt in meters, height above ellipsoid
modelstringdrone manufacturer
makestringmodel
lensTypestringlens type perspective or fisheye
f_xfloatlens intrinsics
f_yfloatlens intrinsics
droneLatitudefloatdecimal degrees
droneLongitudefloatlongitude decimal degrees
cameraSlantAngleDegfloatcamera theta in degrees
yawOffsetDegSelectedPointfloattarget azimuth offset, degrees
imageFilenamestringimage filename if present
focalLengthfloatfocal length for this image
targetUTMStringtarget location in UTM coordinates
droneVerticalDatumStringvertical datum drone reports altitude
terrainAltUnderDroneHAEfloatterrain alt in meters, height above ellipsoid
demFilenameStringfilename of digital elevation model
elevationDataModelStringdataset that elevation data came from
cotuidStringif CoT was sent, message UID value
cottypeStringif CoT was sent, event type value
polarStatusStringif polar coord requested, "OK" or error description
polarOriginStringif polar coord requested, polar origin
polarOriginAltfloatif polar coord requested, polar origin alt (AMSL)
polarSlangRangeMetersfloatif polar coord requested, range from origin to target (meters)
polarElevationAngleDegfloatif polar coord requested, elev angle (deg) from origin to target
polarElevationDeltafloatif polar coord requested, elev delta from origin to target (meters)
polarGridAzMradfloatif polar coord requested, AZ in milliradians (0–≈6283 mrad)
polarGridAzMils6400floatif polar coord requested, AZ in NATO mils (0–6400) relative to grid north
polarGroundRangeMetersfloatif polar coord requested, ground range from origin to target (meters)

MISB Location Request

OpenAthena can also analyze drone telemetry directly from Motion Imagery Standards Board (MISB) format video metadata. OpenAthena maps the metadata from MISB into its internal format obviating the need to translate it syntactically and semantically. Supporting MISB telemetry, natively, makes integrating OpenAthena into a drone software pipeline much more straightforward.

For altitude, either Sensor Ellipsoid Height altitude (WGS84 height above ellipsoid or HAE in meters) or Sensor True Altitude (altitude above mean sea level or AMSL in meters) must be provided. HAE and AMSL are actually two different vertical datums which are deceptively similar, but can be off as much as 30 meters from each otrher in a typical case. Using one incorrectly for the other will add at least 20-30 meters of targeting error to OpenAthena's terrain-raycast.

In MISB metadata, the orientation of the drone or aircraft platform is separate from the relative orientation of the gimbal or sensor to the platform. Thus, OpenAthena performs a Euler angle composition to calculate the actual orientation of the camera before performing its terrain-raycast algorithm.

POST /api/v1/openathena/locationmisbsimple (Return simplified geolocation of pixel within a MISB drone image via provided metadata)
Parameters
nametypedata typedescription
nonerequiredJSON objectJSON object containing image metadata
POST Body JSON Object Key/Value Pairs
key nametypedata typedescriptionexample
NameoptionalstringUnique string for cache lookupmisb-frame-xx
Sensor Latituderequiredfloatlatitude +- decimal degrees33.837470333
Sensor Longituderequiredfloatlongitude +- decimal degrees-84.522598472
Sensor Ellipsoid Heightsemi-requiredfloataltitude in WGS84 Height Above Elipsoid (HAE) meters (see note above)437.920107
Sensor True Altitudesemi-requiredfloataltitude in Above Mean Sea Level (AMSL) meters according to EGM96 Geoid (see note above)101.233
Sensor Relative Azimuth Anglerequiredfloatrelative rotation angle of sensor to platform longitudinal axis. Rotation angle between platform longitudinal axis and camera pointing direction as seen from above the platform.10.0
Sensor Relative Elevation AnglerequiredfloatAngle of sensor to platform longitudinal-transverse plane; negative angles down-5.0
Sensor Relative Roll AnglerequiredfloatRelative roll angle of sensor to aircraft platform. Top of image is zero degrees. Positive angles are clockwise when looking from behind camera5.0
Platform Heading Anglerequiredfloatplatform compass heading in degrees; north is 0 and increasing clockwise156.30
Platform Pitch Anglerequiredfloatplatform pitch angle between longitudinal axis and horizontal plane; positive when platform nose is above horizontal plane5.0
Platform Roll Anglerequiredfloatplatform angle between transverse axis and transvers-longitudinal plane. Positive angles for lowered right wing0.0
Sensor Horizontal Field of ViewrequiredfloatSensor horizontal field of view 0..180150.00
Sensor Vertical Field of ViewrequiredfloatSensor vertical field of view 0..18055.0
Precision Time StampoptionalintegerUnix epoch time (UTC) in microseconds since 1970-01-01T00:00:00Z1773682200123456
xpropoptionalfloatx position of target within image frame as a proportion 0-1.0, measured from the left edge increasing rightward0.50 is default
ypropoptionalfloaty position of target within image frame as a proportion 0-1.0, measured from the top edge increasing downwards0.50 is default
datasetoptionalstringTerrain elevation dataset to use for calculations, if possibleCOP30 (see list above)
cottypeoptionalstringType value to include CoT messagesa-p-G (see COT specs)
cotuidoptionalstringCoT UID to include in CoT messagesOpenAthenaCore-November01-668
polarOriginoptionalstringOrigin coordinates for use in calculating polar coordiantes of target (lat,lon or MGRS)33.836739,-84.522274 or 16S GC 29277 46817
polarOriginAltoptionalfloatAltitude in meters above MSL242
Responses
http codecontent-typeresponse
200application/jsonJSON object containing detailed geolocation information
400application/jsonLocation error
Returned JSON location Object Key/Value Pairs
key namedata typedescriptionexample
targetLatfloattarget latitude33.8358084243378
targetLonfloattarget longitude-84.5207742586809
targetAltHAEfloattarget altitude309.8363786905352
targetDistanceMetersfloatdistance to target281.2324945266905
predictedCEfloatpredicted error, meters11.521343585384802
TLE_CatStringpredicted error categoryCAT_2
elevationDataModelStringdataset that elevation data came fromCopernicus Global DSM 30m
POST /api/v1/openathena/locationmisb (Return detailed geolocation of pixel within a MISB drone image via provided metadata)
Parameters
nametypedata typedescription
nonerequiredJSON objectJSON object containing image metadata
POST Body JSON Object Key/Value Pairs
key nametypedata typedescriptionexample
NameoptionalstringUnique string for cache lookupmisb-frame-xx
Sensor Latituderequiredfloatlatitude +- decimal degrees33.837470333
Sensor Longituderequiredfloatlongitude +- decimal degrees-84.522598472
Sensor Ellipsoid Heightsemi-requiredfloataltitude in WGS84 Height Above Elipsoid (HAE) meters (see note above)437.920107
Sensor True Altitudesemi-requiredfloataltitude in Above Mean Sea Level (AMSL) meters according to EGM96 Geoid (see note above)101.233
Sensor Relative Azimuth Anglerequiredfloatrelative rotation angle of sensor to platform longitudinal axis. Rotation angle between platform longitudinal axis and camera pointing direction as seen from above the platform.10.0
Sensor Relative Elevation AnglerequiredfloatAngle of sensor to platform longitudinal-transverse plane; negative angles down-5.0
Sensor Relative Roll AnglerequiredfloatRelative roll angle of sensor to aircraft platform. Top of image is zero degrees. Positive angles are clockwise when looking from behind camera5.0
Platform Heading Anglerequiredfloatplatform compass heading in degrees; north is 0 and increasing clockwise156.30
Platform Pitch Anglerequiredfloatplatform pitch angle between longitudinal axis and horizontal plane; positive when platform nose is above horizontal plane5.0
Platform Roll Anglerequiredfloatplatform angle between transverse axis and transvers-longitudinal plane. Positive angles for lowered right wing0.0
Sensor Horizontal Field of ViewrequiredfloatSensor horizontal field of view 0..180150.00
Sensor Vertical Field of ViewrequiredfloatSensor vertical field of view 0..18055.0
Precision Time StampoptionalintegerUnix epoch time (UTC) in microseconds since 1970-01-01T00:00:00Z1773682200123456
xpropoptionalfloatx position of target within image frame as a proportion 0-1.0, measured from the left edge increasing rightward0.50 is default
ypropoptionalfloaty position of target within image frame as a proportion 0-1.0, measured from the top edge increasing downwards0.50 is default
datasetoptionalstringTerrain elevation dataset to use for calculations, if possibleCOP30 (see list above)
cottypeoptionalstringType value to include CoT messagesa-p-G (see COT specs)
cotuidoptionalstringCoT UID to include in CoT messagesOpenAthenaCore-November01-668
polarOriginoptionalstringOrigin coordinates for use in calculating polar coordiantes of target (lat,lon or MGRS)33.836739,-84.522274 or 16S GC 29277 46817
polarOriginAltoptionalfloatAltitude in meters above MSL242
Responses
http codecontent-typeresponse
200application/jsonJSON object containing detailed geolocation information
400application/jsonLocation error
Returned JSON location Object Key/Value Pairs
key namedata typedescription
targetLonfloatlongitude decimal degrees
targetLatfloatlatitude decimal degrees
targetDistanceMetersfloatdistance to target in meters
targetAltHAEfloattarget alt, height in meters above ellipsoid
targetAltEGMfloattarget alt, meters EGM/Geoid/MSL
finalThetafloatfinal target theta, degrees
linearErrorfloatestimate of linear error in meters
predictedCEfloatpredicted circular error in meters
TLE_Catstringpredicted circular error category
imageSelectedProportionYfloattarget proportion in image, y-axis 0.0-1.0
imageSelectedProportionXfloattarget proportion in image, x-axis 0.0-1.0
imageDateTimeUTCstringUTC date/time image taken
pitchOffsetDegSelectedPointfloattarget pitch offset, degrees
finalAZfloatfinal target azimuth, degrees
digitalZoomRatiofloatzoom factor
calculationDateTimeUTCstringUTC date/time of calculation
azimuthOffsetUserCorrectionfloatuser azimuth correction, degrees
cameraRollAngleDegfloatcamera roll, degrees
droneElevationHAEfloatdrone alt in meters, height above ellipsoid
droneLatitudefloatdecimal degrees
droneLongitudefloatlongitude decimal degrees
cameraSlantAngleDegfloatcamera theta in degrees
yawOffsetDegSelectedPointfloattarget azimuth offset, degrees
imageFilenamestringimage filename if present
targetUTMStringtarget location in UTM coordinates
droneVerticalDatumStringvertical datum drone reports altitude
terrainAltUnderDroneHAEfloatterrain alt in meters, height above ellipsoid
demFilenameStringfilename of digital elevation model
elevationDataModelStringdataset that elevation data came from
cotuidStringif CoT was sent, message UID value
cottypeStringif CoT was sent, event type value
polarStatusStringif polar coord requested, "OK" or error description
polarOriginStringif polar coord requested, polar origin
polarOriginAltfloatif polar coord requested, polar origin alt (AMSL)
polarSlangRangeMetersfloatif polar coord requested, range from origin to target (meters)
polarElevationAngleDegfloatif polar coord requested, elev angle (deg) from origin to target
polarElevationDeltafloatif polar coord requested, elev delta from origin to target (meters)
polarGridAzMradfloatif polar coord requested, AZ in milliradians (0–≈6283 mrad)
polarGridAzMils6400floatif polar coord requested, AZ in NATO mils (0–6400) relative to grid north
polarGroundRangeMetersfloatif polar coord requested, ground range from origin to target (meters)

Miscellaneous

Show
GET /api/v1/openathena/up (Simple query to test if host is up and API key is valid)
Parameters

None

Responses
http codecontent-typeresponse
http codecontent-typeresponse
-----------------------------------------------------------------------------------
200application/jsonServer status; key is status
405application/jsonPermission denied

OpenAthena Core Administration

Show

Queries in this category require administration permissions be assigned to the API key you use. API keys are accessible via the apikeys APIs. CursorOnTarget messages can be sent to Team Awareness Kit (TAK) hosts which are configured via the takhosts APIs.

GET /api/v1/openathena/admin/status (Get the status of the server and container it is running within)
Parameters

None

Responses
http codecontent-typeresponse
200application/jsonServer status; key is status
405application/jsonPermission denied
GET /api/v1/openathena/admin/stats (Get server statistics and counters)
Parameters

None

Responses
http codecontent-typeresponse
200application/jsonJSON object containing stats and counters
405application/jsonPermission denied
POST /api/v1/openathena/admin/stats/reset (Reset server statistics and counters)
Parameters

None

Responses
http codecontent-typeresponse
200application/jsonN/A
405application/jsonPermission denied
GET /api/v1/openathena/admin/config (Configuration parameters)
Parameters

None

Responses
http codecontent-typeresponse
200application/jsonJSON object containing configuration parameters
405application/jsonPermission denied
GET /api/v1/openathena/admin/otapikey (Get the API key that Openathena Core uses for downloading DEMs from https://opentopography.org)
Parameters

None

Responses
http codecontent-typeresponse
200application/jsonJSON object containing OpenTopography API key; key is otapikey
405application/jsonPermission denied
PUT /api/v1/openathena/admin/otapikey (Set the API key that OpenAthena Core uses for downloading DEMs from https://opentopography.org)
Parameters

None

PUT Body JSON Object Key/Value Pairs
key nametypedata typedescriptionexample
otapikeyrequiredhex stringNew OpenTopography API key to use123456789abcdefgh
Responses
http codecontent-typeresponse
200application/jsonJSON object containing result
405application/jsonPermission denied
GET /api/v1/openathena/admin/apikeys (Get list of API keys that this server will accept.)
Parameters

None

Responses
http codecontent-typeresponse
200application/jsonJSON array of API keys that this server accepts; key is `apiKeys
405application/jsonPermission denied
PUT /api/v1/openathena/admin/apikeys (Modify an existing API key for use with this OpenAthena Core server; modified key will be written to file. The key itself cannot be modified; only the entry fields can be)
Parameters

None

PUT Body JSON Object Key/Value Pairs
key nametypedata typedescriptionexample
apikeystrrequiredhex stringExisting OA Core API key to reference123456789abcdefgh
permissionrequiredstringPermissions: 'admin' or 'user'user
organizationrequiredstringName of organizationacme.com
contactrequiredstringContact infocoyote@acme.com
Responses
http codecontent-typeresponse
200application/jsonJSON object containing result; entry modified and written to file
405application/jsonPermission denied
POST /api/v1/openathena/admin/apikeys (Create new API key for use with this OpenAthena Core server; new key will be written to file)
Parameters

None

POST Body JSON Object Key/Value Pairs
key nametypedata typedescriptionexample
apikeystrrequiredhex stringNew OA Core API key to use123456789abcdefgh
permissionrequiredstringPermissions: 'admin' or 'user'user
organizationrequiredstringName of organizationacme.com
contactrequiredstringContact infocoyote@acme.com
Responses
http codecontent-typeresponse
201application/jsonJSON object containing result; new entry written to file
400application/jsonBad request; often invalid parameters
405application/jsonPermission denied
DELETE /api/v1/openathena/admin/apikeys (Delete an existing API key from the OpenAthena Core key list)
Parameters

None

DELETE Body JSON Object Key/Value Pairs
key nametypedata typedescriptionexample
apikeystrrequiredhex stringExisting OA Core API key to delete123456789abcdefgh
Responses
http codecontent-typeresponse
200application/jsonJSONobject containing result; API key entry deleted and remaining keys written to file
404application/jsonAPI key not found
405application/jsonPermission denied
PUT /api/v1/openathena/admin/refreshdemcache (Force DEM cache refresh and return date/time of cache refresh)
Parameters

None

Responses
http codecontent-typeresponse
200application/jsonJSON object containing string date/time of cache refresh; key is demCacheDate
404application/jsonInvalid DEM query
GET /api/v1/openathena/admin/defaultelevationdataset (Get the default elevation dataset Openathena Core will use when downloading DEMs from https://opentopography.org)
Parameters

None

Responses
http codecontent-typeresponse
200application/jsonJSON object containing default elevation dataset (see dataset valid values above); key is value
405application/jsonPermission denied
PUT /api/v1/openathena/admin/defaultelevationdataset (Set the default elevation dataset OpenAthena Core will use when downloading DEMs from https://opentopography.org)
Parameters

None

PUT Body JSON Object Key/Value Pairs
key nametypedata typedescriptionexample
valuerequiredstringNew default elevation dataset (see dataset valid values above)COP30
Responses
http codecontent-typeresponse
200application/jsonJSON object containing result
405application/jsonPermission denied
GET /api/v1/openathena/admin/debug (Get the debug flag value)
Parameters

None

Responses
http codecontent-typeresponse
200application/jsonJSON object containing boolean value; key is value
405application/jsonPermission denied
PUT /api/v1/openathena/admin/debug (Set debug flag value)
Parameters

None

PUT Body JSON Object Key/Value Pairs
key nametypedata typedescriptionexample
valuerequiredbooleanNew debug flag valuefalse
Responses
http codecontent-typeresponse
200application/jsonJSON object containing result
405application/jsonPermission denied
GET /api/v1/openathena/admin/verbose (Get the verbose flag value)
Parameters

None

Responses
http codecontent-typeresponse
200application/jsonJSON object containing boolean value; key is value
405application/jsonPermission denied
PUT /api/v1/openathena/admin/verbose (Set verbose flag value)
Parameters

None

PUT Body JSON Object Key/Value Pairs
key nametypedata typedescriptionexample
valuerequiredbooleanNew verbose flag valuefalse
Responses
http codecontent-typeresponse
200application/jsonJSON object containing result
405application/jsonPermission denied
GET /api/v1/openathena/admin/autodemdownload (Get the flag indicating if OpenAthena Core should automatically download DEM data from OpenTopography.org)
Parameters

None

Responses
http codecontent-typeresponse
200application/jsonJSON object containing boolean value
405application/jsonPermission denied
PUT /api/v1/openathena/admin/autodemdownload (Set flag indicating if OpenAthena Core should automatically download DEM data from OpenTopography.org)
Parameters

None

PUT Body JSON Object Key/Value Pairs
key nametypedata typedescriptionexample
valuerequiredbooleanNew autodemdownload flag valuetrue
Responses
http codecontent-typeresponse
200application/jsonJSON object containing result
405application/jsonPermission Drone Imagesdenied
GET /api/v1/openathena/admin/sendcot (Get the flag indicating if OpenAthena Core should automatically send CursorOnTarget TAK messages)
Parameters

None

Responses
http codecontent-typeresponse
200application/jsonJSON object containing boolean value
405application/jsonPermission denied
PUT /api/v1/openathena/admin/sendcot (Set flag indicating if OpenAthena Core should automatically send CursorOnTarget TAK messages)
Parameters

None

PUT Body JSON Object Key/Value Pairs
key nametypedata typedescriptionexample
valuerequiredbooleanNew sendcot flag valuetrue
Responses
http codecontent-typeresponse
200application/jsonJSON object containing result
405application/jsonPermission denied
GET /api/v1/openathena/admin/demwidth (The default width and height, in meters, of digital elevation model data to download)
Parameters

None

Responses
http codecontent-typeresponse
200application/jsonJSON object containing int value
405application/jsonPermission denied
PUT /api/v1/openathena/admin/demwidth (Set the default width and height, in meters, of digital elevation data to download)
Parameters

None

PUT Body JSON Object Key/Value Pairs
key nametypedata typedescriptionexample
valuerequiredintegerWidth,height in meters20000
Responses
http codecontent-typeresponse
200application/jsonJSON object containing result
405application/jsonPermission denied
PUT /api/v1/openathena/admin/writeproperties (Write properties out to file specified via `-c` command-line option.)
Parameters

None

Responses
http codecontent-typeresponse
200application/jsonJSON object containing string date/time of write; key is propertiesDate
404application/jsonInvalid query
PUT /api/v1/openathena/admin/writeapikeys (Write API keys out to file specified via `-k` command-line option.)
Parameters

None

Responses
http codecontent-typeresponse
200application/jsonJSON object containing string date/time of write; key is keysDate
404application/jsonInvalid query
GET /api/v1/openathena/admin/takhosts (Get the list of TAK hosts that CursorOnTarget messages are sent to.)
Parameters

None

Responses
http codecontent-typeresponse
200application/jsonJSON array of TAK host entries; key is takhosts
405application/jsonPermission denied
GET /api/v1/openathena/admin/takhosts/{key} (Get the TAK host, from the server's table of TAK hosts, with matching key.)
Parameters
nametypedata typedescription
{key}requiredstringkey value for the desired TAK host entry
Responses
GET /api/v1/openathena/admin/takhosts/count (Get the count of TAK hosts that this server sends CursorOnTarget messages to.)
Parameters

None

Responses
http codecontent-typeresponse
200application/jsonJSON object containing number of entries; key is count
404application/jsonInvalid drone query
DELETE /api/v1/openathena/admin/takhosts (Delete this entry from the server's table of TAK hosts.)
Parameters

None

DELETE Body JSON Object Key/Value Pairs
key nametypedata typedescriptionexample
cottakkeyrequiredstringKey for TAK host entry to delete4
Responses
http codecontent-typeresponse
200application/jsonJSONobject containing result
404application/jsonTAKhost entry not found
405application/jsonPermission denied
POST /api/v1/openathena/admin/takhosts (Create a new entry in this server's table of TAK hosts or update an existing entry.)
Parameters

None

POST Body JSON Object Key/Value Pairs
key nametypedata typedescriptionexample
cottakkeyrequiredstringUnique key to use for entry4
cottakprotorequiredudplocaltcp
cottakhostrequiredstringHostname or IP addressargustak.com
cottakportrequiredintegerProtocol port number8080
cottaksslclientkeystorerequired (cottakproto=ssl)stringFilename of SSL client keystorecert.p12
cottaksslclientkeystorepasswordrequired (cottakproto=ssl)stringPassword for client keystorechangeit
cottaksslclientkeypasswordrequired (cottakproto=ssl)stringPassword for client keychangeme
cottakssltrustkeystorerequired (cottakproto=ssl)stringFilename of SSL trust keystoretstore.p12
cottakssltrustkeystorepasswordrequired (cottakproto=ssl)stringPassword for trust keystorechangemetoo
Responses
http codecontent-typeresponse
201application/jsonJSONobject containing result; TAK host created
400application/jsonBad request due to invalid TAK host parameters

Examples

Show

Examples API calls using curl in bash or derivatives like zsh. (csh invocation requires backslashes to escape newline characters. ) Care must be taken with URLs and strings as shells differ on how to escape special characters like & and =.

Get a list of the DEM cache entries:

curl 'http://localhost:8000/api/v1/openathena/dem?apikey=YOUR_API_KEY_HERE'

Search for DJI FC2204 in the drone info database:

curl 'http://localhost:8000/api/v1/openathena/drone?apikey=YOUR_API_KEY_HERE&search=djifc2204'

Search for Teal in the drone info database:

curl 'http://localhost:8000/api/v1/openathena/drone?apikey=YOUR_API_KEY_HERE&search=teledyne'

Search for fisheye lens drones in the drone info database:

curl 'http://localhost:8000/api/v1/openathena/drone/?search=fisheye&apikey=YOUR_API_KEY_HERE'

Get a count of the number of entries in the Drone database.

curl 'http://localhost:8000/api/v1/openathena/drone/count?apikey=YOUR_API_KEY_HERE'

Download a DEM for a 15000 square meter area centered around GPS coordinates 33.829647,-84.518281

curl -X POST 'http://localhost:8000/api/v1/openathena/dem?lat=33.829647&lon=-84.518281&len=15000&apikey=YOUR_API_KEY_HERE'

The example below for a locationsimple request resolves a location for a pixel in an image with the following metadata. The pixel location is proportionally specified as a proportion of the image (0-1.0,0-1.0) with the upper left corner being (0,0) and x increases rightwards while y increases downwards. For example, (0.5,0.5) is the image center and (1.0,1.0) is the bottom right corner. The image itself does not need to be uploaded -- merely the necessary metadata. The documentation as to the exact format of the metadata will be provided. It uses the simple location request that provides simplified geolocation data on return.

# basic locationsimple calc. request
curl -X POST 'http://localhost:8000/api/v1/openathena/locationsimple?apikey=YOUR_API_KEY_HERE' -H "Content-Type: application/json" -d '
{"GPS Latitude" : "33.837470333333336",
"GPS Longitude" : "-84.52259847222223",
"Focal Length" : "6.72",
"ImageWidth" : "4032",
"ImageHeight" : "3024",
"Camera:Roll" : "0.0",
"Digital Zoom Ratio" : "1.0",
"GPS Altitude" : "437.920107",
"drone:GimbalPitchDegree" : "41.40",
"drone:GimbalYawDegree" : "156.30",
"tiff:Make" : "DJI",
"tiff:Model" : "FC8482",
"xprop" : "0.25",
"yprop" : "0.25",
}'

This query produces the following output

{
  "location": {
    "TLE_Cat": "CAT_2",
    "targetDistanceMeters": 538.4465179534826,
    "predictedCE": 11.312282733045901,
    "targetLon": -84.30760707719494,
    "targetAltHAE": 289.11412578910085,
    "elevationDataModel": "Copernicus Global DSM 30m",
    "targetLat": 33.87054790517167
  }
}

The example below is for a locationsimple calculation request using a specific DEM dataset. See dataset parameter values in section Analyzing Drone Images for a list of available datasets.

# LocationSimple with specific DEM dataset
curl -X POST 'http://localhost:8000/api/v1/openathena/locationsimple?apikey=YOUR_API_KEY_HERE' -H "Content-Type: application/json" -d '
{"Name": "uniquename",
"GPS Latitude" : "33.873739",
"GPS Longitude" : "-84.311059",
"Focal Length" : "6.72",
"ImageWidth" :  "4032",
"ImageHeight" : "3024",
"Camera:Roll" : "0.0",
"Digital Zoom Ratio" : "1.0",
"GPS Altitude" : "537.920107",
"drone:GimbalPitchDegree" : "41.40",
"drone:GimbalYawDegree" : "156.30",
"tiff:Make" : "DJI",
"tiff:Model" : "FC8482",
"xprop" : "0.25",
"yprop" : "0.25",
"dataset" : "3dep"
}'

The query produces the following output:

{
  "location": {
    "TLE_Cat": "CAT_2",
    "targetDistanceMeters": 547.4541272533297,
    "predictedCE": 11.312282733045901,
    "targetLon": -84.30754933250704,
    "targetAltHAE": 284.9516058069391,
    "elevationDataModel": "USGS 1/3 arc-second Digital Elevation Model 10m",
    "targetLat": 33.87049452266936
  }
}

The example below is for a locationsimple calculation request using custom camera intrinsics (camera calibration) values. This is useful for performing calculation requests for drone camera make+models with calibration values not yet in OpenAthena's droneModels.json database.

# locationsimple with a custom camera
curl -X POST 'http://localhost:8000/api/v1/openathena/locationsimple?apikey=YOUR_API_KEY_HERE' -H "Content-Type: application/json" -d '
{"Name": "uniquename",
"GPS Latitude" : "33.873739",
"GPS Longitude" : "-84.311059",
"Focal Length" : "6.72",
"ImageWidth" :  "4032",
"ImageHeight" : "3024",
"Camera:Roll" : "0.0",
"Digital Zoom Ratio" : "1.0",
"GPS Altitude" : "537.920107",
"drone:GimbalPitchDegree" : "41.40",
"drone:GimbalYawDegree" : "156.30",
"tiff:Make" : "CUSTOM",
"tiff:Model" : "DRONEMODEL",
"isThermal" : "false",
"widthPixels": "4032",
"heightPixels": "3024",
"ccdWidthMMPerPixel": "0.002225663181466/1.0",
"ccdHeightMMPerPixel": "0.002221383424304/1.0",
"lensType": "perspective",
"radialR1": "0.14007904012723732",
"radialR2": "-0.39797006527367595",
"radialR3": "0.4837999442176295",
"tangentialT1": "-0.0033106377888616196",
"tangentialT2": "0.002201030939220962",
"xprop" : "0.25",
"yprop" : "0.25"
}'

This query produces the following output

{
  "location": {
    "TLE_Cat": "CAT_2",
    "targetDistanceMeters": 538.4465179534826,
    "predictedCE": 11.312282733045901,
    "targetLon": -84.30760707719494,
    "targetAltHAE": 289.11412578910085,
    "elevationDataModel": "Copernicus Global DSM 30m",
    "targetLat": 33.87054790517167
  }
}

The example below for a location calcuation request resolves a location for a pixel in an image with the following metadata. The pixel location is proportionally specified as a proportion of the image (0-1.0,0-1.0) with the upper left corner being (0,0) and x increases rightwards while y increases downwards. For example, (0.5,0.5) is the image center and (1.0,1.0) is the bottom right corner. The image itself does not need to be uploaded -- merely the necessary metadata. The location request provides additional, more verbose output compared to locationsimple

# location (verbose) request
curl -X POST 'http://localhost:8000/api/v1/openathena/location?apikey=YOUR_API_KEY_HERE' -H "Content-Type: application/json" -d '
{"Name": "uniquename",
"GPS Latitude" : "33.837470333333336",
"GPS Longitude" : "-84.52259847222223",
"Focal Length" : "6.72",
"Focal Length 35" : "24.0",
"ImageWidth" :	"4032",
"ImageHeight" :	"3024",
"Camera:Roll" :	"0.0",
"Digital Zoom Ratio" : "1.0",
"GPS Altitude" : "437.920107",
"drone:GimbalPitchDegree" : "41.40",
"drone:GimbalYawDegree" : "156.30",
"tiff:Make" : "DJI",
"tiff:Model" : "FC8482",
"Date/Time Original" : "2024:06:21 09:15:00",
"xprop" : "0.25",
"yprop" : "0.25",
}'

This query produces the following output:

{
  "location": {
    "gimbalYawDegree": 156.3,
    "targetDistanceMeters": 281.2324945266905,
    "linearError": 5.9,
    "pitchOffsetDegSelectedPoint": 14.283329579602897,
    "imageDateTimeUTC": "2024-06-21T13:15:00Z",
    "imageSelectedProportionY": 0.25,
    "imageSelectedProportionX": 0.25,
    "targetCK42GKLat": 3748425.64455343,
    "targetAltHAE": 309.8363786905352,
    "finalAZ": 137.6430348057406,
    "digitalZoomRatio": 1,
    "calculationDateTimeUTC": "2024-09-03T00:46:46Z",
    "azimuthOffsetUserCorrection": 0,
    "slantRange": 281.2324945266905,
    "targetMGRS": "16SGC2941846715",
    "cameraRollAngleDeg": 0,
    "isCameraModelRecognized": "true",
    "droneElevationHAE": 437.920107,
    "droneLongitude": -84.52259847222223,
    "targetCK42Lon": -84.52088576188001,
    "targetLon": -84.5207742586809,
    "model": "fc8482",
    "make": "dji",
    "lensType": "perspective",
    "targetAltEGM": 279.16968582042205,
    "f_x": 3019.3246480906096,
    "imageWidth": 4032,
    "f_y": 3013.5185649268224,
    "targetCK42Lat": 33.83710905735875,
    "finalTheta": 27.1166704203971,
    "focalLength35": 24,
    "droneLatitude": 33.837470333333336,
    "targetLat": 33.8358084243378,
    "imageHeight": 3024,
    "cameraSlantAngleDeg": 41.4,
    "TLE_Cat": "CAT_2",
    "yawOffsetDegSelectedPoint": -18.656965194259424,
    "predictedCE": 11.521343585384802,
    "gimbalPitchDegree": 41.4,
    "targetCK42GKLon": 46729499.953724496,
    "targetUTM": "16 N 729418.1 3746715.77",
    "focalLength": 6.72
  }
}

Show

Unless stipulated otherwise by express written agreement with Theta Informatics LLC:

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.




© 2026 Theta Informatics LLC

https://theta.limited

CAGE: 9Q433

SAM.gov UEI: KZ7PCDTMVRD5

DUNS#: 129898542