Maidenhead-lokaattorijärjestelmä

Radioamatööriwikistä
Versio hetkellä 3. kesäkuuta 2021 kello 02.07 – tehnyt Oh6va (keskustelu | muokkaukset) (kielentarkistus, putsaus ja luokittelu)
Siirry navigaatioon Siirry hakuun

Maidenhead-ruudukko on määritelty WGS84:n kuvaamalle globaalille koordinaatistolle ja se vuorottelee pituusastetta ja leveysastetta koodaavia merkkejä pareittain. ("PiLePiLePiLe...")

Esitystapa tuo kompaktissa muodossa radioamatöörikäytössä riittävää tarkkuutta radioasemien sijaintitietoihin ja käyttötarpeesta riippuen sitä esitetään vaihtelevalla merkkimäärällä antaen paikan vähemmän tai enemmän tarkasti. Kompaktiudesta on hyötyä erityisesti sähkötyksellä tapahtuvassa viestinnässä.

Esitystavasta

Näille merkkipareille on seuraavat nimitykset:

  • Field ("kenttä")
  • Square ("ruutu")
  • Sub-Square, tai VHF touhuissa "locator"
  • Extended-locator
 Merkkejä   leveysasteen koko       Pituusasteen koko
    4           1°        111  km          2°
    6       2.5' / 2'30"  4.6  km     5.0' / 5'00"
    8      0.25' / 0'15"  462   m     0.5' / 0'30"
   10        0.625"        19.3 m         1.25"
   12        0.063"         1.9 m         0.125"

Pituusasteen (itä-länsi) lineaarinen pituus suhtautuu leveysasteen annettuun pituuteen kertoimella:

Pituusaste koodataan etelänavalta (-90°) alkavana kaarena pohjoisnavalle asti (+90°). Leveysaste koodataan alkaen 180° läntistä pituutta kulkien nollameridiaanin kautta ja päätyen 180° itäiseen pituuteen. Geodeettien tapaan tämä laskee positiivisena suuntana itään, eikä kuten USA:laiset usein: länteen.

Radioamatöörit käyttävät tätä ruudukkoa kilpailutoiminnassaan kertoen kuinka kaukana toisistaan he ovat. HF taajuuksilla käytetään 4 merkin tarkkuutta (KP30), VHF:llä yleensä 6:tta merkkiä (KP30CR), mutta on joitain erityistarpeita joilla tarvitaan tarkempaa tietoa (jos ollenkaan käytetään Maidenheadia). IARU Region 1 on määritellyt Brittien RSGB:n esityksestä 8 merkkisen "extended locator":n (KP30CR56), mutta siitä eteenpäin ei ole mitään määrityksiä ja käytetty menetelmä on vain omaa fantasiaani (joskin myös maanmittauslaitos näyttää käyttävän samaa koodausta).

Koordinaattien koodaaminen

Koodausta voi ajatella matemaattisessa mielessä lukuarvona nollan ja ykkösen (jälkimmäistä koskaan saavuttamatta) välillä siten että tekstiesityksestä on jätetty alusta "0." pois ja ollaan koodaamassa luvun "desimaaleja", joskin niin että koodauksen kantaluku vaihtelee:

  • Ensimmäinen pari koodaa kantaluvulla 18 ja merkkeinä kirjaimet 'A'..'R'.
  • Toinen koodaa kantaluvulla 10 ja numeroilla ('0'..'9').
  • Kolmas koodaa kantaluvulla 24 kirjaimilla 'A'..'X'.
  • Neljäs pari koodaa numeroita ja on siis 10
  • Viidettä paria ei ole määritelty missään ja niinpä siitä on ainakin kaksi erilaista versiota: kantaluvut 24 ja 20.
  • Kuudettakaan paria ei ole määritelty missään, mutta siinä vuorossa olisi numerot kantaluvulla 10.
  • jne... (Viestikallion työkalussa esityksen "lisätarkkuutta" luodaan vuorottelemalla toista ja kolmatta paria)


Koordinaatin muuntaminen Maidenhead-merkeiksi tapahtuu seuraavin askelin:

1. Skaalataan koordinaatti välille 0..1 (oletetaan lähtökoordinaattien muoto koodatun aluksi asteiksi ja desimaaleiksi)

  • pituus = (pituus + 90)/180
  • leveys = (leveys + 180)/360

2. Koodataan ensimmäinen kantaluku

  • # Kerrotaan koordinaatit esitysaskeleen kantaluvuilla saaden askeleen kokonaisosa
  • pituus = pituus * 18.0
  • leveys = leveys * 18.0
  • MH = chr(ord("A")+TRUNCATE(pituus))
  • MH = chr(ord("A")+TRUNCATE(leveys))
  • # Poistetaan kokonaisosa koordinaateista..
  • pituus = pituus - TRUNCATE(pituus)
  • leveys = leveys - TRUNCATE(leveys)

