Geospatial SDK

Herigonius Crater, NASA Lunar Reconnaissance Orbiter, Frame M150741485

Every product developed by Terminus is based on our Geospatial Software Development Kit. This SDK is designed to empower users to build state-of-the-art Geospatial Image-Processing applications without having to utilize dozens of complex dependencies.

C++ developers who write geospatial applications often need to use libraries such as: GDAL, OpenCV, Proj, CUDA, and PDAL. These dependencies require dozens of other toolchains and create a complex web of static and dynamic parts. With our SDK, you can build high-performance Computer-Vision and Image-Processing applications with built-in support and compliance for common geospatial data formats.

Core Capabilities

Terminus provides interfaces for models ranging from basic pinhole cameras, orthographic models, Rational Polynomial Coefficients, and user-defined. Interfaces are designed to allow for efficient conversion between pixel and world coordinates.


Additionally, APIs are being developed to perform bundle adjustment and numerically complex geometric solvers.

Camera API

Terminus APIs are designed to handle a variety of coordinate systems. Fundamental types include Geographic/Spherical and Cartesian systems. Specific examples Geodetic, UTM/UPS/MGRS, Albers Conic, ECEF, ECI J2000, and more. Essential components such as Geoids, Datums, and Ellipsoid models are integrated to ensure you can use built-in types as well as extend the API for custom types. Our goal is to always support NASA PDS and planetary datums.

Coordinate API

This is the backbone of the Terminus SDK. Our imagery types focus not only on the pixel data, but also on the metadata. Images can be tied to camera models, projections, metadata, and more. Our API also has zero-copy hooks to allow interacting with OpenCV.

Image API

Given our need for high-performance, we are obsessed with making it easy to read, write, and transfer data. Beyond file formats, we provide an IPC library to allow transferring many Terminus data-types using ZMQ and eventually MPI using RDMA. Most, if not all, Terminus types can be trivially serialized back and forth for efficient and effective IO. We use Protobuf to act as our Interface Description Language (IDL) to enforce interoperability.

IO API

All major Computer Vision and Image Processing operations start and end with Linear Algebra. We base many of our operations on either Eigen or OpenCV. Our common interface is designed for customers to use their own base libraries if they need higher precision or speed.

Example tasks we perform, which are included in the SDK, include Singular Value Decomposition, LU/QR Factorization, and Levenberg Marquardt.

Our Geometry API makes it easy to create, evaluate, and write complex shape data using our Coordinate API and generate KMLs and other essential visualizable results.

Math API

Our Geospatial SDK has built-in support for standard DEM raster types such as DTED/SRTM and single-channel GeoTiffs. We will support ellipsoidal and orthometric conversions, fallback and prioritization for multiple data sources, DEM mesh generation, and callbacks for intermediate processing operations.

Terrain API

Security-Conscious

Each of our products, plus our dependencies, come with SonarQube scans and mitigation notes required to run our applications in a classified or restricted environment. We cannot promise we will match every security consideration, but we do promise that you will be aware, informed, and able to measure the risk of our software.

Additionally, our applications and deliverables are tested in minimal Centos Docker containers to allow for secure and isolated environments. Currently we lack funding and access to the full DoD RHEL IronBank image baselines, however we are confident we can comfortably operate within a restrictive environment

Specifications

Coming Soon