Çevrimiçi bir araç ya da DD'yi DMS'ye dönüştürmek için indirebileceğim bir araç arıyorum.
Örneğin, dönüştürmek istiyorum:
41.590833, -93.620833 - 41 ° 35 ′ 27 ″ N, 93 ° 37 ′ 15 ″ W ... Des Moines için bir Geohack'a göre koordinatlar bunlar .
Çevrimiçi bir araç ya da DD'yi DMS'ye dönüştürmek için indirebileceğim bir araç arıyorum.
Örneğin, dönüştürmek istiyorum:
41.590833, -93.620833 - 41 ° 35 ′ 27 ″ N, 93 ° 37 ′ 15 ″ W ... Des Moines için bir Geohack'a göre koordinatlar bunlar .
Yanıtlar:
Microsoft kodu bile buggy olduğu için, dönüşüm için doğru sahte kod sağlamak yararlı olabilir.
Dönüştürmek için ondalık derece x derece (üzere d ), dakika ( m ) ve (ondalık) saniye ( ler ), aşağıdaki işlemleri:
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)
İmzalı bir derece döndürmek yerine, sonunda N / S veya E / W belirtebilirsiniz:
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)
İsterseniz, s'yi bir tamsayıya yuvarlayabilir ve sonuçları soruda verilen forma uyacak şekilde biçimlendirebilirsiniz.
Bunu yapmak çok karmaşık değil, ama sadece bu web sayfasını kullanma eğilimindeyim . Ama örneğinizdeki enlem üzerinde çalışalım. Ondalık dereceler aynıdır, bu durumda 41. Şimdi, geri kalanını alın ve 60 ile çarpın. Bu size 35.44998 verir. Tam sayı kısmı saniyedir (35 '). Şimdi, geri kalanını alın ve tekrar 60 ile çarpın. Yukarıdaki bulgularınızla pozitif olarak karşılaşan saniyeleri (26.9998) alırsınız.
Bu python kütüphanesine bakın https://github.com/ewheeler/PyDecimalDegrees
veya Perl tabanlı bu çevrimiçi / çevrimdışı komut dosyaları http://www.movable-type.co.uk/scripts/latlong.html
Size yardımcı olabilir. Sadece dene. http://transition.fcc.gov/mb/audio/bickel/DDDMMSS-decimal.html
Bunu C #'daki StackOverflow'da yapmak için güzel bir basit sınıf var: /programming/4504956/formatting-double-to-latitude-longitude-human-readable-format