Index
GPS 위치 표시 방식
Latitude and Longitude : 위도/경도 방식
DMS (degree minutes seconds) : 도분초 방식
DD (decimal degree) : 10진수 표시 방식
[예제 장소] 중부대학교 고양캠퍼스 세종관
경도/위도를 도분초(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)
도분초에서 위도/경도로 변환 방법
🧐 위도(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