2013-05-17 6 views
5

위도, 경도, 고도 값에서 ECEF (지구 중심)와 같은 3D 시스템으로 변환하는 것에 대해 궁금합니다. 다음과 같이 경도, 위도, 고도를 3D- 데카르트 좌표계

은 ( https://gist.github.com/1536054)를 구현할 수 있습니다
/* 
* WGS84 ellipsoid constants Radius 
*/ 
private static final double a = 6378137; 
/* 
* eccentricity 
*/ 
private static final double e = 8.1819190842622e-2; 

private static final double asq = Math.pow(a, 2); 
private static final double esq = Math.pow(e, 2); 

void convert(latitude,longitude,altitude){ 
    double lat = Math.toRadians(latitude); 
    double lon = Math.toRadians(longitude); 
    double alt = altitude; 

    double N = a/Math.sqrt(1 - esq * Math.pow(Math.sin(lat), 2)); 

    x = (N + alt) * Math.cos(lat) * Math.cos(lon); 
    y = (N + alt) * Math.cos(lat) * Math.sin(lon); 
    z = ((1 - esq) * N + alt) * Math.sin(lat); 
} 

내 의견에 어떤 매우 이상한 것 같다

은 고도의 작은 변화가 어디 것, X, Y 및 Z에 영향을 미치는 것이 사실이다 그것이 단지 하나의 축에 영향을 미친다고 기대하십시오. 예를 들어 위도/경도 값이 같지만 고도 값이 다른 GPS-Points가 두 개인 경우 x, y, z 좌표가 3 가지로 표시됩니다.

누군가가이 "아이디어"를 설명 할 수 있습니까? 이것은 나에게 매우 흥미로웠다 ... 고도가 낮거나 높을 때 값 중 하나만 변하는 다른 3D 시스템이 있습니까?

고맙습니다.

답변

3

이 사진을 보면 :

ECEF Coordinate System는 다음 이유를 참조하십시오. ECEF는 지구 중심에 위치한 지구를 둘러싸는 정육면체입니다. 고도가 상승하면 이동합니다. Lat/lon은 lat, lon이 각도 인 "각형"좌표계입니다. ECEF는 cartesian 좌표계입니다!

ECEF는 센터 지구의 고도가 0 인 LatLon과 같지만 실제로는 그렇지 않습니다.

+0

아, 이것은 내가 찾고있는 것입니다.) – Frame91