Horisonttiprofiilimaskit ja taivaan geometria
Versioon 0,36 asti jokainen moottorin Maan näkyvyystesti oli yksi korkeuskulman katkaisuraja, mask_deg: satelliitti laskettiin mukaan, kun se oli yhden luvun tasolla tai sen yläpuolella, suunnasta riippumatta. Katu, laituri, fjordi tai nosturi peittää osan taivasta ja jättää muun auki. Horisonttiprofiili on atsimuutista riippuva korkeuskulman raja; taivaan geometriafunktiot muuttavat kohteen, ajan, satelliittitähdistöt ja horisonttiprofiilin näkyväksi joukoksi, tarkkuuden heikkenemiskertoimeksi (DOP), geometriakovarianssiksi, horisontaaliseksi virheellipsiksi, Monte Carlo -pilveksi ja taivaskartaksi. Suunnitelma on docs/design/2026-10-12-geometry-and-skyline-design.md (kohdat 1 ja 2).
Todisteet: maskattu näkyvyyspäätös (geodeettiset katselukulmat, taulukkomaski, näkyvä joukko ja sen DOP) on VALIDATED Orekit 12,2 ja gnss_lib_py 1.0.4 vasten ennakkorekisteröidyssä vertailussa, samoin virheellipsi ja järjestelmäkohtainen kofaktori (numpy, ennakkorekisteröity); kanjoni-, sektori- ja maastoreduktiot, esiasetukset ja muut taivaan geometriafunktiot ovat MODELLED (Todisteet). Horisonttiprofiili poistaa näkölinjassa olevia satelliitteja eikä mitään muuta. Esiasetukset ovat REPRESENTATIVE-geometrioita, eivät kartoituksia.
Horisonttiprofiili#
Horisonttiprofiili on neljän kuvauksen pistekohtainen maksimi. Atsimuutti mitataan asteina myötäpäivään todellisesta pohjoisesta paikan paikallisessa itä-pohjoinen-ylös-koordinaatistossa; korkeuskulmat ovat välillä [0, 90).
| Kuvaus | TOML | Mikä se on |
|---|---|---|
| Taulukko | table = [[az, el], ...] |
Korkeuskulmat interpoloidaan lineaarisesti atsimuutin suhteen ja kierretään ympäri kohdassa 360°. Atsimuuttien on oltava aidosti kasvavia välillä [0, 360); enintään 3600 riviä. |
| Katukanjoni | street_az_deg, width_m, height_left_m, height_right_m, antenna_m, length_m |
Kaksi suoraa yhdensuuntaista seinää (alla). |
| Sektorit | sectors = [{ az_from, az_to, el_deg }] |
Terävärajaiset välit myötäpäivään alkaen kohdasta az_from (mukaan lukien) kohtaan az_to (pois lukien), jotka saavat kiertyä pohjoisen kautta; enintään 360. |
| Maasto | terrain = [{ az, distance_m, height_m }] |
Pisteet palautettuna taulukoksi: korkeuskulma atan((height_m − d²/(2 R_eff)) / d), ja kaarevuuden pudotus laskettuna vakiolla R_eff = 4/3 × 6371 km (valittu, ilmoitettu vakio). Arvo height_m mitataan antennin yläpuolelta. |
preset = "<name>" lähtee nimetystä geometriasta; kanjonin kentät ohittavat sen jälkeen esiasetuksen kanjonin kenttä kerrallaan, ja table, sectors ja terrain lisäävät siihen.
Vastaanottimen mask_deg säilyttää merkityksensä: se on tasainen horisonttiprofiili. Tehollinen katkaisu atsimuutilla az on max(mask_deg, skyline(az)), ja satelliitti on näkyvissä, kun sen korkeuskulma on vähintään yhtä suuri kuin se: sama >=, jota tasainen maski on aina käyttänyt. Satelliitti, joka on arvon mask_deg yläpuolella mutta horisonttiprofiilin alapuolella, on horisonttiprofiilin peittämä.
Katukanjoni#
Katu kulkee atsimuutin s suuntaisesti, seinien välillä on w metriä ja antenni on a metriä korkealla keskilinjalla. Atsimuutilla az, kun θ = az − s, säde osuu seinään etäisyydellä d(az) = (w/2) / |sin θ|, joten seinä, jonka korkeus on h, katkaisee kulmassa
cut(az) = atan( (h − a) / d(az) ) (the right wall for sin θ > 0, the side at s + 90°)
Avoin kaista on kadun suuntainen. Kun length_m = L (antenni keskellä), säde poistuu avoimen pään kautta eikä seinä katkaise mitään, kun d(az) · |cos θ| > L/2. Seinä, joka ei ole antennia korkeampi, ei katkaise mitään. Oletusarvo kentälle antenna_m on 1,5 m (auton katto tai käsivastaanotin, ilmoitettu valinta); uusi kanjoni tarvitsee kentän width_m.
Esiasetukset#
Valitut ja ilmoitetut mitat (suunnittelumuistion), eivät minkään todellisen paikan mittauksia. kshana skyline --preset <name> tulostaa yhden lähteineen ja katkaisukulmineen jokaiselle asteelle.
| Esiasetus | Geometria | Alkuperä |
|---|---|---|
city-street |
Kanjoni: katu 0°, leveys 20 m, seinät 30 m ja 30 m, antenni 1,5 m. 70,7° kadun poikki, avoin sen suunnassa. | Korkeuden ja leveyden suhde 1,5 on katukanjonien sivusuhteiden vaihteluvälin 0,5–2 sisällä teoksessa Oke (1988), Street design and urban canopy layer climate, Energy and Buildings 11, 103–113. |
harbour-approach |
Sektorit: avoin merelle päin välillä 090–270 (180°); satamalaiturin rakennukset 8° välillä 315–045 (90°); aallonmurtaja ja sen valo 3° väleillä 045–090 ja 270–315. | Valittuja ja ilmoitettuja arvoja (esimerkiksi 40 m varastot noin 285 m päässä). |
fjord |
Maasto: seinät 600 m antennin yläpuolella 1500 m päässä kummallakin puolella pohjois-eteläsuuntaista kanavaa, yksi piste astetta kohti (etäisyydellä 1500/|sin az| m), kaarevuuden pudotus huomioituna. 21,8° poikittain, alle 1° akselin suunnassa. |
Syvien länsinorjalaisten vuonojen leveyden ja korkeuserojen suuruusluokka (Holtedahl (1967), Notes on the formation of fjords and fjord-valleys, Geografiska Annaler 49A, 193–203). |
container-terminal |
Sektorit: konttipinot 12° maanpuoleisella puoliskolla 000–180; nosturin puomit 35° välillä 245–255 ja 25° välillä 285–295; muualla avoin vedelle. | Viisi ISO 668 high-cube-konttia (14,5 m) noin 60 m päässä antennista, joka on 2 m korkeudella; puomi noin 50 m laiturin yläpuolella 70 m ja 100 m päässä, post-Panamax-nosturin suuruusluokkaa. Nosturisektori on läpinäkymätön. |
Skenaariossa#
Valinnainen osio [skyline] tyypin oman katkaisukulman päällä:
| Tyyppi | Mitä horisonttiprofiili muuttaa | Näytettä kohti |
|---|---|---|
orbit (kentän user_site kanssa) |
Näkyvyysaikajana (GNSS:n saatavuus) ja DOP-yhteenveto. | — |
integrity (kentän user_site kanssa) |
Satelliitit, joita RAIM ja ARAIM (araim_dual) käyttävät. |
epochs[].masked_by_skyline |
gnss-sim |
Satelliitit, joiden pseudoetäisyydet simuloidaan ja joita RAIM käyttää. | gnss_measurements[].masked_by_skyline |
jamming |
Satelliitit, joita vastaanotin voi seurata ennen häirintälähetintä. | epochs[].masked_by_skyline |
leo-pvt |
Jokaisen tilan näkyvissä oleva joukko kunkin järjestelmän oman maskin päällä, napapyyhkäisy mukaan lukien (sama horisonttiprofiili kaikissa paikoissa). Doppler-tilan verhokäyrä ja suunniteltu yksittäinen ylilento ovat rajoja sille, mitä vastaanottimen on kyettävä käsittelemään, ja ne säilyttävät kunkin järjestelmän maskin. | joint.epochs[].masked_by_skyline |
leo-pass |
Mitkä epookit lasketaan maskin yläpuolisiksi, maskin yläpuolella vietetty aika sekä GNSS-vertailun satelliitit. | satellites[].pass.epochs_masked_by_skyline |
nmea-scenario (harjoitus-NMEA) |
GSV-sanomassa ja paikkaratkaisussa olevat satelliitit. Atsimuutit ovat maahan sidottuja todellisia suuntimia, eivät aluksen keulasuuntaa. | — |
Tyyppien orbit ja integrity maa-asema. Molemmat tyypit mallintavat kiertoradalla olevaa käyttäjää geosentrisellä korkeuskulmalla ja ilman maahan sidottua atsimuuttia, joten ne ottavat horisonttiprofiilin vastaan vain suunnittelumuistion maa-asematilassa: user_site = { lat_deg, lon_deg, height_m } kentän user sijaan (täsmälleen toinen kahdesta). Jokainen näyte on yksi absoluuttinen hetki, epoch + t: jokainen satelliitti propagoidaan siihen (elementtijoukko, lähetetty efemeridi tai SP3-tiedosto etenee omasta epookistaan, Walker-satelliitti laskee ajan t hetkestä epoch) ja kierretään maahan sidottuun koordinaatistoon sillä hetkellä, joten paikka näkee yhden johdonmukaisen taivaan. Epookki epoch on kiertorataskenaarion oma; jos sellaista ei ole (ja aina tyypille integrity, jolla sitä ei ole), se on uusin epookki niiden satelliittien joukossa, joilla se on, tai J2000 vain Walker-kuvioille. Korkeuskulma ja atsimuutti ovat geodeettisia (WGS-84). Eheystyypin ARAIM-suojaustasojen ja Stanfordin pystyvirheen vaaka- ja pystyjako käyttää samaa geodeettista ylöspäin-suuntaa (WGS-84-ellipsoidin normaali, noin 0,19° geosentrisestä radiaalista leveysasteella 45°); hetkellinen RAIM käytti sitä jo. Kenttä user_site ilman horisonttiprofiilia on tavallinen maakäyttäjä; kiertoradalla olevan käyttäjän (user) polku on ennallaan.
kind = "integrity"
mask_deg = 5.0
# ...
[user_site]
lat_deg = 59.45
lon_deg = 24.75
height_m = 15.0
[skyline]
preset = "harbour-approach"
Taaksepäin yhteensopivuus. Ilman osiota [skyline] skenaario on tavu tavulta identtinen sen kanssa, minkä sama moottori antoi ennen horisonttiprofiilikoodin olemassaoloa: tests/skyline_scenarios.rs tarkistaa jokaisen toimitetun skenaarion JSON-, kaavio- ja yhteenvetotulosteen, jos skenaario ajaa jonkin näistä tyypeistä, sekä jokaisen harjoitusskenaarion NMEA-tekstin, SHA-256-tiivisteitä vasten ”0,36 portable” -lähtötasosta (julkaisun 0.35.0 commit-tiivisteet, päivitettiin uudelleen, kun moottori siirtyi siirrettävään matematiikkaan, ja säilytetty testissä tietueena: docs/revisions/STUDIO15-portable-math-rebaseline.md). Tyhjä osio [skyline] ei katkaise mitään; tulos on silloin sama kuin ajo ilman sitä, lukuun ottamatta lisättyä lohkoa skyline ja nollaksi jääviä laskureita masked_by_skyline.
Mitä hylätään, syy ilmoitetaan viestissä: horisonttiprofiili kiertoradalla olevalle käyttäjälle user; user ja user_site yhdessä; tuntematon esiasetus; kanjoni ilman kenttää width_m; taulukko, joka ei ole aidosti kasvava välillä [0, 360); korkeuskulma välin [0, 90) ulkopuolella; tyhjä sektori; ei-positiivinen maastoetäisyys; rajat ylittävä syöte; mikä tahansa tuntematon avain.
Tulos saa kentän skyline: { source, open_fraction, provenance }, kun osio on mukana: source on preset:<name>, preset:<name>+overrides tai custom; open_fraction on ylemmän pallonpuoliskon avaruuskulman osuus arvon max(mask_deg, skyline) yläpuolella (arvon 1 − sin(cut) keskiarvo atsimuutin yli: 1 nollamaskille, 0,5 tasaiselle 30° katkaisulle); provenance on esiasetuksen rivi tai skenaarion oma. Yksiköt ja alkuperäluokat ovat lohkossa units.
Mukana toimitetut esimerkit (kshana example <name>):
| Esimerkki | Mitä se näyttää (poista osio [skyline] vertaillaksesi) |
|---|---|
orbit-urban-canyon-skyline |
GPS + Galileo esimerkin city-street alimmassa kohdassa: paikkaratkaisu säilyy 17 näytteellä kaikista 289 näytteestä, mediaani-PDOP 70,5 (1,14 avoimen taivaan alla). |
integrity-harbour-approach |
Kaksitähdistöinen ARAIM satamaan saavuttaessa: 70 piilotettua satelliitti-epookkia, saatavuus ennallaan (145 kaikista 145). |
gnss-sim-container-terminal-skyline |
Pseudoetäisyydet ja RAIM laiturilla: 44 piilotettua satelliitti-epookkia; RAIM-saatavuus 0,59 (0,85 avoimen taivaan alla). |
jamming-harbour-approach-skyline |
Häirintälähetin, jonka teho on 2 W, satamassa: 83 piilotettua satelliitti-epookkia, seuranta ennallaan (häirintälähetin oli jo vienyt ne). |
leo-pvt-fjord-skyline |
GPS + Galileo + LEO-kerros vuonossa: yhdistetyn PDOP-arvon mediaani 1,14 (0,93 avoimen taivaan alla). |
leo-vertical-autonomous-vehicle-skyline |
Kanjoni leo-vertical-autonomous-vehicle tasaisena 35° katkaisuna ja kohtana city-street käännettynä auton suuntaan: 8 vastaan 4–5 GPS- ja Galileo-satelliittia; yhdistetty keskivirhe 2,1 m molemmissa; hälytys (raja 1,5 m) annetaan 51 % ja 59 % epookeista. |
Taivaan geometria#
Viisi moottorifunktiota (src/geometry.rs), samat jokaisella pinnalla:
| Funktio | Syöte → tulos |
|---|---|
sky_geometry(request) |
satelliittikohtaisesti id, system, az_deg, el_deg, cut_deg, visible, masked; n_visible, n_masked, open_fraction; dop (GDOP, PDOP, HDOP, VDOP, TDOP, tdop_by_clock); states, cofactor_enu (yksikkövarianssi), covariance_enu_m2; ellipse_1sigma ja ellipse pyydetyllä luottamustasolla; label, statement, advisory |
sky_monte_carlo(request, seed, n) |
n (enintään 5000, syötteen yläraja) pienimmän neliösumman virhettä riippumattomilla gaussisilla etäisyysvirheillä σ_UERE ChaCha8-virrasta, jonka siemenluku on seed: samples_enu_m, empiirinen kovarianssi, vaakasuuntainen ja 3-D-RMS arvojen σ_UERE × HDOP ja σ_UERE × PDOP rinnalla sekä 95 % ellipsin sisälle jäävä osuus |
skyline_presets() |
esiasetukset nimikkeineen, kuvauksineen, alkuperineen, katkaisukulmineen jokaiselle asteelle sekä open_fraction |
skyline_profile(skyline) |
horisonttiprofiiliosio typistettynä moottorin käyttämäksi 360-alkioiseksi taulukoksi, jossa source, provenance, open_fraction |
skyplot_svg(request) |
taivaskartta staattisena SVG:nä (ei skriptiä, ei ulkoista viittausta, jokainen syötemerkkijono suojattu erikoismerkeiltä) |
Pyyntö:
{
"site": {"lat_deg": 59.91, "lon_deg": 10.75, "height_m": 5},
"time_s": 3600,
"systems": ["gps-baseline", "galileo", "beidou-meo", "xona-pulsar"],
"mask_deg": 5,
"skyline": {"preset": "fjord"},
"clock": "per-system",
"sigma_uere_m": 1.5,
"confidence": 0.95
}
systems ovat moottorin tähdistöesiasetuksia (kentän constellation-design gps-baseline, galileo, beidou-meo, glonass, ...; LEO-esiasetukset xona-pulsar, iridium-stl, ...) tai täysi taulukko [[system]] tyypin leo-pvt tapaan, propagoituna hetkeen time_s (Kepler-rata sekulaarilla J2-termillä, leo-pvt-yhteistilan radat). Niiden suhteelliset vaiheet tulevat eri vertailuepookeista, joten taivas on edustava geometria, ei kyseisen päivän taivas kyseisessä paikassa. Satelliitit voi sen sijaan (tai lisäksi) antaa suoraan: "satellites": [{"id": "G05", "system": "GPS", "az_deg": 120, "el_deg": 35}, ...], tai kentillä "ecef_m": [x, y, z] ja site tai user_ecef_m. Oletukset: kunkin järjestelmän oma maski (5° GNSS, 10° LEO; 5° suoraan annetuille satelliiteille), yksi vastaanottimen kello järjestelmää kohti ("common" yhdelle jaetulle kellolle), σ_UERE 1 m (edustava kaksitaajuusbudjetin rivi), luottamustaso 0,95. Syötteen rajat: enintään 2000 horisontin yläpuolella olevaa satelliittia (tätä enemmän pyytävä järjestelmätaulukko hylätään ennen sen rakentamista) ja 16 vastaanottimen kelloa.
Päivätty taivas elementtijoukoista. "tle" ottaa kaksirivisen elementtijoukkotekstin (nimirivi ennen kutakin joukkoa on valinnainen; enintään 4 MiB, syötteen yläraja), jonka moottorin SGP4 (WGS-72, propagaattori, jota orbit-real-tle käyttää) propagoi hetkeen "epoch" plus time_s, kierretään Maahan sidottuun koordinaatistoon siten, että UT1 on UTC ja napaliikettä ei ole, ja nähdään paikasta site. "epoch" on UTC-aikaa ISO 8601 -muodossa (2026-06-07T12:00:00Z) ja ajoittaa vain elementtijoukot (esiasetuksilla ei ole päiväystä, joten epoch ilman tle hylätään); "tle_system" nimeää ne järjestelmäkohtaiselle kellolle (oletus TLE). Jokainen tulos kertoo, mikä taivas se on, kentissä sky_source ja sky_statement:
sky_source |
Taivas |
|---|---|
presets |
moottorin tähdistöesiasetukset: edustava geometria |
tle-at-epoch |
elementtijoukot propagoituna ilmoitettuun epookkiin: taivas, jonka nuo elementtijoukot antavat kyseisellä epookilla, ei sen mittaus (niiden oma tarkkuus on SGP4:n ja joukkojen iän mukainen) |
tle-at-element-epoch |
ei kenttää epoch: elementtijoukot propagoituna uusimman joukon omaan epookkiin plus time_s, edustava taivas |
satellites |
suoraan annetut satelliitit sellaisinaan |
Yhdistelmä liittää ne yhteen merkillä +. epoch_utc on hetki, johon elementtijoukot propagoitiin, ja tle_skipped nimeää, mitä tekstistä ei käytetty, syineen: virheelliset tai orvoksi jääneet elementtijoukkorivit (rivinumeroineen), jäsentimen hylkäämät joukot sekä joukot, joita SGP4 ei voinut propagoida kyseiseen hetkeen (rappeutuneet tai rajojensa ulkopuolella); enintään 100 merkintää yhteensä, sitten yksi viimeinen merkintä, joka laskee loput. Tyhjä lista systems ei lisää esiasetuksia. Taivaskartta ilmoittaa perusteen alatunnisteessaan.
Yksi ydin. Kofaktorimatriisi on orbit::cofactor_from_los, eli suunnittelumatriisin kokoaminen ja Gauss–Jordan-käänteismatriisi, jotka ovat funktion orbit::dop takana. orbit::dop_cov paljastaa kovarianssin ja orbit::dop on sen redusointi, joten VALIDATED-skalaarit ovat ennallaan ja edelleen testin tests/dop_reference.rs lukitsemia. Toista DOP-toteutusta ei ole.
Ellipsi. Puoliakselit k σ √λ itä–pohjoinen-lohkon ominaisarvoille λ, kun k = √(−2 ln(1 − p)) (√5.991 = 2.448 kohdassa 95 %, 1 kohdassa 39,35 %), ja pääakselin atsimuutti ½ atan2(2 Q_EN, Q_NN − Q_EE) välillä [0, 180) pohjoisesta.
| Pinta | Sisääntulopisteet |
|---|---|
| CLI | kshana sky <request.json|toml> tai kshana sky --site <lat,lon[,h]> (--systems <a,b> | --tle <file>) [--epoch] [--tle-system] [--time] [--mask] [--skyline-preset] [--uere] [--clock], valitsimilla --monte-carlo <n> --seed <s> tai --svg; kshana skyline --preset <name> | --presets | --profile <file> |
| Rust | kshana::geometry::{sky_geometry, sky_monte_carlo, skyline_presets, skyline_profile, skyplot_svg}, samannimiset kshana::surface::* |
| Python | kshana.sky_geometry, sky_monte_carlo, skyline_presets, skyline_profile, skyplot_svg |
| WASM | sky_geometry(request_json), sky_monte_carlo(request_json, seed, n), skyline_presets(), skyline_profile(skyline_json), skyplot_svg(request_json) |
| MCP | sky_geometry (request tai skyline_preset); ei Monte Carloa MCP:n kautta (massanäytteet, jotka agentin pitäisi tiivistää eikä kuljettaa) |
Jokainen tulos sisältää kentän label (MODELLED), kentän statement (geometria ilmoitetun virhemallin alla: riippumattomat, yhtä suuret, nollakeskiarvoiset gaussiset etäisyysvirheet; ei ennuste vastaanottimen todellisesta virheestä, jossa on myös harhoja, monitie-etenemistä ja näköyhteydettömiä virheitä; ei eheysraja) sekä ohjeellisen lauseen: Ohjeellinen ohjelmisto, ei tyyppihyväksytty navigointilaite (IEC 61108, IEC 61162): käyttäjä vastaa edelleen aluksen navigoinnista.
Todisteet#
Viisi kirjanpitoriviä (docs/VERIFICATION-MATRIX.md), sellaisina kuin suunnittelumuistio ne rajaa:
| Rivi | Tila | Oraakkeli |
|---|---|---|
| Atsimuutista riippuva horisonttimaski: näkyvä joukko, atsimuutti ja korkeuskulma sekä DOP maskin alla | VALIDATED | Orekit 12,2 (katselukulmat luokalla TopocentricFrame, ElevationMask) ja gnss_lib_py 1.0.4 (get_dop ja DOP-matriisi), ennakkorekisteröity tiedostossa xval/orekit-skyline/PREREGISTRATION.md (commit e4b9d912) ennen kuin kumpaakaan ajettiin: 1173 katselukulmaa kuudessa paikassa ja neljällä epookilla, kuusi taulukkoa, 142 näkyvää joukkoa; pahin korkeuskulma 1.3e-13°, atsimuutti 2.3e-13°, maski 1.1e-12° vastaan 1e-9°; identtiset näkyvät joukot, ei yhtään rajakaistalla; DOP 3.3e-13 suhteellisesti ja kofaktori 6.6e-13 matriisin mittakaavasta vastaan 1e-9. Rajaus: taulukkomaskit, geodeettiset katselukulmat, maskattu joukko sekä sen yhteiskellon DOP ja kofaktori. |
| Katukanjonin, sektorien ja maaston supistaminen taulukoksi | MODELLED | käsin lasketut arvot; yllä oleva vertailu lukee niiden taulukot syötteinä eikä tarkista niitä |
| Horisonttiprofiilin esiasetukset | MODELLED | ei mitään: valitut, ilmoitetut mitat (tarkistettu vain itseään vastaan) |
| Vaakavirheen ellipsi ja järjestelmäkohtainen kofaktori geometrian kovarianssista | VALIDATED | numpy 2.5.4: linalg.inv ja linalg.eigh (standardi P2) 142 tallennetulla näkyvällä joukolla, yhteinen kello ja yksi kello järjestelmää kohti, ennakkorekisteröity tiedostossa xval/numpy-ellipse/PREREGISTRATION.md (commit 0bbeeaee): 270 tapausta, akselit 5.1e-13 suhteellisesti, suunta 5.3e-12°, kofaktori 1.0e-12 matriisin mittakaavasta, vastaan 1e-9 ja 1e-6° |
| Taivasgeometriafunktiot | MODELLED | koostaminen: esiasetuksen propagointi edustavaksi taivaaksi, Monte Carlo -pilvi (tarkistettu sen otannoimaa geometriaa vasten), pinnat |
Osion [skyline] puuttuminen tarkistetaan tavu tavulta julkaisun 0.35.0 tulosteita vasten, mikä osoittaa taaksepäin yhteensopivuuden eikä validoi mitään. gnss_lib_py soveltaa vain yhtä korkeuskulmamaskia, joten se on tässä DOP-oraakkeli, ei maskioraakkeli.
Mitä horisonttiprofiili ei mallinna: diffraktio seinän reunan yli, heijastukset ja näköyhteydettömät signaalit, joita todellinen vastaanotin voi silti seurata (ne pudotetaan, ei heikennetä), osittainen läpinäkyvyys (ristikkonosturi on läpinäkymätön koko sektorillaan), annettujen pisteiden ulkopuolinen maasto sekä Maan kaarevuus kanjoni- ja sektorimuodoissa.