2012-12-20 4 views
4

내 응용 프로그램에서 나는 몇 가지 (3 또는 그 이상의) GPS 포인트 중점을 찾아야합니다.일부 GPS 지점의 중간 지점/좌표를 찾는 방법은 무엇입니까?

은 내가

public class DistanceOfGeoPoints { 
    public static long distanceinKMeters(double dblLat, double dblNewLat, double dblLong, double dblNewLong) 
    { 
     try 
     { 
      //double dblDistance = 180/(dblPI * Math.Acos(Math.Sin(dblLat) * Math.Sin(dblNewLat) + Math.Cos(dblLat) * Math.Cos(dblNewLat) * Math.Cos(dblLong - dblNewLong))); 

      double dblDegree2Radius = Math.PI/180; 
      double dbllongdiff = (dblNewLong - dblLong) * dblDegree2Radius; 
      double dbllatdiff = (dblNewLat - dblLat) * dblDegree2Radius; 
      double a = Math.pow(Math.sin(dbllatdiff/2.0), 2) + Math.cos(dblNewLat * dblDegree2Radius) * Math.cos(dblLat * dblDegree2Radius) * Math.pow(Math.sin(dbllongdiff/2.0), 2); 
      double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); 
      double dblDistance = 6367 * c; //Earth Radius * value (result in KM) 

      // return dblDistance; 
      long intdistance = (Math.round(dblDistance * 1000)); 

      return intdistance; 
     } 
     catch (Exception ex) 
     { 
      return 0; 
     } 
    } 
} 

가 지금은 GPS의 N 번호의 중간 지점이

이 저를 도와주세요 지적하고자 아래와 같이 두 점 사이의 거리를 찾을 수 있습니다.

답변

5

유클리드 거리에있는 두 점의 중간 점은 x 및 y 좌표의 평균값입니다. 우리가 점 A와 B의 위도와 경도의 평균을 구하면 A와 B 사이의 점을 얻을 수 있지만 등거리 일 필요는 없습니다.

구형 좌표를 유클리드 좌표로 변환하고 x와 y를 평균하여 중간 점을 찾은 다음 위도, 경도로 다시 변환해야합니다.

우리가 2 점 이상으로 이것을 수행한다면 "중간 점"이 의미하는 바를 명확히해야합니다.

유클리드 기하학에서 N 점의 중간 점을 찾으려면 모든 x 값의 평균을 구하고 모든 y 값의 평균을 구하십시오. 이것은 우리에게 합리적인 "중간"을 제공하지만,이 평균 포인트는 일반적으로 세 점 모두에 등거리가 아닙니다. 주어진 3 점, 우리는 그 3 점에 등거리의 유일한 점을 계산할 수 있습니다. 이 점은 3 점으로 정의 된 삼각형의 외심입니다. 그러나 3 점이 원을 정의하기 때문에이 과정은 n 점으로 일반화되지 않습니다. 4 점 이상을 주었을 때, 모두 4에 등거리의 지점이 없을 것입니다. 이것은 우리가 에쿠 리던 거리 또는 구형 기하학 거리로 작업하든 상관하지 않습니다.

아래 다이어그램에서 우리는 외심 지점이 A, B 및 C 지점에서 정확히 5 단위임을 알 수 있습니다. 그러나이 지점은 실제로 "중간"과 같지 않습니다. 그것은에 의해 정의 된 N 포인트 B 또는 C

Midpoint of three points

에보다 가까운 경우에도 중간에처럼 평균에 의해 정의 된 중간 점은, 다른 한편으로는, 보이나요 (lattitude, 경도) 가장 좋은 방법은 이러한 모든 점을 유클리드 점으로 변환하는 것입니다. 평균은 컴퓨터에서 평균으로 변환 한 다음 다시 (경도, 위도)로 변환합니다. 이 변환을 수행하는 코드는 다음에서 찾을 수 있습니다. Processing Forum 그리고 좋은 점은 wikipedia page입니다. 당신이 이해해야 할 배경 수학을 설명하십시오.

+0

2GPS 포인트가있을 때 중간 지점을 찾는 방법을 알고 있습니다. 나는 그때 더 많은 것이 2라고 말할 것을 의미합니다. @ 꼬리말 –

+0

@ user1874744 내 업데이트 된 답변을 참조하십시오. – Thorn

+0

이것은 n 점에 등거리에있는 점을 찾을 방법이 없다는 것을 의미합니다. – Amerrnath

관련 문제