Parse and encode CCSDS Conjunction Data Messages (CDM).
Supports both the KVN (Keyword=Value Notation) and XML formats per CCSDS 508.0-B-1. CDMs describe a predicted close approach between two space objects, including states, covariances, and collision probability.
parse/1 auto-detects the format based on the first non-whitespace
character: a leading < is treated as XML, anything else as KVN.
Examples
{:ok, cdm} = Orbis.CCSDS.CDM.parse(kvn_string)
cdm.tca # ~U[2010-03-13 22:37:52.618Z]
cdm.miss_distance_m # 715.0
cdm.collision_probability # 4.835e-05
# KVN output (default)
kvn = Orbis.CCSDS.CDM.encode(cdm)
# XML output
xml = Orbis.CCSDS.CDM.encode(cdm, format: :xml)
# Round-trip through XML
{:ok, cdm2} = Orbis.CCSDS.CDM.parse(xml)
Summary
Functions
Encode a CDM.
Encode a CDM to KVN format explicitly.
Encode a CDM to XML format explicitly.
Parse a CDM in either KVN or XML format.
Parse a CDM in KVN format explicitly. Skips format auto-detection.
Parse a CDM in XML format explicitly. Skips format auto-detection.
Convert a parsed CDM to inputs for Orbis.Collision.probability/1.
Types
@type t() :: %Orbis.CCSDS.CDM{ collision_probability: float() | nil, collision_probability_method: String.t() | nil, creation_date: DateTime.t() | nil, hard_body_radius_m: float() | nil, message_id: String.t() | nil, miss_distance_m: float() | nil, object1: Orbis.CCSDS.CDM.ObjectData.t() | nil, object2: Orbis.CCSDS.CDM.ObjectData.t() | nil, originator: String.t() | nil, relative_speed_m_s: float() | nil, tca: DateTime.t() | nil }
Functions
Encode a CDM.
Options
:format—:kvn(default) or:xml
Encode a CDM to KVN format explicitly.
Encode a CDM to XML format explicitly.
Produces a document matching the CCSDS 508.0-B-1 CDM XML schema's top-level shape (cdm > header/body > segment > metadata/data). This is the canonical XML form used for inter-system exchange alongside KVN.
Parse a CDM in either KVN or XML format.
Format is auto-detected from the first non-whitespace character: <
routes to the XML parser, anything else to the KVN parser.
Returns {:ok, %CDM{}} or {:error, reason}.
Parse a CDM in KVN format explicitly. Skips format auto-detection.
Parse a CDM in XML format explicitly. Skips format auto-detection.
Convert a parsed CDM to inputs for Orbis.Collision.probability/1.