2010-01-21 5 views
2

반경 내에서 주소를 반환 할 수 있도록 최소 및 최대 위도 및 경도 값의 경계 상자를 생성해야합니다.C#으로 경도 및 위도에 반경 추가

테두리 상자를 설정하기 위해 필자가 +/- 필요로하는 범위를 lon lat 좌표로 되돌리기 위해 아래에 두 개의 func>이 있습니다. 그러나 나는 수학이 100 %라고 생각하지 않는다.

나는 거리 계산을 위해 Haversine 수식을 사용하고 있으며 정확하게 작동하는 것으로 보인다. 나는 거리를위한 Vincenty 공식을 조사했다. 그러나 과잉이었다 나의 필요성을 위해.

내 문제는 lon lat 좌표에 대한 I +/- 범위가 타원형 곡률 또는 지구를 고려한다는 점에서 Haversine만큼 정확한 검색 결과를 원합니다.

좋아, 여기 내 FUNC <>의 ... 나는 수학 교수 아니다 유의하시기 바랍니다 : O)를 추가 정밀도를 필요로하는 경우

static Func<double, int, double> GetLatitudeRange = (latitude, distance) => (180.0/Math.PI) * (distance/EARTH_RADIUS_IN_KM); 


static Func<double, double, int, double> GetLongitudeRange = (longitude, latitude, distance) => 
      (
       Math.Asin(
        Math.Sin(distance/EARTH_RADIUS_IN_KM)/Math.Cos(latitude) 
        ) 
      ); 
+0

한 번 봐, 봐 http://en.wikipedia.org/wiki/Great-circle_distance. – MPelletier

답변