2011-04-09 4 views
1

안녕하세요, 내 gps 응용 프로그램에서 친구로 지오 포인트를 픽셀로 변환했습니다. 나는이 두 점을 픽셀로 변환하여 두 픽셀 점을 다르게 가져오고이 차이를 킬로미터로 변환하려고합니다.Google지도 픽셀을 킬로미터로 변환하고 싶습니다.

+0

나는 이해할 수 없다. 각 픽셀을 위도와 경도에 매핑 할 수 있습니까? 할 수 있다면, Haversine 공식은 당신에게 꽤 정확한 거리를 줄 수 있습니다. –

+0

픽셀을 킬로미터로 매핑하고 싶습니다. –

+0

예.하지만 픽셀 거리가 킬로미터로 매핑되는 방식을 알아야하며 지리적 위치 정보 데이터가 핵심입니다. –

답변

3

거리 계산에 뷰 픽셀을 사용하지 않는 것이 좋습니다 . 지리적 포인트가 있다면 그 포인트를 사용해야합니다. 모든 것이 측량 계산법에 달려 있습니다. 그리고 정확성은 지구를 어떻게 모델링하는지에 달려 있습니다. 원하는 것은 측량 great circle lines을 사용하여 거리 계산을 수행하는 것입니다.

당신이 구형으로 지구를 모델링하는 경우

(코사인 법칙을 사용) :

double earthAverageRadius = 6378137; //Average mean in meters when modeling the world as a sphere 
double angle = Math.acos(Math.sin(point1.x) * Math.sin(point2.x) 
        + Math.cos(point1.x) * Math.cos(point2.x) * Math.cos(point1.y- point2.y)); 
double distance = angle * pi * earthAverageRadius; // distance in metres 

또한 수치 적으로 더 안정적이다 Haversine formula로보고 추천 할 것입니다. 하버 사인 공식을 사용하여 이전 코드에서 계산 된 각도는 다음과 같습니다이에 대한 계산이 상당히 비록

당신이 (큰 거리에 대한) 높은 정확도를 원한다면
double a = Math.pow(Math.sin((point2.x-point1.x)/2.0), 2.0) 
       + Math.cos(point1.x) * Math.cos(point2.x) * Math.pow(Math.sin((point2.y-point1.y)/2.0), 2.0); 
double angle = 2 * Math.asin(Math.min(1.0, Math.sqrt(a))); 

, 당신은 타원형으로 지구를 모델링 고려해야한다 더 세게.

편집 : 위의 내용은 경도와 위도를 라디안으로 표시하는 경우에만 적용됩니다. 그래서 당신은 그 변환을 먼저 만들어야 할 것입니다.

+0

그것은 '반 정통 사인'에서 'n'으로 호버린입니다. –

+0

잘 잡습니다. 입력 오류가 수정되었습니다. – Tovi7

+0

또는 Location.distanceTo (위치) – Snake

관련 문제