|
WPF - XDL Tutorial (piXoneer XDL Tutorial)
구 타원체 상에서 특정 지점간의 관계를 이용하여 거리나 방향을 구하고 ECEF좌표계로부터 Geodetic좌표계로의 변환 등에 대해서 설명합니다.
2019. 04.
|
|
목차 1.2 XDL의 데이터구조를 이용한 예제 프로그램 만들기 1.4 지구상의 특점 한 위치(Reference Position)와 다른 장소의 한 위치(Target Position)로부터 방위각도와 거리 구하는 예제 1.5 Geographic 좌표계로부터 ECEF좌표계로의 변환 예제 1.6 ECEF좌표계로부터 Geographic좌표계로의 변환 예제
|
1 사용 하기1.1 XDL 엔진설치 프로그램으로 배포되는 XDL 엔진은 Visual Studio 2010 x86 Release 버전으로, Visual Studio 2010 이상의 버전에서 사용 가능하다. 아래의 설명은 Visual Studio 2015을 기준으로 하겠다.
1.2 XDL의 데이터구조를 이용한 예제 프로그램 만들기1.2.1 Visual Studio 2015을 실행한다.1.2.2 메뉴 [파일]-[새로 만들기]-[프로젝트]를 선택한다.
1.2.3 [새 프로젝트] 대화상자에서 왼쪽의 템플릿 창에서 “Visual C#”을 선택하고, 대화상자 중간의 목록에서 “WPF 응용 프로그램”을 선택한다.사용자가 원하는 경로를 선택한 다음 프로젝트 이름을 “XDL_GeoPosition” 으로 입력하고 [새 프로젝트] 대화상자의 “확인” 버튼을 클릭한다.
이 문서에서는 대화상자 오른쪽 아래에 있는 “솔루션용 디렉터리 만들기”는 선택하지 않겠다. “확인” 버튼을 누르면 프로젝트가 기본적으로 생성되고, 화면에 Window을 디자인할 수 있는 화면이 뜬다. 만약 아래와 같은 Window 창이 생성되지 않으면, [솔루션 탐색기] 창에서 MainWindow.xaml”를 마우스 더블클릭을 하여 창을 연다.
1.2.4 참조를 통해 NXDL.dll 항목을 추가한다.솔루션 탐색기의 프로젝트 아래에 있는 참조 아이템의 마우스 오른쪽 버튼을 클릭하여 생성되는 팝업메뉴에서 “참조추가” 메뉴를 선택한다.
메뉴를 선택하면 아래와 같이 [참조추가] 대화상자가 나타나며, 대화상자 아래쪽에 있는 “찾아보기” 버튼을 클릭한다.
“C:\Pixoneer\XDL1.2\bin\NXDL.dll” 경로로 이동한 후 파일을 선택한다. “추가” 를 클릭하고, [참조추가] 대화상자의 “확인” 버튼을 클릭한다. [참조] 에 “NXDL”가 추가된 것을 확인할 수 있다.
1.2.5 프로그램 종료 시 메모리를 해제를 위한 코드를 Window창이 닫히는 이벤트에 추가한다.MainWindow.xaml 창에서 Window을 선택한 후 [속성] 창에서 “이벤트” 메뉴를 클릭하고 이벤트 목록 중 “Closed”를 선택한 뒤 마우스 더블클릭을 하여 해당이벤트를 추가한다.
아래의 굵은 글씨처럼 Window_Closed함수에 코드를 추가한다.
1.2.6 다음과 같이 NXDL에 대하여 참조를 설정한다.
1.2.7 다음과 같이 Window에 버튼을 올려 디자인한다.
1.3 지구상의 특정 위치(Reference Position)로부터 방위각(Azimuth Angle)과 거리(Distance)에 해당하는 위치(Target Position) 구하기 예제여기에서 거리는 평면상의 거리가 아니고 지구 곡률을 고려한 거리를 의미한다.
1.3.1 Calc Position By Bearing And Distance버튼을 더블 클릭하여 함수를 자동생성한다.
1.3.2 buttonCalcPositionByBearingAndDistance_Click 함수에 다음과 같이 코드를 입력한다. 아래 예제는 임의의 기준점(예를 들어 현재 자신의 위치)로부터 방위각과 특정 거리상에 있는 좌표값을 계산한다.
1.3.3 컴파일하고 프로그램을 실행하여 Calc Position By Bearing And Distance버튼을 클릭한다.
1.3.4 출력창에 값이 프린트됨을 확인한다.참조 위경도위치 127, 36인 위치로부터 45도 북방위각이고 거리가 10000meter인 결과를 출력한다.
1.4 지구상의 특점 한 위치(Reference Position)와 다른 장소의 한 위치(Target Position)로부터 방위각도와 거리 구하는 예제여기에서 거리는 평면상의 거리가 아니고 지구 곡률을 고려한 거리를 의미한다 .
1.4.1 buttonCalcArcDistAndAngle_Click버튼을 더블 클릭하여 함수를 자동생성한다.
1.4.2 buttonCalcArcDistAndAngle_Click함수에 다음과 같이 코드를 입력한다. 아래 예제는 임의의 2점으로부터 방위각과 특정 거리를 계산한다.
1.4.3 컴파일하고 프로그램을 실행하여 Calc Arc Dist and Angle From Two Position버튼을 클릭한다.
1.4.4 출력창에 값이 프린트됨을 확인한다.참조 위치 127, 36(경위도)인 위치로부터 128, 37(경위도)위치로부터 거리가 142618.087미터와 38.6195662318174도인 방위각을 얻을 수 있다.
1.5 Geographic 좌표계로부터 ECEF좌표계로의 변환 예제
1.5.1 buttonGeoToECEF_Click버튼을 더블클릭하여 함수를 자동생성한다.
1.5.2 buttonGeoToECEF_Click 함수에 다음과 같이 코드를 입력한다.
1.5.3 컴파일하고 프로그램을 실행하여 Geo To ECEF 버튼을 클릭한다.
1.5.4 출력창에 값이 프린트됨을 확인한다.참조 위치 127, 36(경위도)이고 고도가 1200meter인 위치의 ECEF값은 X : -3109559.92819602 Y : 4126525.40023087 Z : 3728897.01809016임을 확인할 수 있다.
1.6 ECEF좌표계로부터 Geographic좌표계로의 변환 예제
1.6.1 buttonECEFToGeo_Click버튼을 더블클릭하여 함수를 자동생성한다.
1.6.2 buttonECEFToGeo_Click 함수에 다음과 같이 코드를 입력한다.
1.6.3 컴파일하고 프로그램을 실행하여 ECEF To Geo버튼을 클릭한다.
1.6.4 출력창에 값이 프린트됨을 확인한다.참조 위치 ECEF값이 X : -3109559.92819602 Y : 4126525.40023087 Z : 3728897.01809016인 Geographic 좌표계 값은 127, 36(경위도)이고 고도가 1200meter인 위치의 임을 확인할 수 있다.
|