04. januar 2017 - 20:10Der er
16 kommentarer og 2 løsninger
Position konverter
Hej
Jeg har denne kode til at konverter decimalgrader til grader minutter sekunder.
Function Convert_Degree(Decimal_Deg) As Variant With Application 'Set degree to Integer of Argument Passed Degrees = Int(Decimal_Deg) 'Set minutes to 60 times the number to the right 'of the decimal for the variable Decimal_Deg Minutes = (Decimal_Deg - Degrees) * 60 'Set seconds to 60 times the number to the right of the 'decimal for the variable Minute Seconds = Format(((Minutes - Int(Minutes)) * 60), "0") 'Returns the Result of degree conversion '(for example, 10.46 = 10~ 27 ' 36") Convert_Degree = " " & Degrees & "° " & Int(Minutes) & "' " _ & Seconds + Chr(34) End With End Function
Den virker også godt nok hvis man skal konverter nord og øst grader, men når man skal konverter syd og west decimalgrader kniber det noget.
eks. 10,4646 bliver til 10° 27' 53", men hvis man skriver -10,4646 så bliver det til -11° 32' 7", men du skulle være 10°27'52.56, nogen som har en ide til at løse det ?
#3 - Jeg kan ikke se nogen fejl i Linket, så jeg ved ikke lige hvad der skulle være problemet. Du kan evt. give mig din email, så skal jeg sende den til dig. Du kan gøre det, ved at sende mig en besked, på min brugerprofil, med din email.
#7 - Det som du skriver, forstår jeg ikke rigtig! Det eksempel jeg sendte dig (som formel), gør jo netop, at du kun skal indtaste decimal grader, og så laver formlen det som du efterlyste, (Grader, minutter og sekunder), og ydermere fortæller den om du er på den Nordlige / Sydlige halvkugle, og om du er Øst / Vest.
'Set degree to Integer of Argument Passed degrees = Int(Decimal_Deg) 'Set minutes to 60 times the number to the right 'of the decimal for the variable Decimal_Deg minutes = (Decimal_Deg - degrees) * 60 'Set seconds to 60 times the number to the right of the 'decimal for the variable Minute seconds = Format(((minutes - Int(minutes)) * 60), "0.000") 'Returns the Result of degree conversion '(for example, 10.46 = 10~ 27 ' 36") Convert_Degree = IIf(Neg, "-", "") & " " & degrees & "° " & Int(minutes) & "' " _ & seconds + Chr(34)
'Set degree to Integer of Argument Passed degrees = Int(Decimal_Deg) 'Set minutes to 60 times the number to the right 'of the decimal for the variable Decimal_Deg minutes = Format(((Decimal_Deg - degrees) * 60), "00") 'Set seconds to 60 times the number to the right of the 'decimal for the variable Minute seconds = Format(((minutes - Int(minutes)) * 60), "00") 'Returns the Result of degree conversion '(for example, 10.46 = 10~ 27 ' 36") Convert_Degree = IIf(Neg, "-", "") & " " & degrees & "° " & Int(minutes) & "' " _ & seconds + Chr(34)
'Set degree to Integer of Argument Passed degrees = Int(Decimal_Deg) degrees_for = Format(Int(Decimal_Deg), "000") 'Set minutes to 60 times the number to the right 'of the decimal for the variable Decimal_Deg minutes = (Decimal_Deg - degrees) * 60 minutes_for = Format(((Decimal_Deg - degrees) * 60), "00") 'Set seconds to 60 times the number to the right of the 'decimal for the variable Minute seconds = Format(((minutes - Int(minutes)) * 60), "00") 'Returns the Result of degree conversion '(for example, 10.46 = 10~ 27 ' 36") Convert_DegreeS = IIf(Neg, "", "") & " " & degrees_for & "° " & minutes_for & "' " _ & seconds + Chr(34) & "S"
kan man får den til at lade være med at runde tal op og ned, da det betyder en hel del med hensyn til positionen,
Hvis man regner med decimal graden 10.5757 så skal den rigtige position være 10° 34' 32"N, men den kommer med 10° 35' 32,52"N og i dette tilfælde er det ca. 0,7 mil(1296 meter) og det der meget ved siden af. nogen som har en ide til at runde minutes ned til et helt tal hver gang?
Det er fordi, at du har en fejl i din kode! Hvis du kører koden som jeg lagde i #10, vil du se, at den beregner korrekt!
Synes godt om
Ny brugerNybegynder
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.