Làm thế nào để bạn chuyển đổi độ thập phân sang độ phút Biên dịch trong Python? Có một công thức đã được viết?Làm thế nào để chuyển đổi DD sang DMS bằng Python
Trả lời
Sử dụng fmod
và làm tròn để tách độ và phân tách. Nhân phần nhỏ với 60 và lặp lại để nhận phút và phần còn lại. Sau đó nhân phần cuối cùng với 60 lần nữa để lấy số giây.
Bạn có thể có nghĩa là 'math.modf'. – musiphil
Chỉ cần một vài * 60
phép nhân và một vài int
sự cắt, ví dụ:
>>> decdegrees = 31.125
>>> degrees = int(decdegrees)
>>> temp = 60 * (decdegrees - degrees)
>>> minutes = int(temp)
>>> seconds = 60 * (temp - minutes)
>>> print degrees, minutes, seconds
31 7 30.0
>>>
Đây chính là điều divmod
được phát minh cho:
>>> def decdeg2dms(dd):
... mnt,sec = divmod(dd*3600,60)
... deg,mnt = divmod(mnt,60)
... return deg,mnt,sec
>>> dd = 45 + 30.0/60 + 1.0/3600
>>> print dd
45.5002777778
>>> decdeg2dms(dd)
(45.0, 30.0, 1.0)
Tôi không nghĩ rằng điều này làm việc cho âm bản. –
Nó không hoạt động với âm. -122,442 trả về (-123,33,28,8). Nên là (-122,26,31.12) –
@baens - ý bạn là '(-122, -26, -31.12)'? Tôi nghĩ rằng '-123 + 33/60 + 28.8/3600' thực tế bằng' -122.442' – PaulMcG
Dưới đây là phiên bản cập nhật của tôi dựa trên Paul McGuire. Điều này nên xử lý âm một cách chính xác.
def decdeg2dms(dd):
is_positive = dd >= 0
dd = abs(dd)
minutes,seconds = divmod(dd*3600,60)
degrees,minutes = divmod(minutes,60)
degrees = degrees if is_positive else -degrees
return (degrees,minutes,seconds)
Nếu bạn muốn xử lý phủ định đúng cách, biện pháp khác 0 không được đặt âm. Nó là phương pháp phổ biến để chỉ định tất cả các độ, phút và giây là âm (Wikipedia cho thấy 40 ° 26.7717, -79 ° 56.93172 như một ví dụ hợp lệ về ký hiệu độ-phút, trong đó độ âm và phút không có dấu), và thiết lập độ như tiêu cực không có bất kỳ tác dụng nếu độ phần là 0. Đây là một chức năng để xử lý thích đáng này, dựa trên Paul McGuire và chức năng baens':
def decdeg2dms(dd):
negative = dd < 0
dd = abs(dd)
minutes,seconds = divmod(dd*3600,60)
degrees,minutes = divmod(minutes,60)
if negative:
if degrees > 0:
degrees = -degrees
elif minutes > 0:
minutes = -minutes
else:
seconds = -seconds
return (degrees,minutes,seconds)
Đây là mã Python tôi:
def DecimaltoDMS(Decimal):
d = int(Decimal)
m = int((Decimal - d) * 60)
s = (Decimal - d - m/60) * 3600.00
z= round(s, 2)
if d >= 0:
print ("N ", abs(d), "º ", abs(m), "' ", abs(z), '" ')
else:
print ("S ", abs(d), "º ", abs(m), "' ", abs(z), '" ')
Sử dụng 'Decimal' làm tên biến có thể xung đột với' decimal.Decimal' và không phải là ý hay. – musiphil
Dấu hiệu tốt hơn phải được trả lại riêng biệt để có thể sử dụng để chọn từVí dụ: 0 hoặc ('E', 'W')
.
import math
def dd_to_dms(degs):
neg = degs < 0
degs = (-1) ** neg * degs
degs, d_int = math.modf(degs)
mins, m_int = math.modf(60 * degs)
secs = 60 * mins
return neg, d_int, m_int, secs
- 1. Làm thế nào để chuyển đổi MM/DD/YYYY sang YYYY-MM-DD?
- 2. Dịch Exif DMS DD Định vị với Python
- 3. Chuyển đổi dd/MM/yyyy sang MM/dd/YYYY
- 4. Chuyển đổi PDF sang HTML bằng Python
- 5. làm thế nào để chuyển đổi Python 3 sang Python 2 mã?
- 6. chuyển đổi html sang .doc bằng Python?
- 7. Làm thế nào chuyển đổi một ngày từ dd-mm-yy tới mm-dd-yy
- 8. Chuyển đổi mm/dd/yyyy sang yyyymmdd (VB.NET)
- 9. Làm thế nào để chuyển đổi giữa python 2,7 sang python 3 từ dòng lệnh?
- 10. cách chuyển đổi ngày sang định dạng 'mm/dd/yyyy`
- 11. Làm cách nào để chuyển đổi hex sang thập phân bằng Python?
- 12. Chuyển đổi sang định dạng ngày dd/mm/yyyy
- 13. Chuyển đổi số thập phân sang DD: HH: MM
- 14. Làm thế nào để chuyển đổi hình ảnh sang html?
- 15. Làm thế nào để chuyển một biến Bash sang Python?
- 16. làm thế nào để chuyển đổi ngày xuất bản video youtube sang DD/MM/YY trong php?
- 17. Chuyển đổi Python sang R
- 18. Làm cách nào để chuyển đổi định dạng của tệp từ Unicode sang ASCII bằng Python?
- 19. Làm cách nào để chuyển đổi WAV từ âm thanh stereo sang mono bằng Python?
- 20. Làm thế nào để chuyển đổi char * sang std :: vector?
- 21. Làm thế nào để chuyển đổi nsstring sang cString?
- 22. Làm thế nào để chuyển đổi ISO8859-15 sang UTF8?
- 23. làm thế nào để chuyển đổi IEnumerable sang IObservable?
- 24. Làm thế nào để chuyển đổi CSV sang Excel?
- 25. làm thế nào để chuyển đổi nsstring sang uicolor?
- 26. Làm thế nào để chuyển đổi BigInteger sang BigDecimal?
- 27. Làm thế nào để chuyển đổi CGFontRef sang UIFont?
- 28. Làm thế nào để chuyển đổi dispatch_data_t sang NSData?
- 29. Làm thế nào để chuyển đổi typedef enum sang NSNumber?
- 30. Làm thế nào để chuyển đổi chm sang pdf
@David: đó là vấn đề nhân số thập phân với 60. Bạn cần gì hơn thế? – SilentGhost