더 나은 프로그래머가 되자

GPS 좌표로 거리 구하기, 지도 거리 측정 본문

언어/PHP

GPS 좌표로 거리 구하기, 지도 거리 측정

greathuman 2015. 5. 14. 11:15

MYSQL을 이용한 거리 계산 방법

 

현재위치

위도 : nowLat

경도 : nowLng

 

지정위치

위도 : setLat

경도 : set Lng

 

 6371은 지구의 반지름이다. 단위는 KM

 

> select (6371 * acos( cos( radians(nowLat) ) * cos( radians( setLat ) ) * cos( radians( setLng ) - radians(nowLng) ) + sin( radians(nowLat) ) * sin( radians( setLat ) ) ) ) as distance;

> select  ROUND(6371 * acos( cos( radians(37.486273) ) * cos( radians( 35.177286 ) ) * cos( radians( 126.900247 ) - radians(126.900247) ) + sin( radians(37.486273) ) * sin( radians( 35.177286 ) ) ), 2) as distance; 

 

PHP를 이용한 거리 계산 방법

 

 

 

>

function geoDistance($lat1, $lon1, $lat2, $lon2, $unit="k") 
{ 
$theta = $lon1 - $lon2; 
$dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta)); 
$dist = acos($dist); 
$dist = rad2deg($dist); 
$miles = $dist * 60 * 1.1515; 
$unit = strtolower($unit); 

if ($unit == "k") { 
return ($miles * 1.609344); 
} else { 
return $miles; 
} 
} 

// 양재 
$a1 = 37.47163412599279; 
$a2 = 127.02677155082887; 

// 우만동 
$b1 = 37.284357977075565; 
$b2 = 127.03281619405365; 

// 수서 
$c1 = 37.4889123433992; 
$c2 = 127.10502769792124; 

echo geoDistance($a1,$a2,$c1,$c2); 

 

 

 

 

 

distance.pdf

 

gps거리계산.doc

 

Comments