ฉันกำลังมองหาเครื่องมือออนไลน์หรือเครื่องมือที่ฉันสามารถดาวน์โหลดเพื่อแปลง DD เป็น DMS
ตัวอย่างเช่นฉันต้องการแปลงจาก:
41.590833, -93.620833 ถึง 41 ° 35 ′27″ N, 93 ° 37′ 15″ W ... นี่คือพิกัดตามGeohackสำหรับ Des Moines
ฉันกำลังมองหาเครื่องมือออนไลน์หรือเครื่องมือที่ฉันสามารถดาวน์โหลดเพื่อแปลง DD เป็น DMS
ตัวอย่างเช่นฉันต้องการแปลงจาก:
41.590833, -93.620833 ถึง 41 ° 35 ′27″ N, 93 ° 37′ 15″ W ... นี่คือพิกัดตามGeohackสำหรับ Des Moines
คำตอบ:
เนื่องจากแม้แต่รหัส Microsoftคือบั๊กกี้มันอาจมีประโยชน์ในการให้รหัสเทียมที่ถูกต้องสำหรับการแปลง
การแปลงองศาทศนิยมxองศา ( d ) นาที ( เมตร ) และ (ทศนิยม) วินาที ( s ) ทำต่อไปนี้:
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) ซึ่งเปรียบเทียบในเชิงบวกกับสิ่งที่คุณค้นพบข้างต้น
Windows Calculator ในโหมด 'ทางวิทยาศาสตร์' ทำเคล็ดลับสำหรับฉัน
ปุ่ม "dms" จะนำคุณจากองศาทศนิยมเป็นองศานาทีวินาที
Inv + dms (แสดงเป็น deg) จะไปทางอื่น
ดูคลังไพ ธ อนนี้https://github.com/ewheeler/PyDecimalDegrees
หรือสคริปต์ออนไลน์ / ออฟไลน์นี้ตาม Perl 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