DuraMap-Xr을 이용한 좌표 변환 코드 샘플

DuraMap-Xr은 proj.4 기반의 문자열을 토대로 좌표계를 변환할 수 있는데요. 특히 좌표 변환시 10 파라메터에 해당하는 Molodensky-Badekas 모델을 지원합니다.

아래의 코드는 “대한민국 TM 중부원점(Bessel 타원체) – 10.405 보정”의 좌표계의 한 좌표인 (492385.95, 188096.47)를 “대한민국 TM 중부원점(GRS80 타원체)” 좌표계로 변환하는 코드 예입니다.

코드를 보면 좌표계 지정을 위해서 사용한 proj.4 문자열에 towgs84에 해당하는 값을 14번째 코드처럼 별도의 매서드(Set10Parameters)로 지정한다는 것입니다. 3개 또는 7개의 파라메터 지정을 위해서는 각각 Set3Parameters, Set7Parameters 매서드를 사용합니다.

최종 좌표변환은 16번 코드의 Transform 매서드로 수행되는데요. 이 매서드는 변환할 입력 좌표 객체를 필요로 하고, 변환된 좌표는 다시 이 입력 좌표 객체에 저장되므로, 입력 좌표를 계속 유지하려면 복사본을 가지고 있어야 합니다.

DuraMap-Xr에서 TMS 레이어 활용하기

C#과 같은 COM을 지원하는 언어에서 GIS 어플리케이션을 개발할 수 있는 GIS 엔진인 DuraMap-Xr에서 TMS 형식의 배경지도를 레이어로 활용할 수 있는 코드를 정리해 봅니다. VWorld에서 제공하는 배경지도를 예시로 하였습니다.

먼저 아래는 듀라맵에서 VWorld의 배경지도를 표시한 화면입니다.

위의 실행 화면에 대한 코드를 살펴보겠습니다. 먼저 TMS 레이어를 추가하는 코드입니다.

위의 코드 중 2번은 타일맵에 접근하기 위한 URL의 리스트입니다. VWorld는 TMS 이미지에 접근하기 위한 URL을 하나만 제공합니다. 5~9번 코드는 TMS의 전체 MBR 값입니다. 그리고 11번 코드에서 upps 배열에 저장된 값은 Units Per Pixel 값들로써, 1 픽셀당 몇 m인지에 대한 값입니다. 20번 코드의 반복문은 이 upps 배열을 통해 실제 지도 축척값을 계산하여 Scales라는 배열에 저장합니다. 33번 코드가서 TMS 레이어를 추가하는 코드이고, 37~40번 코드에서 첫 실행시 지도의 중심 위치와 지도 축척을 지정합니다. 앞서 UPP값을 지도 축척값으로 계산하여 Scales라는 배열에 저장한다고 하였는데, Scales 변수는 아래와 같습니다.

TMS를 통한 배경지도는 이미 정해진 축척 레벨이 존재합니다. 이 축척값으로 지도를 확대하고 축소할 경우에 가장 최상의 지도 품질을 사용자에게 제공할 수 있는데요. 듀라맵에서는 이를 위해 아래와 같은 코드가 필요합니다.

위는 듀라맵의 OnBeforeMapDrawing 이벤트에 대한 코드로써, TMS에서 제공하는 가장 접합한 지도 축척값을 유지하도록 하고 있습니다. 위의 코드에 대한 Visual Studio 2013 프로젝트를 아래에 첨부합니다.

듀라맵 엔진은 제작사인 지오서비스의 자료실에서 다운로드 받으시기 바라며, 링크는 아래와 같습니다.

지오서비스 자료실