Een plek op Aarde wordt in bolcoördinaten aangeduid met een paar coördinaten die respectievelijk de breedte- en lengtegraad aangeven. De breedtegraad is de hoek die de verbindingslijn tussen die plek en het middelpunt van de Aarde maakt met het vlak van de evenaar, en varieert van -90° tot 90° (beide ingesloten). De lengtegraad is de hoek tussen het meridiaanvlak van Greenwich en het meridiaanvlak van het meetpunt, en varieert van -180° tot 180° (halfopen interval waarin -180° wordt uitgesloten).

plaatsbepaling

In de meest eenvoudige decimale notatie wordt een coördinaat aangegeven als een reëel getal dat het aantal graden aanduidt. Negatieve getallen staan voor zuiderbreedte of westerlengte, en positieve getallen voor noorderbreedte of oosterlengte. In GMS notatie wordt een graad (*) verder onderverdeeld in 60 minuten ('), en wordt een minuut verder onderverdeeld in 60 seconden ("). Aan een breedtegraad $$b$$ wordt een Z (zuiderbreedte) toegevoegd indien die op het zuidelijk halfrond gelegen is ($$?90° \leq b \leq 0°$$), en een N (noorderbreedte) indien die op het noordelijk halfrond gelegen is ($$0° < b \leq 90°$$). Aan een lengtegraad $$l$$ wordt een W (westerlengte) toegevoegd indien die ten westen van de nulmeridiaan gelegen is ($$?180°< l \leq 0°)$$ en een O (oosterlengte) indien die ten oosten van de nulmeridiaan gelegen is ($$0° < l \leq 180°$$).

Opgave

  1. Schrijf een functie graden2GMS die een gegeven coördinaat $$g$$ ($$g \in \mathbb{R}$$, met $$g \geq 0$$) in decimale notatie omzet naar de corresponderende GMS notatie. De coördinaat $$g$$ moet als reëel getal aan de functie doorgegeven worden. De functie moet als resultaat een string met formaat G*M'S" teruggeven, als voorstelling van de coördinaat in GMS notatie. De waarden $$G$$, $$M$$ en $$S$$ worden op de volgende manier berekend:

    • het aantal graden $$G$$ is de absolute waarde van het deel voor het decimale punt van $$g$$: $$87,728055 = 87\ \text{graden}$$    

    • vermenigvuldig het deel na het decimale punt van $$G$$ met 60; het aantal minuten $$M$$ is het deel voor het decimale punt van de bekomen waarde: $$0,728055 \times 60 = 43,6833 = 43\ \text{minuten}$$

    • vermenigvuldig het deel na het decimale punt van de minuten met 60; het aantal seconden $$S$$ wordt bekomen door dit getal af te ronden naar het dichtstbijzijnde natuurlijk getal: $$0,6833 \times 60 = 40,998 = 41\ \text{seconden}$$

    • het finale resultaat is de string 87*43'41"

  2. Gebruik de functie graden2GMS om een functie coord2GMS te schrijven. Aan deze functie moeten twee reële argumenten meegegeven worden, die respectievelijk een breedte- en lengtegraad voorstellen uitgedrukt in decimale notatie. De functie moet als resultaat een string teruggeven die de plaatsbepaling gegeven door de twee coördinaten weergeeft in GMS notatie. Zo moet de functie voor de waarden 40,446195 en -79,948862 de string 40*26'46"N 79*56'56"W als resultaat teruggeven. Indien een ongeldige lengte- of breedtegraad wordt doorgegeven aan de functie, moet de string ongeldig als resultaat teruggegeven worden.

Voorbeeld

>>> print(graden2GMS(40.446195))
40*26'46"
>>> print(graden2GMS(79.948862))
79*56'56"
>>> print(coord2GMS(40.446195, -79.948862))
40*26'46"N 79*56'56"W
>>> print(coord2GMS(-83.827439, -180.0))
ongeldig