Я шукаю або онлайн-інструмент, або той, який я можу завантажити, щоб конвертувати DD в DMS.
Наприклад, я хочу конвертувати з:
41.590833, -93.620833 до 41 ° 35 ′ 27 ″ пн.ш., 93 ° 37 ′ 15 ″ ш ... Це координати, згідно з Geohack , для Де-Мойн.
Я шукаю або онлайн-інструмент, або той, який я можу завантажити, щоб конвертувати DD в DMS.
Наприклад, я хочу конвертувати з:
41.590833, -93.620833 до 41 ° 35 ′ 27 ″ пн.ш., 93 ° 37 ′ 15 ″ ш ... Це координати, згідно з Geohack , для Де-Мойн.
Відповіді:
Оскільки навіть код Microsoft є помилковим, це може бути корисно надати правильний псевдокод для перетворення.
Для перетворення десяткових градусів х в градуси ( д ), хв ( м ) і (десятковий) секунд ( и ), зробіть наступне:
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)
Замість того, щоб повертати підписаний ступінь, ви можете вказати N / S або E / W в кінці:
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)
Якщо вам подобається, ви можете закріпити s до цілого числа і відформатувати результати, щоб відповідати формі, заданій у питанні.
Це зробити не дуже складно, але я схильний просто використовувати цю веб-сторінку . Але давайте попрацюємо над широтою у вашому прикладі. Десяткові градуси однакові, у цьому випадку 41. Тепер візьміть решту і помножте на 60. Це дає 35,44998. Ціла частина - секунди (35 '). Тепер візьміть решту і знову помножте на 60. Ви отримуєте секунди (26,9998), що позитивно порівнюється з вашими висновками вище.
Подивіться цю бібліотеку пітонів https://github.com/ewheeler/PyDecimalDegrees
або це сценарії в Інтернеті / офлайн, засновані на http://www.movable-type.co.uk/scripts/latlong.html
Це може вам допомогти. Просто спробуйте. http://transition.fcc.gov/mb/audio/bickel/DDDMMSS-decimal.html
Існує хороший простий клас, щоб зробити це за допомогою StackOverflow в C #: /programming/4504956/formatting-double-to-latitude-longitude-human-readable-format