2013-03-02 2 views
0

나는 사용자 위도 및 경도를 처음으로 서버로 보내는 앱을 개발 중입니다. 서버에는 또한 이전에 저장된 좌표가 있습니다. 이제 사용자 좌표가 이미 좌표계의 1km 또는 2km 반경 내에 있는지 확인해야합니다.위도 및 경도 반경

하나의 접근법은 초기 좌표를 원 중심으로 취하는 것이지만 정확하지 않습니다. 내가 따라야하는 알고리즘과이를 이해하는 데 도움이되는 근원. 지구

답변

2
R = 6378.1; // radius of the Earth (km) 
    dlat = deg2rad($lat1-$lat2) // lattitude diference in radians 
    dlang = deg2rad ($lang1 - $lang2) //longitude diference in radian 

반경 1~2km보다 훨씬 더 큰, 그래서 우리는 피타고라스 theorm을 사용할 수 있습니다, 우리는 ~ 0.3 m를 0.03 %의 정확도를했다.

distance = R * sqrt($dlat^2 + $dlang^2 ); 
    // same: distance = sqrt(($dlat*R)^2 + ($dlang*R)^2) ) 

이것은 당신이 이해하는 데 도움이 될 수 http://en.wikipedia.org/wiki/Spherical_coordinate_system

구형은 위치 정보 시스템을 좌표로 동일하지 좌표계,하지만 당신이 필요로하는 것을 이해하기 위해, 나는 아래의 링크를 좋은 설명이있다 생각합니다. 더 고정밀도 필요하면

: 에서 http://en.wikipedia.org/wiki/Great-circle_distance 예를 섹션

에게 근무보기, 거리 불과 몇 킬로미터 정도의 차이는 작지만 내가 쓴 공식을 사용하면 컴퓨팅 시간이 더 나은 경우 .