Шукаєте інструмент для перетворення DD у DMS?


9

Я шукаю або онлайн-інструмент, або той, який я можу завантажити, щоб конвертувати DD в DMS.

Наприклад, я хочу конвертувати з:

41.590833, -93.620833 до 41 ° 35 ′ 27 ″ пн.ш., 93 ° 37 ′ 15 ″ ш ... Це координати, згідно з Geohack , для Де-Мойн.


WGS84 вже в Lat / long.
underdark

ви хочете перетворити з DD в DMS. Ви можете повторно подати ще одне запитання, задаючи це.
artwork21

2
Ви будете використовувати певне рішення ГІС? Якщо так, надаючи цю інформацію, ви зможете дати кращі відповіді від громади.
художній твір21

Відповіді:


13

Оскільки навіть код 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 до цілого числа і відформатувати результати, щоб відповідати формі, заданій у питанні.


Я запрошую анонімного персоналу, який покращив цю відповідь ;-). (Я вважаю, що у нього є представник, щоб це зробити.)
whuber

5

Це зробити не дуже складно, але я схильний просто використовувати цю веб-сторінку . Але давайте попрацюємо над широтою у вашому прикладі. Десяткові градуси однакові, у цьому випадку 41. Тепер візьміть решту і помножте на 60. Це дає 35,44998. Ціла частина - секунди (35 '). Тепер візьміть решту і знову помножте на 60. Ви отримуєте секунди (26,9998), що позитивно порівнюється з вашими висновками вище.


4

Windows Calculator у науковому режимі робить для мене хитрість.

Кнопка "dms" переведе вас від десятків градусів до градусів, хвилин, секунд.

Inv + dms (тепер показано як deg) йде іншим шляхом.



3

Це може вам допомогти. Просто спробуйте. http://transition.fcc.gov/mb/audio/bickel/DDDMMSS-decimal.html


+1 Приємна знахідка. Я помічаю, що цей аплет вимагає довготи в межах [-180, +180]. Вихідний код з’являється внизу джерела сторінки.
whuber

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.