3. Koodataan toinen kantaluku

  • # Kerrotaan koordinaatit esitysaskeleen kantaluvuilla saaden askeleen kokonaisosa
  • pituus = pituus * 10.0
  • leveys = leveys * 10.0
  • MH .= chr(ord("0")+TRUNCATE(pituus))
  • MH .= chr(ord("0")+TRUNCATE(leveys))
  • # Poistetaan kokonaisosa koordinaateista..
  • pituus = pituus - TRUNCATE(pituus)
  • leveys = leveys - TRUNCATE(leveys)

4. Koodataan kolmas kantaluku

  • # Kerrotaan koordinaatit esitysaskeleen kantaluvuilla saaden askeleen kokonaisosa
  • pituus = pituus * 24.0
  • leveys = leveys * 24.0
  • MH .= chr(ord("A")+TRUNCATE(pituus))
  • MH .= chr(ord("A")+TRUNCATE(leveys))
  • # Poistetaan kokonaisosa koordinaateista..
  • pituus = pituus - TRUNCATE(pituus)
  • leveys = leveys - TRUNCATE(leveys)

5. Mahdollisesti toistetaan kohtia 3 ja 4 kunnes riittävä esityspituus on saatu

6. Palautetaan tuloksena MH-muuttujaan kertynyt merkkijono

Yllä ".=" on PERL-ohjelmointikielen tapa kertoa, että kohdemerkkijonomuuttujan perään lisätään lausekkeen oikealla puolella muodostettu merkki tai merkkijono. Kaiken muun pitäisi olla kaikille ohjelmoijille tuttua.

Koordinaattien parsinta

Yllä esitetylle koodaamiselle käänteinen toimenpide, joka on helppo tehdä vaikkapa näin:

1. Syöte tulee merkkijonomuuttujassa MH, kaikki kirjaimet isoja (KP30CR, ei kp30cr).
2. Asetetaan keruumuuttujat:

  • pituus = 0
  • leveys = 0

3. Asetetaan kertoimet:

  • kerroin = 1.0

4. Parsitaan ensimmäinen merkkipari:

  • kantaluku = 18.0
  • kerroin = kerroin / kantaluku
  • pituusmerkki = substr(MH, 1, 1) # Ensimmäinen merkki
  • leveysmerkki = substr(MH, 2, 1) # Toinen merkki
  • MH = substr(MH, 3) # Kolmannesta merkistä alkaen kaikki loput
  • pituus = pituus + (ord(pituusmerkki)-ord("A")) * kerroin
  • leveys = leveys + (ord(leveysmerkki)-ord("A")) * kerroin

5. Parsitaan toinen merkkipari:

  • Jos MH on tyhjä, mene kohtaan 8.
  • kantaluku = 10.0
  • kerroin = kerroin / kantaluku
  • pituusmerkki = substr(MH, 1, 1) # Ensimmäinen merkki
  • leveysmerkki = substr(MH, 2, 1) # Toinen merkki
  • MH = substr(MH, 3) # Kolmannesta merkistä alkaen kaikki loput
  • pituus = pituus + (ord(pituusmerkki)-ord("0")) * kerroin
  • leveys = leveys + (ord(leveysmerkki)-ord("0")) * kerroin

6. Parsitaan kolmas merkkipari:

  • Jos MH on tyhjä, mene kohtaan 8.
  • kantaluku = 24.0
  • kerroin = kerroin / kantaluku
  • pituusmerkki = substr(MH, 1, 1) # Ensimmäinen merkki
  • leveysmerkki = substr(MH, 2, 1) # Toinen merkki
  • MH = substr(MH, 3) # Kolmannesta merkistä alkaen kaikki loput
  • pituus = pituus + (ord(pituusmerkki)-ord("A")) * kerroin
  • leveys = leveys + (ord(leveysmerkki)-ord("A")) * kerroin

7. Palataan kohtaan 5.
8. MH merkkijono on käsitelty
8.1. Siirretään koordinaatit ruudun keskikohtaan

  • pituus = pituus + kerroin / 2
  • leveys = leveys + kerroin / 2

8.2. Skaalataan tulokset:

  • pituus = 180.0 * pituus - 90.0
  • leveys = 360.0 * leveys - 180.0

9. Palautetaan tuloksena: pituus, leveys (asteina)

Toisenlaisilla skaalauskertoimilla tuloksena on Radiaaneja (trigonometrisiin laskuihin) (Vihje: π/2, π ja 2π)


Tämä teksti on muokattu Viestikallion koordinaattityökalujen yhden lähdemodulin kommenteista.

Katso myös:

Viestikallion koodinaattityökaluja.