keskiviikko 10. kesäkuuta 2015

Geodeettiset koordinaatistoformaatit

Törmäsin eilen Poliisiammattikorkeakoulun toimittamaan aineistoon, jossa oli mukana paikkatietoa.

Koordinaatit esitettiin aineistossa seuraavasti:

KOORDINAATTI_N,KOORDINAATTI_E
5927140,1909800
5949646,2256613
5950522,2303040
5955028,2316795
5956577,2320602
6002411,2402822


Koordinaatit olivat kuvauksen mukaan WGS84-koordinaatistossa ja niiden piti osua maanteiden varsille. Emme kuitenkaan saaneet aluksi selvää missä muodossa koordinaatit ovat, koska sellaisenaan ne eivät olleet ainakaan suoraan asteita eivätkä ne tuntuneet olevan myöskään maantieteellisiä koordinaatteja.

Sitten huomasin, että koordinaattien kolmas ja neljäs numero juoksee niin, että se ei saanut ikinä arvoja yli 60, josta mieleeni tuli, että koordinaattejahan voi esittää myös minuutteina ja sekunteina. Minuuteissa ja sekunneissa suurin arvo on tuo 60.

KOORDINAATTI_N,KOORDINAATTI_E
6059804,2537278
6059975,2540441
6100120,2348604
6100178,2426829
6100207,2422961


Ensinsiksi oletin, että koordinaatit olivat muotoa
Eli, kaksi ensimmäistä numeroa kuvaavat asteita, kaksi seuraavaa minuutteja ja loput sekunteja ja sekuntien desimaaleja. Pian huomasin kuitenkin, että sekunnit juoksivat arvoihin yli 60. Eli esimerkiksi tässä itä-koordinaatissa:
  • 2426829 → 24° 26' 82.9''
joka ei voinut ollut oikein, koska sekunnit eivät voi saada arvoa yli 60. Eli täytyi olla niin, että koordinaatit olivat muotoa:
Eli edellä mainittu koordinaattipiste on muotoa:
  • 2426829 → 24° 26.829'

Muunnos


Halusin muuntaa koordinaatit muotoon:
koska tämä on Google Mapsin suoraan tukema formaatti. Tein konvertoinnin Excelissä seuraavalla kaavalla:
  • =REGEXEXTRACT(A2, "^([0-9]{2})") & "." & TEXT(ROUND(REGEXEXTRACT(A2, "^[0-9]{2}([0-9]{5})")/1000/60*100000), "00000")
Kaava ottaa koordinaatin ensimmäiset kaksi numeroa sellaisenaan. Viisi viimeistä numeroa muunnetaan minuuteista desimaaleiksi jakamalla 60:llä, jonka jälkeen luku kerrotaan tarvittavan suurella luvulla, jotta saadaan mukaan riittävästi tarkkuutta. Lopputulos pyöristetään kokonaisluvuksi ja lisätään mahdolliset tarvittavat etunollat text()-funktiolla. Lopuksi asteet ja asteiden desimaalit yhdistetään erottamalla ne pisteellä.


Opittua


Usein kun saan käyttööni paikkatietoa ovat koordinaatistot ja formaatit jonkinmoinen murheenkryyni, joka useimmin juontaa siihen, että aineistoa ei ole kuvattu riittävällä tarkkuudella. Välillä aineistosta ei käy edes ilmi missä koordinaatistossa koordinaatit ovat. Ja kun yhdessä koordinaatistossa koordinaatit voidaan esittää useammassa formaatissa (maantieteellisesti, metrejä ja geodeettisesti, asteita), niin on ongelma vielä monimuotoisempi. Ja tosiaan, geodeettiset koordinaatit voidaan esittää myös käyttäen minuutteja ja sekunteja.