e_yejun
Jun_ : Pwn
e_yejun
전체 방문자
오늘
어제
  • 분류 전체보기 (240)
    • Profile (1)
    • Pwnable (54)
    • Reversing (14)
    • Network (8)
    • Forensic (10)
    • Embedded (4)
    • Android (2)
    • Web (18)
    • 알고리즘 (42)
    • 프로그래밍 (24)
    • 프로젝트 (6)
    • 1-day (7)
    • CTF (15)
    • 기타 (33)
    • 일기장 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • dreamhack.io
  • how2heap
  • Heap
  • dvwa
  • rev-basic
  • 1-day
  • wargame
  • x64
  • BOF
  • X86

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
e_yejun

Jun_ : Pwn

기타

GPS 좌표 (위/경도, 도분초, 10진수)

2023. 8. 1. 18:35

Index

GPS 위치 표시 방식
[예제 장소] 중부대학교 고양캠퍼스 세종관
위도/경도에서 도분초로 변환 방법
도분초에서 위도/경도로 변환 방법
도분초에서 10진수로 변환 방법
10진수에서 도분초로 변환 방법

GPS 위치 표시 방식

Latitude and Longitude : 위도/경도 방식

DMS (degree minutes seconds) : 도분초 방식

DD (decimal degree) : 10진수 표시 방식

[예제 장소] 중부대학교 고양캠퍼스 세종관

💡
위도(N) : 37.713203 / 경도(E) : 126.8900751

경도/위도를 도분초(dms) 방식과 10진수(dd) 방식으로 변환하는 방법을 작성한다.

위도/경도에서 도분초로 변환 방법

🧐 위도(N) : 37.713203

degree = 37

minute = 0.713203 * 60 = 42.79218

second = 0.79218 * 60 = 47.5308

⇒ dms = 37도 42분 47.5308초

🧐 경도(E) : 126.8900751

degree = 126

minute = 0.8900751 * 60 = 53.404506

second = 0.404506 * 60 = 24.27036

⇒ dms = 126도 53분 24.27036초

🤖 파이썬 코드 (degree_to_dms)

def degree_to_dms(deg):
    degree = int(deg)
    minute = int((deg - degree) * 60)
    second = (deg - degree - minute/60) * 3600
    return degree, minute, second

lat = 37.713203
log = 126.8900751
print('Latitude_dms :', degree_to_dms(lat))
print('Longitude_dms :', degree_to_dms(log))

# Latitude_dms : (37, 42, 47.53080000000027)
# Longitude_dms : (126, 53, 24.270360000015323)

도분초에서 위도/경도로 변환 방법

💡
degree + (minute/60) + (second/3600)

🧐 위도(N) : 37도 42분 47.5308초 (37.42.47)

분의 계산 : 42 / 60 = 0.7

초의 계산 : 47.5308 / 3600 = 0.013203

⇒ 위도(N) : 37.713203

🧐 경도(E) : 126도 53분 24.27036초 (126.53.24)

분의 계산 : 53/ 60 = 0.8833333333333333

초의 계산 : 24.27036 / 3600 = 0.0067417666666667

⇒ 경도(E) : 126.8900751

🤖 파이썬 코드 (dms_to_degree)

def dms_to_degree(dms):
    degree, minute, second = dms[0], dms[1], dms[2]
    return(float(degree) + float(minute)/60 + float(second)/(60*60))

lat_dms = ['37', '42', '47.5308']
log_dms = ['126', '53', '24.27036']
print('Latitude :', dms_to_degree(lat_dms))
print('Longitude :', dms_to_degree(log_dms))

# Latitude : 37.713203
# Longitude : 126.8900751

도분초에서 10진수로 변환 방법

second에서 소수점을 지정해줄 수 있다. 소수점을 늘릴 수록 정확도가 늘어난다.

해당 코드에서는 소수점 2자리까지 표현하고 이를 정수로 올렸다.

따라서, 정수 값을 만들 때 *100을 해주고 다시 dms로 만들 때 /100을 수행해주면 된다.

🤖 파이썬 코드 (dms_to_int)

def dms_to_int(degree, minute, second):
    degree = int(degree)
    minute = int(minute)
    second = round(float(second),2)
    int_value = (degree * 3600 + minute * 60 + second) * 100 
    return int_value

# [degree, minute, second]
lat_dms = ['37', '42', '47.5308']
log_dms = ['126', '53', '24.27036']
print('Latitude_int :', dms_to_int(lat_dms[0], lat_dms[1], lat_dms[2]))
print('Longitude_int :', dms_to_int(log_dms[0], log_dms[1], log_dms[2]))

# Latitude_int : 13576753
# Longitude_int : 45680427

10진수에서 도분초로 변환 방법

위 도분초에서 10진수로 변환 과정에서 소수점 2자리를 살려서 위로 올렸다.

🤖 파이썬 코드 (int_to_dms)

def int_to_dms(int_value):
    int_value = (int_value/ 100) / 3600
    degree = int(int_value)
    int_value = 60 * (int_value - degree)
    minute = int(int_value)
    int_value = 60 * (int_value - minute)
    second = int(int_value)
    return str(degree), str(minute), str(second)

lat_int = 13576753
log_int = 45680427
print('Latitude_dms', int_to_dms(lat_int))
print('Longitude_dms', int_to_dms(log_int))

# Latitude_dms : ('37', '42', '47')
# Longitude_dms : ('126', '53', '24')


Uploaded by N2T

    '기타' 카테고리의 다른 글
    • wsl2와 nox 충돌 해결 방법
    • WSL2 설치 방법 및 설정
    • AWS 시작하기 (생성, 접속, 설정)
    • [Python] pyinstaller EXE 파일 소스코드 Decompile
    e_yejun
    e_yejun
    정리노트 •_•

    티스토리툴바