Avatar billede larsgrau Forsker
02. september 2019 - 18:45 Der er 5 kommentarer

Position converter

Hej

Jeg skal høre om der er nogen som har en løsning på at konverter et position format til andet.

jeg har dette format 57 10.54N 004 15.47W som jeg gerne vil  til have Degrees Lat Long  57.1756667 -004.2578333. jeg er lige glad hvor det skal gøre i access.

Venlig Hilsen
Lars
Avatar billede bvirk Guru
03. september 2019 - 08:34 #1
Det er jo en regneopgave!
Så vidt jeg kan se er konverteringen du giver som eksempel lidt forkert -
(60*10+54)/3600 = 0, 181667 - ikke 0,1756667

Ellers

Function dhms2dec(dhms)
    Dim hms, ms, startpos, result, delim
    Const minusTrailChar = "S.W"
    hms = Split(dhms, " ")
    For startpos = 0 To 2 Step 2
        ms = Split(hms(startpos + 1), ".")
        result = result & delim & str((Val(hms(startpos)) + (Val(ms(0)) * 60 + Val(ms(1))) / 3600) * ((Right(ms(1), 1) = Mid(minusTrailChar, startpos + 1, 1)) Or 1))
        delim = ","
    Next
    dhms2dec = result
End Function
Avatar billede kurt54 Ekspert
03. september 2019 - 21:16 #2
#bvirk googler man de to resultater og lader google map vise dem - ser det nu ud til larsgrau har en bedre konvertering end den du foreslår.
Avatar billede kurt54 Ekspert
03. september 2019 - 21:29 #3
jeg tror det er 10 komma 54 minutter  -- og ikke 10 minutter 54 sekunder
Avatar billede bvirk Guru
04. september 2019 - 09:55 #4
#kurt54, det har du ret i, jeg var blind for at det var et decimal punktum.
#larsgrau, jeg er ikke kyndig i longitude lattitude format specifikationer, så derfor ...

Fandt denne derom:
https://www.wikihow.com/Write-Latitude-and-Longitude

update

Function longLat2signLongLat(letterTrailedLongLat)
    Dim items, startpos
    items = Split(letterTrailedLongLat, " ")
    For Each startpos In Array(0, 2)
        longLat2signLongLat = longLat2signLongLat & Left(",", -(startpos > 0)) _
            & str((Val(items(startpos)) + (Val(items(startpos + 1)) / 60)) * ((Right(items(startpos + 1), 1) = Mid("S.W", startpos + 1, 1)) Or 1))
    Next
End Function
Avatar billede bvirk Guru
04. september 2019 - 09:59 #5
update, space seperation using Left(" ", -(startpos > 0))

Function longLat2signLongLat(letterTrailedLongLat)
    Dim items, startpos
    items = Split(letterTrailedLongLat, " ")
    For Each startpos In Array(0, 2)
        longLat2signLongLat = longLat2signLongLat & Left(" ", -(startpos > 0)) _
            & str((Val(items(startpos)) + (Val(items(startpos + 1)) / 60)) * ((Right(items(startpos + 1), 1) = Mid("S.W", startpos + 1, 1)) Or 1))
    Next
End Function
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester