Exportações e importações de interoperabilidade
Uma execução escreve um documento de resultados, um gráfico e um relatório. --export escreve também a geometria do cenário, ou o seu sinal sintetizado, nos formatos que outras ferramentas já leem: um visualizador de globo, um mapa de secretária, um sistema de informação geográfica (SIG), um pacote de análise de missão ou uma ferramenta de rádio definido por software (SDR). Nada aqui lê um relógio ou a rede, e nenhuma exportação inclui uma marca temporal de geração, pelo que o mesmo cenário dá ficheiros idênticos byte a byte em todas as execuções.
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
Os ficheiros são escritos junto do cenário, com nomes como o do documento de resultados: jamming-demo.czml, jamming-demo.kml, jamming-demo.geojson, um jamming-demo.<object>.e por objeto em movimento (ou jamming-demo.e quando há um só) e o par l-band-waterfall-jamming.sigmf-meta / .sigmf-data. Com --study-name adotam o nome do estudo, tal como as outras saídas.
Um formato indicado explicitamente que não se aplique ao cenário é um erro que imprime o motivo; com all, o motivo é impresso e o formato é ignorado. Os pontos de entrada da biblioteca são kshana::interop::export(src, format), kshana::interop::plan(src) e kshana::interop::geojson::apply_route(src, geojson); recebem o texto do cenário e devolvem bytes, sem tocar em nenhum ficheiro, pelo que também funcionam na versão WebAssembly. O servidor Model Context Protocol (MCP) disponibiliza os mesmos três como as ferramentas export_interop, list_export_formats e import_route (ver mcp/kshana-mcp/README.md).
Código: src/interop/ (scene.rs constrói uma descrição geométrica do cenário; czml.rs, kml.rs, geojson.rs e stk.rs escrevem-na), src/sigmf.rs e src/spectrum.rs para o sinal. Testes: tests/interop_formats.rs.
Formatos#
| Formato | O que é | Especificação seguida |
|---|---|---|
| CZML | Cesium Language: um vetor JSON (JavaScript Object Notation) de pacotes com marcas temporais, lido pelo CesiumJS | https://github.com/AnalyticalGraphicsInc/czml-writer/wiki/CZML-Structure |
| KML | Keyhole Markup Language 2,2, uma norma do Open Geospatial Consortium (OGC), lida pelo Google Earth e pela maioria das ferramentas SIG; as trajetórias com marcas temporais usam a extensão da Google gx:Track |
https://www.ogc.org/standards/kml/ (espaço de nomes do esquema http://www.opengis.net/kml/2.2; espaço de nomes da extensão http://www.google.com/kml/ext/2.2) |
| GeoJSON | JSON geográfico, Request for Comments (RFC) 7946 da Internet Engineering Task Force (IETF) | https://www.rfc-editor.org/rfc/rfc7946.html |
STK .e |
o ficheiro de efemérides do Ansys Systems Tool Kit (STK), na forma tempo-posição-velocidade EphemerisTimePosVel |
https://help.agi.com/stk/Content/stk/importfiles-02.htm |
| SigMF | Signal Metadata Format: um ficheiro de metadados JSON e um ficheiro bruto de amostras complexas em fase e em quadratura (IQ) | https://sigmf.org/ |
O que cada ficheiro contém#
Todos os formatos geoespaciais são escritos a partir da mesma cena, pelo que não podem divergir quanto ao local onde está cada coisa. Uma cena tem até quatro tipos de objeto:
- Objetos em movimento — satélites e uma plataforma de utilizador quando se move — amostrados na grelha temporal do próprio cenário com os propagadores que a execução do tipo usa.
- Locais fixos — um recetor, uma estação terrestre, um jammer ou a origem de um referencial de navegação local.
- Trajetórias sem tempo — os pontos de passagem que um tipo de posicionamento, navegação e temporização (PNT) alternativo de terreno, gravidade ou combinado percorre. Estes tipos não têm eixo temporal, pelo que as trajetórias não o têm.
- Áreas de cobertura do jammer — para o tipo
jamming, dois círculos em torno do jammer: o alcance à superfície dentro do qual um satélite no zénite (o mais forte) fica abaixo do limiar de seguimento, de modo que todos os satélites se perdem, e o alcance dentro do qual um satélite na máscara de elevação (o mais fraco) o faz, de modo que o seguimento começa a falhar. Ambos provêm das equações de ligação do próprio tipo (Kaplan e Hegarty, Understanding GPS/GNSS (Global Positioning System / Global Navigation Satellite Systems), 3.ª ed., §9,4) com o jammer no horizonte do recetor e perda em espaço livre, e o conjunto de testes verifica que a razão efetiva entre a portadora e a densidade de ruído em cada raio é igual ao limiar com 1e-6 dB. O círculo é desenhado numa esfera com o raio médio da Terra.
CZML#
O primeiro pacote é o pacote do documento ("id": "document", "version": "1.0") com um relógio que abrange a grelha temporal. Cada objeto em movimento é um pacote cujo position tem um epoch ISO 8601 (formato de data e hora da International Organization for Standardization) UTC (Coordinated Universal Time), referenceFrame "INERTIAL", e amostras cartesian [t, x, y, z, ...]: segundos após a época, metros no Geocentric Celestial Reference System (GCRS). O CesiumJS toma INERTIAL como o International Celestial Reference Frame (ICRF), cujos eixos o GCRS partilha. Os locais fixos e os centros das áreas de cobertura são posições cartesian constantes fixas à Terra, com referenceFrame "FIXED". Uma área de cobertura é uma ellipse com ambos os semieixos iguais ao seu raio; uma trajetória sem tempo é uma polyline fixada ao solo. A description de cada pacote volta a indicar o referencial por palavras.
KML#
Um <Document> com uma <Folder> por classe de objeto. Um objeto em movimento é um <Placemark> que contém um <gx:Track>: um <when> por amostra (ISO 8601 UTC) e depois um <gx:coord> por amostra (longitude, latitude, altura). Os locais são <Point>s, as áreas de cobertura <Polygon>s cujo anel é fechado e no sentido anti-horário, as trajetórias sem tempo <LineString>s. As coordenadas são longitude e latitude do World Geodetic System 1984 (WGS 84) em graus decimais e a altura em metros acima do elipsoide WGS 84, escritas com altitudeMode absolute. O KML lê absolute como altura acima do nível médio do mar; a diferença, a ondulação do geoide, está dentro de cerca de ±110 m e não é aplicada. A descrição do documento di-lo.
GeoJSON#
Uma FeatureCollection. As posições são [longitude, latitude] ou [longitude, latitude, height] — longitude primeiro, como a RFC 7946 exige — em graus WGS 84, com a altura em metros acima do elipsoide. Um objeto em movimento é um LineString com uma propriedade times_utc que contém um tempo ISO 8601 por posição; uma trajetória que atravesse o meridiano de 180° é escrita como um MultiLineString cortado aí, como a RFC 7946 §3.1.9 pede (o ponto de passagem é interpolado, e times_utc lista então apenas as amostras originais). Os locais são Points, as áreas de cobertura Polygons com um anel exterior fechado no sentido anti-horário (§3.1.6), as trajetórias sem tempo LineStrings. Cada elemento tem uma propriedade units que indica a unidade de cada membro numérico.
STK .e#
Um ficheiro por objeto em movimento, dado que umas efemérides STK descrevem um veículo. O cabeçalho indica NumberOfEphemerisPoints (igual ao número de linhas de dados), ScenarioEpoch (UTC, d Mon yyyy hh:mm:ss.ssssss), InterpolationMethod Lagrange com InterpolationSamplesM1 5, CentralBody Earth, CoordinateSystem ICRF e DistanceUnit Meters; as linhas sob EphemerisTimePosVel são segundos após a época, posição em metros e velocidade em metros por segundo, no GCRS. Uma cena apenas com locais fixos ou trajetórias sem tempo não escreve nenhum ficheiro .e: um ponto fixo é uma Facility do STK, não umas efemérides. Um identificador que não seja uma parte simples de nome de ficheiro (uma camada de constelação e um satélite, Pulsar inclined/S1-0163) é escrito com cada outro caráter como -, numerado se dois identificadores passarem a coincidir.
O tipo leo-pass e o tipo leo-pnt-chain (através da sua fase [pass]) exportam cada satélite em órbita terrestre baixa (LEO) e o utilizador a partir dos propagadores e da grelha temporal do próprio tipo. O tipo trabalha em ECI0, o referencial inercial centrado na Terra alinhado com o referencial fixo à Terra na época; cada amostra é convertida para o referencial fixo à Terra no seu próprio instante pela rotação da Terra do tipo e daí para o GCRS através do referencial true equator, mean equinox (TEME) em que o propagador Simplified General Perturbations 4 (SGP4) produz a saída, nesse instante, com o UT1 (Universal Time, o ângulo de rotação da Terra) tomado igual ao UTC e o movimento polar desprezado, como nas outras exportações. Os outros tipos LEO indicam porque um formato não se aplica (a tabela abaixo).
Campanhas#
Um campaign exporta cada cenário membro que tenha geometria como o seu próprio conjunto de ficheiros, com a etiqueta do membro inserida antes do sufixo do formato: cada execução de fase (<phase>, ou <phase>-<k> quando a fase tem várias execuções), o cenário de base da varredura (sweep), o cenário de Monte Carlo (monte-carlo) e cada membro composto (a sua etiqueta, com os valores partilhados a que se liga escritos). campaign-shared-jammer-sea-road.toml --export kml escreve campaign-shared-jammer-sea-road.ship-strait.kml e campaign-shared-jammer-sea-road.car-coast-road.kml. Um membro idêntico a um anterior é escrito uma só vez, e os valores que uma campanha aplica em tempo de execução (transferências, valores de varredura, sementes) não constam do membro exportado. Um formato aplica-se a uma campanha quando se aplica a algum membro; caso contrário, o motivo é a nota 4 da tabela abaixo. Ver CAMPAIGNS.md.
SigMF#
O instantâneo [iq] do tipo spectrum — a banda L modelada desenhada como amostras complexas num instante — como um par .sigmf-meta / .sigmf-data, no tipo de dados que [iq] indica (cf32_le ou ci16_le). É a mesma gravação que a execução escreve e volta a ler para a sua própria verificação de consistência: os metadados exportados são iguais ao bloco iq.sigmf.meta do documento de resultados, e o ficheiro de dados tem o comprimento iq.sigmf.data_bytes. O escritor é src/sigmf.rs, o módulo que o tipo spectrum já usava; nada é duplicado.
Referenciais e tempo#
- O motor propaga em TEME (true equator, mean equinox of date), o seu referencial nativo. Os objetos em movimento são rodados para o GCRS pela redução
nutation::teme_to_gcrs(precessão IAU 2006 e nutação IAU 2000B, em que IAU é a International Astronomical Union), que reproduz o exemplo publicado de Vallado de TEME para GCRF (Geocentric Celestial Reference Frame) com 0,11 m, para CZML e STK, e para o referencial fixo à Terra porframes::teme_to_ecefpara KML e GeoJSON. A rotação para o referencial fixo à Terra é o ângulo sidéreo médio de Greenwich com o UT1 tomado igual ao UTC e sem aplicar o movimento polar — a mesma redução que a exportação SP3 (Standard Product 3) usa. Num raio de órbita GPS, a diferença UT1−UTC desprezada, de até 0,9 s, desloca a longitude de um satélite até cerca de 1,7 km; os locais em terra não são afetados, dado serem indicados em latitude e longitude. - O tipo
ephemerisé a exceção: a sua saída do motor já contém posições GCRS e fixas à Terra (com o UT1−UTC e o movimento polar do cenário, ou uma série real do International Earth Rotation and Reference Systems Service (IERS)), e estas são escritas sem alteração. - Todas as horas são UTC. Os segundos intercalares não são modelados: um desvio que atravesse um segundo intercalar é contado como se cada dia tivesse 86 400 s, como contam as grelhas temporais do motor.
- A época de
t = 0é a que a execução do tipo usa, e cada ficheiro indica-a: oepochdo tipoorbit; quando está ausente, a época mais antiga que os dados dos próprios satélites contêm (uma época de conjunto de elementos de duas linhas (TLE), o tempo de referência de umas efemérides difundidas, o início de um ficheiro SP3), e 2000-01-01T00:00:00Z apenas quando nenhum satélite contém uma (elementos keplerianos). As exportações SP3 e OEM (Orbit Ephemeris Message) mantêm 2000-01-01T00:00:00Z para um cenário semepoch, pelo que, para esse cenário, as suas datas diferem das destes ficheiros. Semepochde cenário, cada satélite que contenha a sua própria época é rodado para os referenciais GCRS e fixo à Terra no seu próprio instante (a sua época maist), dado ser essa a data a que pertence a sua posição TEME; quando as épocas dos satélites diferem, as marcas temporais partilhadas seguem a premissa do motor de que cada satélite começa emt = 0, e o ficheiro indica por quantas horas diferem. A época do elemento SGP4 das constelações Walker dos tiposjammingegnss-sim(2018-06-12T00:00:00Z), que as suas execuções usam também para a rotação da Terra; aepochdo tipopasses; aepochou a época TLE do tipoephemeris. O tipointegritynão tem época de calendário; a sua exportação datat = 0como para um cenário de órbita sem ela. - Os satélites mantêm os identificadores posicionais
G01,G02, ... que as exportações SP3 e OEM lhes dão, porque os propagadores não transportam as linhas de nome dos TLE.
Importações#
- Rota GeoJSON.
--import-route <file>(biblioteca:interop::geojson::apply_route) lê o primeiroLineStringde um documento GeoJSON — uma geometria isolada, umFeatureou umFeatureCollection— e escreve-o nas entradas de trajetória deterrain-nav,terrain-slam,gravity-mapecombined-altpnt(start_lat_deg,start_lon_deg,step_lat_deg,step_lon_deg,waypoints) antes da execução. Esses tipos percorremstart + i·step, pelo que uma rota é aceite quando é exatamente isso: os seus dois extremos (a contagemwaypointsdo cenário é mantida), ou três ou mais posições uniformemente espaçadas numa linha reta em latitude e longitude, com 1e-7 grau de tolerância (cerca de 1 cm). Qualquer outra rota é recusada e o erro indica a posição mais afastada da linha. Uma rota para um tipo sem entrada de trajetória é recusada com esse motivo. A longitude e a latitude têm o intervalo verificado, o que apanha um ficheiro com a latitude primeiro. - Gravação SigMF. O bloco
[recording]do tipospectrumlê um par.sigmf-meta/.sigmf-dataatravés desrc/sigmf.rse traça a sua estimativa de Welch junto do modelo (ver SPECTRUM.md). Ler ficheiros é uma funcionalidade da versão nativa; a versão WebAssembly recebe os bytes através dekshana::sigmf::read.
Como as exportações são verificadas#
tests/interop_formats.rs analisa cada exportação com um validador escrito a partir da especificação do formato, e não com o código do próprio escritor:
- CZML: um vetor JSON cujo primeiro pacote é o pacote do documento com uma
version; identificadores de pacote únicos; cada posição indicareferenceFrameFIXEDouINERTIAL; as posições amostradas são[t, x, y, z, ...]com uma época ISO 8601 e tempos crescentes. - KML: um documento XML (Extensible Markup Language) bem formado no espaço de nomes OGC KML 2,2 com um elemento raiz; a ordem dos elementos do esquema dentro de um Placemark; no máximo uma geometria por Placemark; anéis lineares fechados de quatro ou mais posições; tuplos
lon,lat[,alt]dentro do intervalo; valoresaltitudeModeválidos;styleUrls que se resolvem; umgx:Trackcom tantos<when>como<gx:coord>, e o espaço de nomes da extensão declarado. - GeoJSON: longitude primeiro e dentro do intervalo, latitude dentro do intervalo, dois ou três números por posição, linhas de duas ou mais posições, anéis exteriores fechados no sentido anti-horário, nenhum segmento a atravessar o meridiano de 180°, nenhum membro
crs, uma propriedadeunitsem cada elemento. - STK: a linha de versão
stk.v., um blocoBEGIN Ephemeris/END Ephemeriscom as palavras-chave obrigatórias,DistanceUnit Meters,NumberOfEphemerisPointsigual ao número de linhas de dados, sete números por linha, tempos crescentes. - SigMF:
core:datatypeecore:versionemglobal, vetorescaptureseannotations,core:sample_startem cada captura, e um ficheiro de dados de amostras inteiras.
Para além da estrutura, um satélite exportado para CZML e para STK é comparado com o estado do próprio motor após a mesma redução de referencial, e concorda com 1 mm na posição (os ficheiros contêm 0,1 mm): face à saída GCRS do próprio tipo ephemeris, e face a uma propagação independente de TEME para GCRS da constelação orbit-sgp4-gps, cada satélite datado pela sua própria época TLE lida do texto do cenário. Duas verificações saem do motor: as posições CZML do primeiro satélite de orbit-sgp4-gps concordam com 0,1 m (medido 2,3 cm) com o mesmo TLE propagado pelo pacote Python sgp4 e reduzido para o GCRS pelo ERFA (Essential Routines for Fundamental Astronomy, a implementação aberta da biblioteca SOFA da IAU), e as posições fixas à Terra dos satélites de orbit-rinex são iguais às posições de efemérides difundidas da especificação de interface do Global Positioning System com 1 mm. As posições fixas à Terra da exportação jamming são comparadas com as posições que a execução de jamming pontua, com 5 mm. A rota GeoJSON faz ida e volta através de um cenário de trajetória, o par SigMF volta a ser lido com os mesmos bytes, e toda a exportação é determinista byte a byte.
Estas são verificações face às especificações publicadas e face ao próprio motor. Os ficheiros não foram carregados no CesiumJS, no Google Earth, no Ansys STK nem numa ferramenta SDR como parte do conjunto de testes, pelo que a aceitação por uma versão concreta dessas ferramentas não é testada aqui.
Intercâmbio de órbitas, atitude e kernels (biblioteca, 0,36)#
Para além dos formatos de --export, a 0,36 acrescentou leitores e escritores de biblioteca para os ficheiros normalizados que as ferramentas de análise de missão trocam. Recebem e devolvem texto ou bytes e não tocam em nenhum ficheiro. Cada um é uma linha VALIDATED da matriz de verificação, face à implementação independente aí indicada:
- CCSDS Orbit Data Messages (
kshana::odm, comkshana::ndm_xmlpara a forma XML): OPM, OMM e OCM em notação de palavra-chave e valor (KVN) e NDM/XML, segundo a CCSDS 502.0-B-3 (OPM e OMM versões 3,0 e 2,0, OCM 3,0). Verificados nos dois sentidos face ao Orekit: o Orekit lê os ficheiros do Kshana e o Kshana lê os do Orekit. As conclusões que permanecem estão fixadas por testes. - CCSDS Attitude Data Messages (
kshana::adm, comkshana::ndm_xml): AEM e APM segundo a CCSDS 504.0-B-2, em KVN e NDM/XML. Verificados face ao Orekit da mesma forma, e as rotações dos registos face às do Orekit. - SPICE SPK (
kshana::spk_writer): escritores e leitores de segmentos NAIF SPK dos tipos 9 e 13 (com a exportação de um CCSDS OEM para um kernel SPK) e dos tipos 3 e 21 (polinómios de Chebyshev e linhas de diferenças estendidas), verificados face aos leitores do próprio NAIF SPICE toolkit, até à identidade byte a byte. O Kshana escreve os segmentos a partir de registos que lhe são fornecidos: não ajusta coeficientes de Chebyshev nem produz linhas de diferenças.
O importador e escritor de CCSDS OEM, e o bloco de covariância do OEM, são mais antigos e estão descritos nas importações acima e na matriz.
Limitações#
- Apenas os tipos da tabela abaixo exportam geometria. Os tipos cuja geometria está centrada na Lua, em Marte ou noutro corpo não são exportados: CZML, KML e GeoJSON descrevem posições em torno da Terra, e esta versão escreve ficheiros STK apenas com
CentralBody Earth, embora o próprio formato STK permita outros corpos centrais. constellation-design,earth-gnss-lunareoem-interoptêm geometria referida à Terra que esta versão não exporta; a tabela indica o motivo de cada um.- O tipo
gnss-inspercorre a sua trajetória num plano tangente local plano, pelo que apenas a origem do plano é exportada, não a trajetória. - As posições de satélites fixas à Terra desprezam o UT1−UTC e o movimento polar (ver Referenciais e tempo); as alturas KML são elipsoidais, não acima do nível médio do mar.
- As áreas de cobertura assumem propagação em espaço livre, um jammer no horizonte do recetor e uma Terra esférica para o círculo.
Todos os ficheiros de cenário#
O que kshana <scenario> --export <format> faz para cada ficheiro em scenarios/ (o manifesto do conjunto não é um cenário e fica de fora). "sim" significa que o formato é escrito e passa o seu validador; caso contrário, o número remete para o motivo. Gerado por cargo run --bin gen_validation_artifacts; tests/interop_formats.rs falha quando está desatualizado.
| Cenário | Tipo | CZML | KML | GeoJSON | STK .e |
SigMF |
|---|---|---|---|---|---|---|
acm-link.toml |
acm-link |
não [1] | não [1] | não [1] | não [1] | não [2] |
aocs-slew-mekf.toml |
aocs |
não [3] | não [3] | não [3] | não [3] | não [2] |
aocs-slew.toml |
aocs |
não [3] | não [3] | não [3] | não [3] | não [2] |
aperture-duty-cycle.toml |
aperture-duty-cycle |
não [4] | não [4] | não [4] | não [4] | não [2] |
araim-gps-galileo.toml |
integrity |
sim | sim | sim | sim | não [2] |
araim-reference-check.toml |
araim-reference-check |
não [4] | não [4] | não [4] | não [4] | não [2] |
ascent-losses.toml |
ascent-losses |
não [5] | não [5] | não [5] | não [5] | não [2] |
attitude-budget.toml |
attitude-budget |
não [4] | não [4] | não [4] | não [4] | não [2] |
automotive-urban-canyon.toml |
gnss-ins |
sim | sim | sim | não [6] | não [2] |
campaign-jam-spoof-holdover-integrity.toml |
campaign |
sim | sim | sim | sim | não [7] |
campaign-monte-carlo-clock-holdover.toml |
campaign |
não [7] | não [7] | não [7] | não [7] | não [7] |
campaign-optimize-link-budget.toml |
campaign |
não [7] | não [7] | não [7] | não [7] | não [7] |
campaign-shared-jammer-sea-road.toml |
campaign |
sim | sim | sim | sim | não [7] |
campaign-spectrum-holdover-integrity.toml |
campaign |
sim | sim | sim | sim | não [7] |
campaign-sweep-jammer-power.toml |
campaign |
sim | sim | sim | sim | não [7] |
celeste-iod-classical-pilot-signals.toml |
leo-signal |
não [8] | não [8] | não [8] | não [8] | não [2] |
celeste-iod-end-to-end.toml |
leo-pnt-chain |
sim | sim | sim | sim | não [2] |
celeste-iod-fused-pvt.toml |
leo-pvt |
não [9] | não [9] | não [9] | não [9] | não [2] |
cislunar-arc-recovery.toml |
cislunar-arc-recovery |
não [10] | não [10] | não [10] | não [10] | não [2] |
cislunar-observability.toml |
cislunar-observability |
não [10] | não [10] | não [10] | não [10] | não [2] |
clock-ensemble.toml |
clock |
não [4] | não [4] | não [4] | não [4] | não [2] |
clock-fitted-log.toml |
clock |
não [4] | não [4] | não [4] | não [4] | não [2] |
clock-holdover-labsr.toml |
clock |
não [4] | não [4] | não [4] | não [4] | não [2] |
clock-holdover.toml |
clock |
não [4] | não [4] | não [4] | não [4] | não [2] |
clock-measured-log.toml |
clock |
não [4] | não [4] | não [4] | não [4] | não [2] |
combined-altpnt.toml |
combined-altpnt |
sim | sim | sim | não [6] | não [2] |
conflict-resilience.toml |
conflict-resilience |
não [4] | não [4] | não [4] | não [4] | não [2] |
constellation-multi-gnss-coverage.toml |
constellation-design |
não [11] | não [11] | não [11] | não [11] | não [2] |
contact-schedule.toml |
contact-schedule |
não [1] | não [1] | não [1] | não [1] | não [2] |
earth-gnss-lunar.toml |
earth-gnss-lunar |
não [12] | não [12] | não [12] | não [12] | não [2] |
entry-heating-stardust.toml |
entry-heating |
não [13] | não [13] | não [13] | não [13] | não [2] |
eo-coverage.toml |
eo-coverage |
não [4] | não [4] | não [4] | não [4] | não [2] |
eo-radiometry.toml |
eo-radiometry |
não [5] | não [5] | não [5] | não [5] | não [2] |
ephemeris.toml |
ephemeris |
sim | sim | sim | sim | não [2] |
europa-surface-pnt.toml |
body-pnt |
não [10] | não [10] | não [10] | não [10] | não [2] |
fusion-pnt-coupled.toml |
fusion |
não [4] | não [4] | não [4] | não [4] | não [2] |
fusion-pnt.toml |
fusion |
não [4] | não [4] | não [4] | não [4] | não [2] |
gnss-ins-aviation.toml |
gnss-ins |
sim | sim | sim | não [6] | não [2] |
gnss-ins-maritime.toml |
gnss-ins |
sim | sim | sim | não [6] | não [2] |
gnss-ins-rail.toml |
gnss-ins |
sim | sim | sim | não [6] | não [2] |
gnss-ins.toml |
gnss-ins |
sim | sim | sim | não [6] | não [2] |
gnss-sim-container-terminal-skyline.toml |
gnss-sim |
sim | sim | sim | sim | não [2] |
gnss-sim-raim.toml |
gnss-sim |
sim | sim | sim | sim | não [2] |
gnss-ssv-formation-heo.toml |
gnss-ssv |
não [14] | não [14] | não [14] | não [14] | não [2] |
gnss-ssv-heo.toml |
gnss-ssv |
não [14] | não [14] | não [14] | não [14] | não [2] |
gnss-ssv-lunar-weak.toml |
gnss-ssv |
não [14] | não [14] | não [14] | não [14] | não [2] |
gnss-ssv-nav-lunar.toml |
gnss-ssv |
não [14] | não [14] | não [14] | não [14] | não [2] |
gnss-ssv-shell.toml |
gnss-ssv |
não [14] | não [14] | não [14] | não [14] | não [2] |
gps-denied-gravity-nav-egm2008.toml |
gravity-map |
sim | sim | sim | não [6] | não [2] |
gps-denied-gravity-nav.toml |
gravity-map |
sim | sim | sim | não [6] | não [2] |
gravity-map-error-mc.toml |
gravity-map |
sim | sim | sim | não [6] | não [2] |
gravity-map-nav.toml |
gravity-map |
sim | sim | sim | não [6] | não [2] |
holdover-test-example.toml |
holdover-test |
não [4] | não [4] | não [4] | não [4] | não [2] |
holdover-test-ptp4l.toml |
holdover-test |
não [4] | não [4] | não [4] | não [4] | não [2] |
hybrid-optical-rf.toml |
hybrid-optical-rf |
não [4] | não [4] | não [4] | não [4] | não [2] |
hybrid-pnt.toml |
hybrid |
não [4] | não [4] | não [4] | não [4] | não [2] |
hybrid-ukf.toml |
hybrid-ukf |
não [4] | não [4] | não [4] | não [4] | não [2] |
impairment-eval.toml |
impairment-eval |
não [4] | não [4] | não [4] | não [4] | não [2] |
imu-deadreckoning.toml |
inertial |
não [4] | não [4] | não [4] | não [4] | não [2] |
ins-trn-coast.toml |
ins-trn-coast |
não [4] | não [4] | não [4] | não [4] | não [2] |
integrity-harbour-approach.toml |
integrity |
sim | sim | sim | sim | não [2] |
integrity-raim.toml |
integrity |
sim | sim | sim | sim | não [2] |
jamming-demo.toml |
jamming |
sim | sim | sim | sim | não [2] |
jamming-harbour-approach-skyline.toml |
jamming |
sim | sim | sim | sim | não [2] |
l-band-waterfall-jamming.toml |
spectrum |
não [4] | não [4] | não [4] | não [4] | sim |
launch-window.toml |
launch-window |
não [15] | não [15] | não [15] | não [15] | não [2] |
leo-band-trade.toml |
leo-signal |
não [8] | não [8] | não [8] | não [8] | não [2] |
leo-doppler-positioning.toml |
leo-pvt |
não [9] | não [9] | não [9] | não [9] | não [2] |
leo-focus-data-services.toml |
campaign |
não [7] | não [7] | não [7] | não [7] | não [7] |
leo-focus-fused-pnt-sisre.toml |
campaign |
não [7] | não [7] | não [7] | não [7] | não [7] |
leo-focus-indoor-uhf.toml |
campaign |
sim | sim | sim | sim | não [7] |
leo-focus-iot-eirp.toml |
campaign |
sim | sim | sim | sim | não [7] |
leo-focus-ntn-bandwidth.toml |
campaign |
não [7] | não [7] | não [7] | não [7] | não [7] |
leo-focus-ppp-altitude.toml |
campaign |
não [7] | não [7] | não [7] | não [7] | não [7] |
leo-focus-science-iono-sounding.toml |
leo-pass |
sim | sim | sim | sim | não [2] |
leo-indoor-uhf.toml |
leo-pass |
sim | sim | sim | sim | não [2] |
leo-iot-energy.toml |
leo-pass |
sim | sim | sim | sim | não [2] |
leo-navmsg-celeste-iod.toml |
leo-navmsg |
não [16] | não [16] | não [16] | não [16] | não [2] |
leo-navmsg-encode-decode.toml |
leo-navmsg |
não [16] | não [16] | não [16] | não [16] | não [2] |
leo-navmsg-fit-interval-trade.toml |
leo-navmsg |
não [16] | não [16] | não [16] | não [16] | não [2] |
leo-navmsg-midpass-update.toml |
leo-navmsg |
não [16] | não [16] | não [16] | não [16] | não [2] |
leo-navmsg-model-comparison.toml |
leo-navmsg |
não [16] | não [16] | não [16] | não [16] | não [2] |
leo-pass-celeste-iod-multiband.toml |
leo-pass |
sim | sim | sim | sim | não [2] |
leo-pass-iridium.toml |
leo-pass |
sim | sim | sim | sim | não [2] |
leo-pass-vs-gnss-cn0.toml |
leo-pass |
sim | sim | sim | sim | não [2] |
leo-pass-xona-pulsar.toml |
leo-pass |
sim | sim | sim | sim | não [2] |
leo-pnt-end-to-end.toml |
leo-pnt-chain |
sim | sim | sim | sim | não [2] |
leo-pnt-mega-shell.toml |
constellation-design |
não [11] | não [11] | não [11] | não [11] | não [2] |
leo-ppp-convergence.toml |
leo-ppp |
não [9] | não [9] | não [9] | não [9] | não [2] |
leo-pvt-fjord-skyline.toml |
leo-pvt |
não [9] | não [9] | não [9] | não [9] | não [2] |
leo-resilience-gnss-jammed-leo-carries.toml |
campaign |
sim | sim | sim | sim | não [7] |
leo-resilience-js-margin.toml |
spectrum |
não [4] | não [4] | não [4] | não [4] | não [17] |
leo-resilience-multiband-diversity.toml |
campaign |
não [7] | não [7] | não [7] | não [7] | não [7] |
leo-resilience-spoof-doppler.toml |
leo-pass |
sim | sim | sim | sim | não [2] |
leo-resilience-spoof-monitors.toml |
campaign |
sim | sim | sim | sim | não [7] |
leo-timing-utc.toml |
leo-pvt |
não [9] | não [9] | não [9] | não [9] | não [2] |
leo-vertical-5g-network-timing.toml |
campaign |
sim | sim | sim | sim | não [7] |
leo-vertical-asset-tracking-iot.toml |
campaign |
sim | sim | sim | sim | não [7] |
leo-vertical-autonomous-vehicle-skyline.toml |
campaign |
sim | sim | sim | sim | não [7] |
leo-vertical-autonomous-vehicle.toml |
campaign |
sim | sim | sim | sim | não [7] |
leo-vertical-critical-infrastructure-timing.toml |
campaign |
sim | sim | sim | sim | não [7] |
leo-vertical-polar-arctic.toml |
campaign |
sim | sim | sim | sim | não [7] |
leo-vertical-rail-maritime.toml |
campaign |
sim | sim | sim | sim | não [7] |
link-budget.toml |
link-budget |
não [4] | não [4] | não [4] | não [4] | não [2] |
lunanet-araim.toml |
lunar-integrity |
não [10] | não [10] | não [10] | não [10] | não [2] |
lunar-ascent.toml |
lunar-ascent |
não [10] | não [10] | não [10] | não [10] | não [2] |
lunar-attack-surface.toml |
lunar-attack-surface |
não [10] | não [10] | não [10] | não [10] | não [2] |
lunar-beacon.toml |
lunar-beacon |
não [10] | não [10] | não [10] | não [10] | não [2] |
lunar-descent-lola.toml |
lunar-descent |
não [10] | não [10] | não [10] | não [10] | não [2] |
lunar-descent.toml |
lunar-descent |
não [10] | não [10] | não [10] | não [10] | não [2] |
lunar-differential-pnt.toml |
lunar-differential-pnt |
não [10] | não [10] | não [10] | não [10] | não [2] |
lunar-frame-campaign.toml |
lunar-frame-campaign |
não [10] | não [10] | não [10] | não [10] | não [2] |
lunar-frame-realisation.toml |
lunar-frame-realisation |
não [10] | não [10] | não [10] | não [10] | não [2] |
lunar-infrastructure-carrier-phase.toml |
lunar-infrastructure |
não [10] | não [10] | não [10] | não [10] | não [2] |
lunar-infrastructure-frame-coestimation.toml |
lunar-infrastructure |
não [10] | não [10] | não [10] | não [10] | não [2] |
lunar-infrastructure-geodesy-sensitivity.toml |
lunar-infrastructure |
não [10] | não [10] | não [10] | não [10] | não [2] |
lunar-infrastructure-od-consistency-model-error.toml |
lunar-infrastructure |
não [10] | não [10] | não [10] | não [10] | não [2] |
lunar-infrastructure-od-consistency.toml |
lunar-infrastructure |
não [10] | não [10] | não [10] | não [10] | não [2] |
lunar-infrastructure-space-tie.toml |
lunar-infrastructure |
não [10] | não [10] | não [10] | não [10] | não [2] |
lunar-interop-export.toml |
lunar-interop-export |
não [10] | não [10] | não [10] | não [10] | não [2] |
lunar-jamming.toml |
lunar-jamming |
não [10] | não [10] | não [10] | não [10] | não [2] |
lunar-joint-od-clock.toml |
lunar-joint-od-clock |
não [10] | não [10] | não [10] | não [10] | não [2] |
lunar-llr-datum.toml |
lunar-llr-datum |
não [10] | não [10] | não [10] | não [10] | não [2] |
lunar-orbit-rendezvous-elfo.toml |
lunar-orbit-rendezvous |
não [10] | não [10] | não [10] | não [10] | não [2] |
lunar-orbit-rendezvous.toml |
lunar-orbit-rendezvous |
não [10] | não [10] | não [10] | não [10] | não [2] |
lunar-relay-constellation.toml |
constellation-design |
não [11] | não [11] | não [11] | não [11] | não [2] |
lunar-station-coverage-public-sources.toml |
lunar-station-coverage |
não [10] | não [10] | não [10] | não [10] | não [2] |
lunar-station-coverage-terrain.toml |
lunar-station-coverage |
não [10] | não [10] | não [10] | não [10] | não [2] |
lunar-station-coverage.toml |
lunar-station-coverage |
não [10] | não [10] | não [10] | não [10] | não [2] |
lunar-station-geodesy-baseline.toml |
lunar-llr-datum |
não [10] | não [10] | não [10] | não [10] | não [2] |
lunar-station-geodesy-with-station.toml |
lunar-llr-datum |
não [10] | não [10] | não [10] | não [10] | não [2] |
lunar-station-time-lab.toml |
lunar-time-budget |
não [10] | não [10] | não [10] | não [10] | não [2] |
lunar-surface-terrain.toml |
lunar-surface |
não [10] | não [10] | não [10] | não [10] | não [2] |
lunar-surface.toml |
lunar-surface |
não [10] | não [10] | não [10] | não [10] | não [2] |
lunar-time-budget.toml |
lunar-time-budget |
não [10] | não [10] | não [10] | não [10] | não [2] |
lunar-time-offset.toml |
lunar-time-offset |
não [10] | não [10] | não [10] | não [10] | não [2] |
lunar-vlbi-fim.toml |
lunar-vlbi-fim |
não [10] | não [10] | não [10] | não [10] | não [2] |
lunar-vlbi.toml |
lunar-vlbi |
não [10] | não [10] | não [10] | não [10] | não [2] |
maritime-port-approach-coast.toml |
ins-trn-coast |
não [4] | não [4] | não [4] | não [4] | não [2] |
maritime-spoof-position-push.toml |
spoof-detect |
não [4] | não [4] | não [4] | não [4] | não [2] |
maritime-strait-jamming.toml |
jamming |
sim | sim | sim | sim | não [2] |
mars-orbit-pnt.toml |
body-pnt |
não [10] | não [10] | não [10] | não [10] | não [2] |
mars-pnt-lmo.toml |
mars-pnt |
não [10] | não [10] | não [10] | não [10] | não [2] |
mars-pnt-surface.toml |
mars-pnt |
não [10] | não [10] | não [10] | não [10] | não [2] |
mars-pnt-transfer.toml |
mars-pnt |
não [10] | não [10] | não [10] | não [10] | não [2] |
meo-leo-fused-pvt.toml |
leo-pvt |
não [9] | não [9] | não [9] | não [9] | não [2] |
mission-thread-artemis-class.toml |
mission-thread |
não [4] | não [4] | não [4] | não [4] | não [2] |
mission-thread-short.toml |
mission-thread |
não [4] | não [4] | não [4] | não [4] | não [2] |
moonlight-service-volume.toml |
moonlight-service-volume |
não [10] | não [10] | não [10] | não [10] | não [2] |
multi-band-jamming-waterfall.toml |
spectrum |
não [4] | não [4] | não [4] | não [4] | não [17] |
ntn-5g-positioning.toml |
ntn-positioning |
não [9] | não [9] | não [9] | não [9] | não [2] |
oem-interop.toml |
oem-interop |
não [18] | não [18] | não [18] | não [18] | não [2] |
optical-atmosphere-network.toml |
optical-atmosphere |
não [19] | não [19] | não [19] | não [19] | não [2] |
optical-atmosphere-techniques.toml |
optical-atmosphere |
não [19] | não [19] | não [19] | não [19] | não [2] |
orbit-gnss-challenged.toml |
orbit |
sim | sim | sim | sim | não [2] |
orbit-molniya.toml |
orbit |
sim | sim | sim | sim | não [2] |
orbit-multignss.toml |
orbit |
sim | sim | sim | sim | não [2] |
orbit-real-tle.toml |
orbit |
sim | sim | sim | sim | não [2] |
orbit-rinex.toml |
orbit |
sim | sim | sim | sim | não [2] |
orbit-sgp4-gps.toml |
orbit |
sim | sim | sim | sim | não [2] |
orbit-urban-canyon-skyline.toml |
orbit |
sim | sim | sim | sim | não [2] |
passes.toml |
passes |
sim | sim | sim | sim | não [2] |
polar-arctic-leo-coverage.toml |
leo-pvt |
não [9] | não [9] | não [9] | não [9] | não [2] |
pvt-abmf.toml |
pvt |
sim | sim | sim | não [6] | não [2] |
quantum-anomaly-detect.toml |
quantum-anomaly-detect |
não [4] | não [4] | não [4] | não [4] | não [2] |
quantum-cai-coast.toml |
inertial |
não [4] | não [4] | não [4] | não [4] | não [2] |
quantum-gnss-free-nav.toml |
quantum-gnss-free-nav |
não [4] | não [4] | não [4] | não [4] | não [2] |
quantum-time-transfer.toml |
quantum-time-transfer |
não [4] | não [4] | não [4] | não [4] | não [2] |
quantum-trade.toml |
quantum-trade |
não [4] | não [4] | não [4] | não [4] | não [2] |
rail-tunnel-coast.toml |
ins-trn-coast |
não [4] | não [4] | não [4] | não [4] | não [2] |
realtime-frame-eop.toml |
realtime-frame-eop |
não [4] | não [4] | não [4] | não [4] | não [2] |
reentry.toml |
reentry |
não [4] | não [4] | não [4] | não [4] | não [2] |
slot-timing-ocxo-leo.toml |
slot-timing |
não [4] | não [4] | não [4] | não [4] | não [2] |
small-uas-jammed-nav.toml |
gnss-ins |
sim | sim | sim | não [6] | não [2] |
solar-system-tour.toml |
solar-system |
não [10] | não [10] | não [10] | não [10] | não [2] |
space-packet.toml |
space-packet |
não [4] | não [4] | não [4] | não [4] | não [2] |
space-weather.toml |
space-weather |
não [4] | não [4] | não [4] | não [4] | não [2] |
spoof-attack.toml |
spoof |
não [4] | não [4] | não [4] | não [4] | não [2] |
spoof-detect.toml |
spoof-detect |
não [4] | não [4] | não [4] | não [4] | não [2] |
spoof-meaconing.toml |
spoof |
não [4] | não [4] | não [4] | não [4] | não [2] |
starlink-sop-doppler-positioning.toml |
leo-pvt |
não [9] | não [9] | não [9] | não [9] | não [2] |
sweep-clock-stability.toml |
sweep |
não [20] | não [20] | não [20] | não [20] | não [2] |
sweep-nd-inertial.toml |
sweep-nd |
não [20] | não [20] | não [20] | não [20] | não [2] |
telecom-prtc-holdover-24h.toml |
telecom-timing |
não [4] | não [4] | não [4] | não [4] | não [2] |
telecom-synce-eec.toml |
telecom-timing |
não [4] | não [4] | não [4] | não [4] | não [2] |
telecom-tie-ingest.toml |
telecom-timing |
não [4] | não [4] | não [4] | não [4] | não [2] |
terrain-nav.toml |
terrain-nav |
sim | sim | sim | não [6] | não [2] |
terrain-slam.toml |
terrain-slam |
sim | sim | sim | não [6] | não [2] |
time-transfer-budget.toml |
time-transfer-budget |
não [21] | não [21] | não [21] | não [21] | não [2] |
timetransfer.toml |
timetransfer |
não [4] | não [4] | não [4] | não [4] | não [2] |
tracking-loop.toml |
tracking-loop |
não [4] | não [4] | não [4] | não [4] | não [2] |
xona-pulsar-end-to-end.toml |
leo-pnt-chain |
sim | sim | sim | sim | não [2] |
xona-pulsar-signals.toml |
leo-signal |
não [8] | não [8] | não [8] | não [8] | não [2] |
Porque é que um formato não se aplica:
- os tipos
contact-scheduleeacm-linkplaneiam contactos de descida e codificação; exporte um cenáriopassespara o mesmo satélite e a mesma estação para ver a geometria - o SigMF contém amostras complexas em banda base, que apenas o tipo
spectrumsintetiza - o tipo
aocssimula a atitude em torno do centro de massa sem órbita nem posição no solo, pelo que não há nada a colocar na Terra - a entrada do cenário não contém nenhuma posição horizontal (nem latitude e longitude, nem coordenadas centradas na Terra, nem elementos orbitais para além, no máximo, de uma altitude), pelo que não há nada a colocar na Terra
- os tipos
eo-radiometryeascent-lossescalculam balanços sem posição na Terra - umas efemérides STK descrevem a posição e a velocidade de um veículo em função do tempo; esta cena tem apenas pontos fixos ou trajetórias sem tempo (um ponto fixo é uma Facility do STK, não umas efemérides)
- nenhum cenário membro da campanha tem algo que este formato descreva; exporte um membro isoladamente para ver o seu motivo
- o tipo
leo-signalanalisa projetos de sinal (espetros, seguimento, aquisição, compatibilidade) sem posição de satélite nem de utilizador; exporte o cenárioleo-passouleo-pnt-chainque percorre o projeto - não exportado nesta versão: os tipos de posicionamento fundido colocam os seus satélites num referencial fixo à Terra relativo a uma época que nunca nomeiam, pelo que uma exportação com marcas temporais teria de inventar a data de calendário (exporte antes o cenário
leo-passouleo-pnt-chain) - a geometria do tipo está centrada na Lua, em Marte ou noutro corpo do sistema solar; CZML, KML e GeoJSON descrevem posições na Terra ou em torno dela, e esta versão escreve efemérides STK apenas com CentralBody Earth
- não exportado nesta versão:
constellation-designcoloca os seus satélites num referencial fixo ao corpo relativo a uma época que nunca nomeia, pelo que uma exportação com marcas temporais teria de inventar a data de calendário - não exportado nesta versão: a constelação Global Navigation Satellite System (GNSS) da Terra de
earth-gnss-lunaré vista a partir de um recetor à distância lunar, cuja trajetória o tipo não expõe como série temporal - não exportado nesta versão: o tipo
entry-heatingcomunica cargas e aquecimentos máximos, e não guarda nenhuma projeção no solo com marcas temporais - o tipo
gnss-ssvvarre a disponibilidade e a intensidade da ligação para um utilizador numa camada ou numa trajetória kepleriana; não tem uma posição única para colocar num mapa - o cenário
launch-windowindica a latitude do local de lançamento mas não a longitude, pelo que o local não pode ser colocado - não exportado nesta versão: a órbita de referência de
leo-navmsgé uma referência de ajuste cujo ângulo de rotação da Terra na época é uma entrada (theta0_deg, por predefinição 0), não derivado da data de calendário, pelo que as suas posições fixas à Terra não estão ligadas a uma data - este cenário de espetro não tem bloco [iq], pelo que não são sintetizadas amostras para gravar
- não exportado nesta versão:
oem-interoplê e escreve uma Orbit Ephemeris Message do CCSDS (Consultative Committee for Space Data Systems), que é ela própria o ficheiro de intercâmbio de efemérides - o tipo
optical-atmospherecalcula estatísticas de ligação para locais em terra sem geometria com marcas temporais para colocar - o cenário varre outro cenário numa grelha; exporte o cenário varrido isoladamente
- o tipo
time-transfer-budgetcalcula um balanço de ligação e estabilidades, sem geometria com marcas temporais para colocar