Szukam narzędzia online lub narzędzia, które mogę pobrać, aby przekonwertować DD na DMS.
Na przykład chcę przekonwertować z:
41.590833, -93.620833 do 41 ° 35 ′ 27 ″ N, 93 ° 37 ′ 15 ″ W ... Są to współrzędne, według Geohacka , dla Des Moines.
Szukam narzędzia online lub narzędzia, które mogę pobrać, aby przekonwertować DD na DMS.
Na przykład chcę przekonwertować z:
41.590833, -93.620833 do 41 ° 35 ′ 27 ″ N, 93 ° 37 ′ 15 ″ W ... Są to współrzędne, według Geohacka , dla Des Moines.
Odpowiedzi:
Ponieważ nawet kod Microsoft jest wadliwy, przydatne może być podanie poprawnego pseudokodu do konwersji.
Aby przekonwertować dziesiętne stopnie x na stopnie ( d ), minuty ( m ) i (dziesiętne) sekundy ( s ), wykonaj następujące czynności:
Declare d, m as integer, s as float
If x < 0, then sign = -1 else sign = +1
Let y = Abs(x) ' Work with positive values only.
Let d = Int(y) ' Whole degrees. Floor() is ok too.
Let z = 60*(y - d) ' The fractional degrees, converted to minutes.
Let m = Int(z) ' Whole minutes.
Let s = 60*(z - m) ' The fractional minutes, converted to seconds.
Assert sign*(((s/60) + m)/60 + d) == x ' This confirms a correct result.
Return (sign*d, m, s)
Zamiast zwracać podpisany dyplom, możesz wskazać N / S lub E / W na końcu:
If x is a latitude, then
If sign == -1 then hemisphere = "S" else hemisphere = "N"
Else {x is a longitude}
If sign == -1 then hemisphere = "W" else hemisphere = "E"
End if
Return (d, m, s, hemisphere)
Jeśli chcesz, możesz zaokrąglić s do liczby całkowitej i sformatować wyniki, aby pasowały do formularza podanego w pytaniu.
Nie jest to zbyt skomplikowane, ale zazwyczaj korzystam z tej strony . Ale przeanalizujmy szerokość geograficzną w twoim przykładzie. Stopnie dziesiętne są takie same, w tym przypadku 41. Teraz weź resztę i pomnóż przez 60. To daje 35,44998. Część całkowita to sekundy (35 '). Teraz weź resztę i pomnóż ponownie przez 60. Otrzymasz sekundy (26,9998), co pozytywnie porównuje się z twoimi ustaleniami powyżej.
Spójrz na tę bibliotekę python https://github.com/ewheeler/PyDecimalDegrees
lub te skrypty online / offline oparte na Perlu http://www.movable-type.co.uk/scripts/latlong.html
To może ci pomóc. Spróbuj. http://transition.fcc.gov/mb/audio/bickel/DDDMMSS-decimal.html
Jest ładna prosta klasa, aby to zrobić na StackOverflow w C #: /programming/4504956/formatting-double-to-latitude-longitude-human-readable-format