Interoperability exports and imports
A run writes a result document, a chart and a report. --export also writes the
scenario's geometry, or its synthesised signal, in the formats other tools already read:
a globe viewer, a desktop map, a geographic information system (GIS), a mission-analysis
package or a software-defined-radio (SDR) tool. Nothing here reads a clock or the
network, and no export carries a generation timestamp, so the same scenario gives
byte-identical files on every run.
kshana scenarios/jamming-demo.toml --export czml # one format
kshana scenarios/jamming-demo.toml --export kml --export geojson
kshana scenarios/jamming-demo.toml --export all # every format that applies
kshana scenarios/jamming-demo.toml --export list # which apply, and why not, without running
kshana scenarios/terrain-nav.toml --import-route route.geojson --export geojson
Files are written next to the scenario, named like the result document:
jamming-demo.czml, jamming-demo.kml, jamming-demo.geojson, one
jamming-demo.<object>.e per moving object (or jamming-demo.e when there is one), and
the pair l-band-waterfall-jamming.sigmf-meta / .sigmf-data. With --study-name they
take the study's name instead, as the other outputs do.
A format named explicitly that does not apply to the scenario is an error that prints the
reason; under all the reason is printed and the format skipped. The library entry
points are kshana::interop::export(src, format), kshana::interop::plan(src) and
kshana::interop::geojson::apply_route(src, geojson); they take the scenario text and
return bytes, touching no file, so they run in the WebAssembly build too. The Model
Context Protocol (MCP) server serves the same three as the tools export_interop,
list_export_formats and import_route (see mcp/kshana-mcp/README.md).
Code: src/interop/ (scene.rs builds one geometric description of the scenario,
czml.rs, kml.rs, geojson.rs and stk.rs write it), src/sigmf.rs and
src/spectrum.rs for the signal. Tests: tests/interop_formats.rs.
Formats#
| Format | What it is | Specification followed |
|---|---|---|
| CZML | Cesium Language: a JSON (JavaScript Object Notation) array of time-tagged packets, read by CesiumJS | https://github.com/AnalyticalGraphicsInc/czml-writer/wiki/CZML-Structure |
| KML | Keyhole Markup Language 2.2, an Open Geospatial Consortium (OGC) standard, read by Google Earth and most GIS tools; time-tagged tracks use the Google extension gx:Track |
https://www.ogc.org/standards/kml/ (schema namespace http://www.opengis.net/kml/2.2; extension namespace http://www.google.com/kml/ext/2.2) |
| GeoJSON | geographic JSON, Internet Engineering Task Force (IETF) Request for Comments (RFC) 7946 | https://www.rfc-editor.org/rfc/rfc7946.html |
STK .e |
the ephemeris file of Ansys Systems Tool Kit (STK), time-position-velocity form EphemerisTimePosVel |
https://help.agi.com/stk/Content/stk/importfiles-02.htm |
| SigMF | Signal Metadata Format: a JSON metadata file and a raw file of complex in-phase and quadrature (IQ) samples | https://sigmf.org/ |
What each file holds#
Every geospatial format is written from the same scene, so they cannot disagree about where anything is. A scene has up to four kinds of object:
- Moving objects — satellites, and a user platform when it moves — sampled on the scenario's own time grid with the propagators the kind's run uses.
- Fixed sites — a receiver, a ground station, a jammer, or the origin of a local navigation frame.
- Untimed tracks — the waypoints a terrain, gravity or combined alternative positioning, navigation and timing (PNT) kind flies. These kinds have no time axis, so the tracks carry none.
- Jammer footprints — for the
jammingkind, two circles about the jammer: the ground range inside which a satellite at the zenith (the strongest) falls below the tracking threshold, so every satellite is lost, and the range inside which a satellite at the elevation mask (the weakest) does, so tracking starts to fail. Both come from the kind's own link equations (Kaplan and Hegarty, Understanding GPS/GNSS (Global Positioning System / Global Navigation Satellite Systems), 3rd ed., §9.4) with the jammer at the receiver's horizon and free-space loss, and the test suite checks that the effective carrier-to-noise density ratio at each radius equals the threshold to 1e-6 dB. The circle is drawn on a sphere of the Earth's mean radius.
CZML#
The first packet is the document packet ("id": "document", "version": "1.0") with a
clock spanning the time grid. Each moving object is a packet whose position has an
ISO 8601 (International Organization for Standardization date and time format) UTC
(Coordinated Universal Time) epoch, referenceFrame "INERTIAL", and cartesian
samples [t, x, y, z, ...]: seconds after the epoch, metres in the Geocentric Celestial
Reference System (GCRS). CesiumJS takes INERTIAL as the International Celestial
Reference Frame (ICRF), whose axes the GCRS shares. Fixed sites and footprint centres are
constant Earth-fixed cartesian positions with referenceFrame "FIXED". A footprint is
an ellipse with both semi-axes equal to its radius; an untimed track a ground-clamped
polyline. Each packet's description states the frame again in words.
KML#
One <Document> with a <Folder> per object class. A moving object is a <Placemark>
holding a <gx:Track>: one <when> per sample (ISO 8601 UTC), then one <gx:coord> per
sample (longitude, latitude, height). Sites are <Point>s, footprints <Polygon>s whose
ring is closed and counter-clockwise, untimed tracks <LineString>s. Coordinates are
World Geodetic System 1984 (WGS 84) longitude and latitude in decimal degrees and height
in metres above the WGS 84 ellipsoid, written with altitudeMode absolute. KML reads
absolute as height above mean sea level; the difference, the geoid undulation, is
within about ±110 m and is not applied. The document's description says so.
GeoJSON#
One FeatureCollection. Positions are [longitude, latitude] or
[longitude, latitude, height] — longitude first, as RFC 7946 requires — in WGS 84
degrees, with height in metres above the ellipsoid. A moving object is a LineString
with a times_utc property holding one ISO 8601 time per position; a track that crosses
the 180° meridian is written as a MultiLineString cut there, as RFC 7946 §3.1.9 asks
(the crossing point is interpolated, and times_utc then lists the original samples
only). Sites are Points, footprints Polygons with a closed counter-clockwise
exterior ring (§3.1.6), untimed tracks LineStrings. Every feature has a units
property naming the unit of each numeric member.
STK .e#
One file per moving object, since an STK ephemeris describes one vehicle. The header
gives NumberOfEphemerisPoints (equal to the number of data rows), ScenarioEpoch (UTC,
d Mon yyyy hh:mm:ss.ssssss), InterpolationMethod Lagrange with
InterpolationSamplesM1 5, CentralBody Earth, CoordinateSystem ICRF and
DistanceUnit Meters; the rows under EphemerisTimePosVel are seconds after the epoch,
position in metres and velocity in metres per second, in the GCRS. A scene with only fixed
sites or untimed tracks writes no .e file: a fixed point is an STK Facility, not an
ephemeris. An id that is not a plain file-name part (a constellation shell and a satellite,
Pulsar inclined/S1-0163) is written with every other character as -, numbered if two
ids then coincide.
The leo-pass kind and the leo-pnt-chain kind (through its [pass] stage) export every
low Earth orbit (LEO) satellite and the user from the kind's own propagators and time grid.
The kind works in ECI0, the Earth-centred inertial frame aligned with the Earth-fixed frame
at the epoch; each sample is turned into the Earth-fixed frame at its own time by the kind's
Earth rotation and from there into the GCRS through the true equator, mean equinox (TEME)
frame that the Simplified General Perturbations 4 (SGP4) propagator outputs in, at that
instant, with UT1 (Universal Time, the Earth-rotation angle) taken equal to UTC and polar
motion neglected, as for the other exports. The other LEO
kinds state why a format does not apply (the table below).
Campaigns#
A campaign exports each member scenario that has geometry as its own file set, the
member's label inserted before the format suffix: every phase run (<phase>, or
<phase>-<k> when the phase has several runs), the sweep's base scenario (sweep), the
Monte Carlo scenario (monte-carlo) and each composed member (its label, with the shared
values it binds written in). campaign-shared-jammer-sea-road.toml --export kml writes
campaign-shared-jammer-sea-road.ship-strait.kml and
campaign-shared-jammer-sea-road.car-coast-road.kml. A member identical to an earlier one
is written once, and values a campaign applies at run time (hand-offs, sweep values, seeds)
are not in the exported member. A format applies to a campaign when it applies to any
member; otherwise the reason is note 4 of the table below. See
CAMPAIGNS.md.
SigMF#
The spectrum kind's [iq] snapshot — the modelled L band drawn as complex samples at
one instant — as a .sigmf-meta / .sigmf-data pair, in the data type [iq] names
(cf32_le or ci16_le). It is the same recording the run writes and reads back for its
own consistency check: the exported metadata equals the iq.sigmf.meta block of the
result document, and the data file has the iq.sigmf.data_bytes length. The writer is
src/sigmf.rs, the module the spectrum kind already used; nothing is duplicated.
Frames and time#
- The engine propagates in TEME (true equator, mean equinox of date), its native frame.
Moving objects are rotated to the GCRS by the
nutation::teme_to_gcrsreduction (IAU 2006 precession and IAU 2000B nutation, where IAU is the International Astronomical Union), which reproduces Vallado's published TEME-to-GCRF (Geocentric Celestial Reference Frame) example to 0.11 m, for CZML and STK, and to the Earth-fixed frame byframes::teme_to_eceffor KML and GeoJSON. The Earth-fixed rotation is the Greenwich mean sidereal angle with UT1 taken equal to UTC and polar motion not applied — the same reduction the SP3 (Standard Product 3) export uses. At a GPS orbit radius the neglected UT1−UTC of up to 0.9 s moves a satellite's longitude by up to about 1.7 km; ground sites are unaffected, since they are given in latitude and longitude. - The
ephemeriskind is the exception: its engine output already carries GCRS and Earth-fixed positions (with the scenario's UT1−UTC and polar motion, or a real International Earth Rotation and Reference Systems Service (IERS) series), and those are written unchanged. - Every time is UTC. Leap seconds are not modelled: an offset across a leap second is counted as if every day had 86 400 s, as the engine's time grids count.
- The epoch of
t = 0is the one the kind's run uses, and each file names it: theorbitkind'sepoch; when it is absent, the earliest epoch the satellites' own data carry (a two-line element set (TLE) epoch, a broadcast ephemeris's reference time, an SP3 file's start), and 2000-01-01T00:00:00Z only when no satellite carries one (Keplerian elements). The SP3 and OEM (Orbit Ephemeris Message) exports keep 2000-01-01T00:00:00Z for a scenario without anepoch, so for such a scenario their dates differ from these files'. With no scenarioepoch, each satellite that carries its own epoch is rotated into the GCRS and Earth-fixed frames at its own instant (its epoch plust), since that is the date its TEME position belongs to; where the satellites' epochs differ, the shared time tags follow the engine's premise that every satellite starts att = 0, and the file says by how many hours they differ. The SGP4 element epoch of thejammingandgnss-simkinds' Walker constellations (2018-06-12T00:00:00Z), which their runs also use for the Earth rotation; thepasseskind'sepoch; theephemeriskind'sepochor TLE epoch. Theintegritykind has no calendar epoch; its export datest = 0as for an orbit scenario without one. - Satellites keep the positional identifiers
G01,G02, ... the SP3 and OEM exports give them, because the propagators do not carry the TLE name lines.
Imports#
- GeoJSON route.
--import-route <file>(library:interop::geojson::apply_route) reads the firstLineStringof a GeoJSON document — a bare geometry, aFeature, or aFeatureCollection— and writes it into the track inputs ofterrain-nav,terrain-slam,gravity-mapandcombined-altpnt(start_lat_deg,start_lon_deg,step_lat_deg,step_lon_deg,waypoints) before the run. Those kinds flystart + i·step, so a route is accepted when it is exactly that: its two ends (the scenario'swaypointscount is kept), or three or more positions evenly spaced on a straight line in latitude and longitude, to within 1e-7 degree (about 1 cm). Any other route is refused and the error names the position furthest off the line. A route for a kind with no trajectory input is refused with that reason. Longitude and latitude are range-checked, which catches a latitude-first file. - SigMF recording. The
spectrumkind's[recording]block reads a.sigmf-meta/.sigmf-datapair throughsrc/sigmf.rsand plots its Welch estimate beside the model (see SPECTRUM.md). Reading files is a native-build feature; the WebAssembly build takes the bytes throughkshana::sigmf::read.
How the exports are checked#
tests/interop_formats.rs parses every export with a validator written from the
format's specification, not with the writer's own code:
- CZML: a JSON array whose first packet is the document packet with a
version; unique packet identifiers; every position statesreferenceFrameFIXEDorINERTIAL; sampled positions are[t, x, y, z, ...]with an ISO 8601 epoch and increasing times. - KML: a well-formed XML (Extensible Markup Language) document in the OGC KML 2.2
namespace with one root feature; the schema's element order inside a Placemark; at most
one geometry per Placemark; closed linear rings of four or more positions;
lon,lat[,alt]tuples in range; validaltitudeModevalues;styleUrls that resolve; agx:Trackwith as many<when>as<gx:coord>, and the extension namespace declared. - GeoJSON: longitude first and in range, latitude in range, two or three numbers per
position, line strings of two or more positions, closed counter-clockwise exterior
rings, no segment across the 180° meridian, no
crsmember, aunitsproperty on every feature. - STK: the
stk.v.version line, aBEGIN Ephemeris/END Ephemerisblock with the required keywords,DistanceUnit Meters,NumberOfEphemerisPointsequal to the number of data rows, seven numbers per row, increasing times. - SigMF:
core:datatypeandcore:versioninglobal,capturesandannotationsarrays,core:sample_starton every capture, and a data file of whole samples.
Beyond structure, a satellite exported to CZML and to STK is compared with the engine's
own state after the same frame reduction, and agrees to 1 mm in position (the files carry
0.1 mm): against the ephemeris kind's own GCRS output, and against an independent
TEME-to-GCRS propagation of the orbit-sgp4-gps constellation, each satellite dated by
its own TLE epoch read from the scenario text. Two checks go outside the engine: the first
orbit-sgp4-gps satellite's CZML positions agree to 0.1 m (measured 2.3 cm) with the same
TLE propagated by the sgp4 Python package and reduced to the GCRS by ERFA (Essential
Routines for Fundamental Astronomy, the open implementation of the IAU's SOFA library),
and the orbit-rinex satellites' Earth-fixed positions equal the broadcast-ephemeris
positions of the Global Positioning System interface specification to 1 mm. The jamming export's
Earth-fixed positions are compared with the positions the jamming run scores, to 5 mm.
The GeoJSON route round-trips through a track scenario, the SigMF pair reads back to the
same bytes, and every export is byte-deterministic.
These are checks against the published specifications and against the engine itself. The files have not been loaded into CesiumJS, Google Earth, Ansys STK or an SDR tool as part of the test suite, so acceptance by a particular version of those tools is not tested here.
Limitations#
- Only the kinds in the table below export geometry. Kinds whose geometry is centred on
the Moon, Mars or another body are not exported: CZML, KML and GeoJSON describe
positions about the Earth, and this release writes STK files with
CentralBody Earthonly, although the STK format itself allows other central bodies. constellation-design,earth-gnss-lunarandoem-interophave Earth-referenced geometry that this release does not export; the table gives the reason for each.- The
gnss-inskind flies its trajectory in a flat local tangent plane, so only the plane's origin is exported, not the trajectory. - Earth-fixed satellite positions neglect UT1−UTC and polar motion (see Frames and time); KML heights are ellipsoidal, not above mean sea level.
- Footprints assume free-space propagation, a jammer at the receiver's horizon and a spherical Earth for the circle.
Every scenario file#
What kshana <scenario> --export <format> does for each file in scenarios/ (the suite
manifest is not a scenario and is left out). "yes" means the format is written and
passes its validator; otherwise the number points to the reason. Generated by
cargo run --bin gen_validation_artifacts; tests/interop_formats.rs fails when it is
stale.
| Scenario | Kind | CZML | KML | GeoJSON | STK .e |
SigMF |
|---|---|---|---|---|---|---|
aperture-duty-cycle.toml |
aperture-duty-cycle |
no [1] | no [1] | no [1] | no [1] | no [2] |
araim-gps-galileo.toml |
integrity |
yes | yes | yes | yes | no [2] |
araim-reference-check.toml |
araim-reference-check |
no [1] | no [1] | no [1] | no [1] | no [2] |
attitude-budget.toml |
attitude-budget |
no [1] | no [1] | no [1] | no [1] | no [2] |
automotive-urban-canyon.toml |
gnss-ins |
yes | yes | yes | no [3] | no [2] |
campaign-jam-spoof-holdover-integrity.toml |
campaign |
yes | yes | yes | yes | no [4] |
campaign-monte-carlo-clock-holdover.toml |
campaign |
no [4] | no [4] | no [4] | no [4] | no [4] |
campaign-shared-jammer-sea-road.toml |
campaign |
yes | yes | yes | yes | no [4] |
campaign-spectrum-holdover-integrity.toml |
campaign |
yes | yes | yes | yes | no [4] |
campaign-sweep-jammer-power.toml |
campaign |
yes | yes | yes | yes | no [4] |
celeste-iod-classical-pilot-signals.toml |
leo-signal |
no [5] | no [5] | no [5] | no [5] | no [2] |
celeste-iod-end-to-end.toml |
leo-pnt-chain |
yes | yes | yes | yes | no [2] |
celeste-iod-fused-pvt.toml |
leo-pvt |
no [6] | no [6] | no [6] | no [6] | no [2] |
cislunar-arc-recovery.toml |
cislunar-arc-recovery |
no [7] | no [7] | no [7] | no [7] | no [2] |
cislunar-observability.toml |
cislunar-observability |
no [7] | no [7] | no [7] | no [7] | no [2] |
clock-ensemble.toml |
clock |
no [1] | no [1] | no [1] | no [1] | no [2] |
clock-holdover-labsr.toml |
clock |
no [1] | no [1] | no [1] | no [1] | no [2] |
clock-holdover.toml |
clock |
no [1] | no [1] | no [1] | no [1] | no [2] |
combined-altpnt.toml |
combined-altpnt |
yes | yes | yes | no [3] | no [2] |
conflict-resilience.toml |
conflict-resilience |
no [1] | no [1] | no [1] | no [1] | no [2] |
constellation-multi-gnss-coverage.toml |
constellation-design |
no [8] | no [8] | no [8] | no [8] | no [2] |
earth-gnss-lunar.toml |
earth-gnss-lunar |
no [9] | no [9] | no [9] | no [9] | no [2] |
eo-coverage.toml |
eo-coverage |
no [1] | no [1] | no [1] | no [1] | no [2] |
ephemeris.toml |
ephemeris |
yes | yes | yes | yes | no [2] |
europa-surface-pnt.toml |
body-pnt |
no [7] | no [7] | no [7] | no [7] | no [2] |
fusion-pnt.toml |
fusion |
no [1] | no [1] | no [1] | no [1] | no [2] |
gnss-ins.toml |
gnss-ins |
yes | yes | yes | no [3] | no [2] |
gnss-sim-raim.toml |
gnss-sim |
yes | yes | yes | yes | no [2] |
gps-denied-gravity-nav.toml |
gravity-map |
yes | yes | yes | no [3] | no [2] |
gravity-map-nav.toml |
gravity-map |
yes | yes | yes | no [3] | no [2] |
hybrid-optical-rf.toml |
hybrid-optical-rf |
no [1] | no [1] | no [1] | no [1] | no [2] |
hybrid-pnt.toml |
hybrid |
no [1] | no [1] | no [1] | no [1] | no [2] |
hybrid-ukf.toml |
hybrid-ukf |
no [1] | no [1] | no [1] | no [1] | no [2] |
impairment-eval.toml |
impairment-eval |
no [1] | no [1] | no [1] | no [1] | no [2] |
imu-deadreckoning.toml |
inertial |
no [1] | no [1] | no [1] | no [1] | no [2] |
ins-trn-coast.toml |
ins-trn-coast |
no [1] | no [1] | no [1] | no [1] | no [2] |
integrity-raim.toml |
integrity |
yes | yes | yes | yes | no [2] |
jamming-demo.toml |
jamming |
yes | yes | yes | yes | no [2] |
l-band-waterfall-jamming.toml |
spectrum |
no [1] | no [1] | no [1] | no [1] | yes |
launch-window.toml |
launch-window |
no [10] | no [10] | no [10] | no [10] | no [2] |
leo-band-trade.toml |
leo-signal |
no [5] | no [5] | no [5] | no [5] | no [2] |
leo-doppler-positioning.toml |
leo-pvt |
no [6] | no [6] | no [6] | no [6] | no [2] |
leo-focus-data-services.toml |
campaign |
no [4] | no [4] | no [4] | no [4] | no [4] |
leo-focus-fused-pnt-sisre.toml |
campaign |
no [4] | no [4] | no [4] | no [4] | no [4] |
leo-focus-indoor-uhf.toml |
campaign |
yes | yes | yes | yes | no [4] |
leo-focus-iot-eirp.toml |
campaign |
yes | yes | yes | yes | no [4] |
leo-focus-ntn-bandwidth.toml |
campaign |
no [4] | no [4] | no [4] | no [4] | no [4] |
leo-focus-ppp-altitude.toml |
campaign |
no [4] | no [4] | no [4] | no [4] | no [4] |
leo-focus-science-iono-sounding.toml |
leo-pass |
yes | yes | yes | yes | no [2] |
leo-indoor-uhf.toml |
leo-pass |
yes | yes | yes | yes | no [2] |
leo-iot-energy.toml |
leo-pass |
yes | yes | yes | yes | no [2] |
leo-navmsg-celeste-iod.toml |
leo-navmsg |
no [11] | no [11] | no [11] | no [11] | no [2] |
leo-navmsg-encode-decode.toml |
leo-navmsg |
no [11] | no [11] | no [11] | no [11] | no [2] |
leo-navmsg-fit-interval-trade.toml |
leo-navmsg |
no [11] | no [11] | no [11] | no [11] | no [2] |
leo-navmsg-midpass-update.toml |
leo-navmsg |
no [11] | no [11] | no [11] | no [11] | no [2] |
leo-navmsg-model-comparison.toml |
leo-navmsg |
no [11] | no [11] | no [11] | no [11] | no [2] |
leo-pass-celeste-iod-multiband.toml |
leo-pass |
yes | yes | yes | yes | no [2] |
leo-pass-iridium.toml |
leo-pass |
yes | yes | yes | yes | no [2] |
leo-pass-vs-gnss-cn0.toml |
leo-pass |
yes | yes | yes | yes | no [2] |
leo-pass-xona-pulsar.toml |
leo-pass |
yes | yes | yes | yes | no [2] |
leo-pnt-end-to-end.toml |
leo-pnt-chain |
yes | yes | yes | yes | no [2] |
leo-pnt-mega-shell.toml |
constellation-design |
no [8] | no [8] | no [8] | no [8] | no [2] |
leo-ppp-convergence.toml |
leo-ppp |
no [6] | no [6] | no [6] | no [6] | no [2] |
leo-resilience-gnss-jammed-leo-carries.toml |
campaign |
yes | yes | yes | yes | no [4] |
leo-resilience-js-margin.toml |
spectrum |
no [1] | no [1] | no [1] | no [1] | no [12] |
leo-resilience-multiband-diversity.toml |
campaign |
no [4] | no [4] | no [4] | no [4] | no [4] |
leo-resilience-spoof-doppler.toml |
leo-pass |
yes | yes | yes | yes | no [2] |
leo-resilience-spoof-monitors.toml |
campaign |
yes | yes | yes | yes | no [4] |
leo-timing-utc.toml |
leo-pvt |
no [6] | no [6] | no [6] | no [6] | no [2] |
leo-vertical-5g-network-timing.toml |
campaign |
yes | yes | yes | yes | no [4] |
leo-vertical-asset-tracking-iot.toml |
campaign |
yes | yes | yes | yes | no [4] |
leo-vertical-autonomous-vehicle.toml |
campaign |
yes | yes | yes | yes | no [4] |
leo-vertical-critical-infrastructure-timing.toml |
campaign |
yes | yes | yes | yes | no [4] |
leo-vertical-polar-arctic.toml |
campaign |
yes | yes | yes | yes | no [4] |
leo-vertical-rail-maritime.toml |
campaign |
yes | yes | yes | yes | no [4] |
link-budget.toml |
link-budget |
no [1] | no [1] | no [1] | no [1] | no [2] |
lunanet-araim.toml |
lunar-integrity |
no [7] | no [7] | no [7] | no [7] | no [2] |
lunar-attack-surface.toml |
lunar-attack-surface |
no [7] | no [7] | no [7] | no [7] | no [2] |
lunar-beacon.toml |
lunar-beacon |
no [7] | no [7] | no [7] | no [7] | no [2] |
lunar-differential-pnt.toml |
lunar-differential-pnt |
no [7] | no [7] | no [7] | no [7] | no [2] |
lunar-frame-campaign.toml |
lunar-frame-campaign |
no [7] | no [7] | no [7] | no [7] | no [2] |
lunar-frame-realisation.toml |
lunar-frame-realisation |
no [7] | no [7] | no [7] | no [7] | no [2] |
lunar-interop-export.toml |
lunar-interop-export |
no [7] | no [7] | no [7] | no [7] | no [2] |
lunar-jamming.toml |
lunar-jamming |
no [7] | no [7] | no [7] | no [7] | no [2] |
lunar-joint-od-clock.toml |
lunar-joint-od-clock |
no [7] | no [7] | no [7] | no [7] | no [2] |
lunar-llr-datum.toml |
lunar-llr-datum |
no [7] | no [7] | no [7] | no [7] | no [2] |
lunar-relay-constellation.toml |
constellation-design |
no [8] | no [8] | no [8] | no [8] | no [2] |
lunar-time-budget.toml |
lunar-time-budget |
no [7] | no [7] | no [7] | no [7] | no [2] |
lunar-time-offset.toml |
lunar-time-offset |
no [7] | no [7] | no [7] | no [7] | no [2] |
lunar-vlbi-fim.toml |
lunar-vlbi-fim |
no [7] | no [7] | no [7] | no [7] | no [2] |
lunar-vlbi.toml |
lunar-vlbi |
no [7] | no [7] | no [7] | no [7] | no [2] |
maritime-port-approach-coast.toml |
ins-trn-coast |
no [1] | no [1] | no [1] | no [1] | no [2] |
maritime-spoof-position-push.toml |
spoof-detect |
no [1] | no [1] | no [1] | no [1] | no [2] |
maritime-strait-jamming.toml |
jamming |
yes | yes | yes | yes | no [2] |
mars-orbit-pnt.toml |
body-pnt |
no [7] | no [7] | no [7] | no [7] | no [2] |
mars-pnt-lmo.toml |
mars-pnt |
no [7] | no [7] | no [7] | no [7] | no [2] |
mars-pnt-surface.toml |
mars-pnt |
no [7] | no [7] | no [7] | no [7] | no [2] |
mars-pnt-transfer.toml |
mars-pnt |
no [7] | no [7] | no [7] | no [7] | no [2] |
meo-leo-fused-pvt.toml |
leo-pvt |
no [6] | no [6] | no [6] | no [6] | no [2] |
moonlight-service-volume.toml |
moonlight-service-volume |
no [7] | no [7] | no [7] | no [7] | no [2] |
multi-band-jamming-waterfall.toml |
spectrum |
no [1] | no [1] | no [1] | no [1] | no [12] |
ntn-5g-positioning.toml |
ntn-positioning |
no [6] | no [6] | no [6] | no [6] | no [2] |
oem-interop.toml |
oem-interop |
no [13] | no [13] | no [13] | no [13] | no [2] |
orbit-gnss-challenged.toml |
orbit |
yes | yes | yes | yes | no [2] |
orbit-molniya.toml |
orbit |
yes | yes | yes | yes | no [2] |
orbit-multignss.toml |
orbit |
yes | yes | yes | yes | no [2] |
orbit-real-tle.toml |
orbit |
yes | yes | yes | yes | no [2] |
orbit-rinex.toml |
orbit |
yes | yes | yes | yes | no [2] |
orbit-sgp4-gps.toml |
orbit |
yes | yes | yes | yes | no [2] |
passes.toml |
passes |
yes | yes | yes | yes | no [2] |
polar-arctic-leo-coverage.toml |
leo-pvt |
no [6] | no [6] | no [6] | no [6] | no [2] |
pvt-abmf.toml |
pvt |
yes | yes | yes | no [3] | no [2] |
quantum-anomaly-detect.toml |
quantum-anomaly-detect |
no [1] | no [1] | no [1] | no [1] | no [2] |
quantum-gnss-free-nav.toml |
quantum-gnss-free-nav |
no [1] | no [1] | no [1] | no [1] | no [2] |
quantum-time-transfer.toml |
quantum-time-transfer |
no [1] | no [1] | no [1] | no [1] | no [2] |
quantum-trade.toml |
quantum-trade |
no [1] | no [1] | no [1] | no [1] | no [2] |
rail-tunnel-coast.toml |
ins-trn-coast |
no [1] | no [1] | no [1] | no [1] | no [2] |
realtime-frame-eop.toml |
realtime-frame-eop |
no [1] | no [1] | no [1] | no [1] | no [2] |
reentry.toml |
reentry |
no [1] | no [1] | no [1] | no [1] | no [2] |
slot-timing-ocxo-leo.toml |
slot-timing |
no [1] | no [1] | no [1] | no [1] | no [2] |
small-uas-jammed-nav.toml |
gnss-ins |
yes | yes | yes | no [3] | no [2] |
solar-system-tour.toml |
solar-system |
no [7] | no [7] | no [7] | no [7] | no [2] |
space-packet.toml |
space-packet |
no [1] | no [1] | no [1] | no [1] | no [2] |
space-weather.toml |
space-weather |
no [1] | no [1] | no [1] | no [1] | no [2] |
spoof-attack.toml |
spoof |
no [1] | no [1] | no [1] | no [1] | no [2] |
spoof-detect.toml |
spoof-detect |
no [1] | no [1] | no [1] | no [1] | no [2] |
spoof-meaconing.toml |
spoof |
no [1] | no [1] | no [1] | no [1] | no [2] |
starlink-sop-doppler-positioning.toml |
leo-pvt |
no [6] | no [6] | no [6] | no [6] | no [2] |
sweep-clock-stability.toml |
sweep |
no [14] | no [14] | no [14] | no [14] | no [2] |
sweep-nd-inertial.toml |
sweep-nd |
no [14] | no [14] | no [14] | no [14] | no [2] |
telecom-prtc-holdover-24h.toml |
telecom-timing |
no [1] | no [1] | no [1] | no [1] | no [2] |
telecom-tie-ingest.toml |
telecom-timing |
no [1] | no [1] | no [1] | no [1] | no [2] |
terrain-nav.toml |
terrain-nav |
yes | yes | yes | no [3] | no [2] |
terrain-slam.toml |
terrain-slam |
yes | yes | yes | no [3] | no [2] |
timetransfer.toml |
timetransfer |
no [1] | no [1] | no [1] | no [1] | no [2] |
tracking-loop.toml |
tracking-loop |
no [1] | no [1] | no [1] | no [1] | no [2] |
xona-pulsar-end-to-end.toml |
leo-pnt-chain |
yes | yes | yes | yes | no [2] |
xona-pulsar-signals.toml |
leo-signal |
no [5] | no [5] | no [5] | no [5] | no [2] |
Why a format does not apply:
- the scenario input carries no horizontal position (no latitude and longitude, no Earth-centred coordinates, no orbital elements beyond at most an altitude), so there is nothing to place on the Earth
- SigMF holds complex baseband samples, which only the
spectrumkind synthesises - an STK ephemeris describes a vehicle's position and velocity against time; this scene has only fixed points or untimed tracks (a fixed point is an STK Facility, not an ephemeris)
- no member scenario of the campaign has anything this format describes; export a member on its own to see its reason
- the
leo-signalkind analyses signal designs (spectra, tracking, acquisition, compatibility) with no satellite or user position; export theleo-passorleo-pnt-chainscenario that flies the design - not exported in this release: the fused positioning kinds place their satellites in an Earth-fixed frame relative to an epoch they never name, so a time-tagged export would have to invent the calendar date (export the
leo-passorleo-pnt-chainscenario instead) - the kind's geometry is centred on the Moon, Mars or another solar-system body; CZML, KML and GeoJSON describe positions on or about the Earth, and this release writes STK ephemerides with CentralBody Earth only
- not exported in this release:
constellation-designplaces its satellites in a body-fixed frame relative to an epoch it never names, so a time-tagged export would have to invent the calendar date - not exported in this release: the Earth Global Navigation Satellite System (GNSS) constellation of
earth-gnss-lunaris seen from a receiver at lunar distance, whose trajectory the kind does not expose as a time series - the
launch-windowscenario gives the launch site's latitude but no longitude, so the site cannot be placed - not exported in this release: the
leo-navmsgtruth orbit is a fitting reference whose Earth rotation angle at the epoch is an input (theta0_deg, default 0), not derived from the calendar date, so its Earth-fixed positions are not tied to a date - this spectrum scenario has no [iq] block, so no samples are synthesised to record
- not exported in this release:
oem-interopreads and writes a CCSDS (Consultative Committee for Space Data Systems) Orbit Ephemeris Message, which is itself the ephemeris interchange file - the scenario sweeps another scenario over a grid; export the swept scenario on its own