[GIS] DuraMap-Xr, C#의 개발환경에서 Xr 맵엔진 등록하기

DuraMap-Xr은 COM을 지원하는 모든 개발환경에서 사용할 수 있으며 여기서는 가장 많이 사용되는 언어인 C#을 이용해 Xr을 이용해 보도록 하겠습니다. 먼저 Xr을 Visual Studio의 도구 상자에 등록하기 위해 도구상자 툴박스에서 마우스 오른쪽 버튼을 눌러 팝업창을 띠운후 항목선택(I)를 실행합니다.

사용자 삽입 이미지

그러면 다음과 같은 창이 나타나며 COM 구성요소 탭에서 XrMapControl Class을 선택해 줍니다. 정상적으로 XrMap.dll을 등록했다면 표시되지만 만약 정상적으로 등록했음에도 보이지 않는다면 찾아보기(B) 버튼을 실해앟여 XrMap.dll을 찾아줍니다.

사용자 삽입 이미지
도구 상자에 제대로 추가되면 아래와 같이 DuraMap-Xr 엔진의 아이콘이 표시됩니다.

사용자 삽입 이미지
기본적으로 다른 개발환경에서도 이와 비슷한 절차로 Xr 엔진을 등록하게 됩니다.

[GIS] XrGeoService의 구조 및 소개

아래의 그림은 Xr 맵 솔루션의 구성 요소 중 지도 데이터 서비스와 지오프로세싱 및 편집 서비스를 담당하는 XrGeoService의 개략적인 구조입니다. 제공하는 지도 데이터는 미리 렌더링된 일정 크기의 타일 지도 이미지와 수치지도 데이터와 관련된 속성데이터입니다.

사용자 삽입 이미지
클라이언트의 요청(지도데이터 서비스, 편집 서비스, 지오프로세싱 서비스)을 원할하게 처리하기 위해 스레드를 적절하게 분배했으며 포퍼먼스를 극대화 하기 위해 자체적으로 HTTP를 사용하는 웹서버 기능을 내장하고 있습니다. Geodatabase를 통해 다양한 데이터소스에 접근할 수 있으며 대략적인 구조는 아래 그림과 같습니다.

사용자 삽입 이미지
추상화된 Access를 통해 파일, 다양한 상용 DBMS를 지원합니다. 추후 ArcSDE를 통한 지원할 예정이며 XrGeoService는 자바로 개발되어 ArcSDE를 손쉽게 지원할 수 있습니다.

DataUpdater를 통해 원격으로 공간 데이터를 편집할 수 있으며 편집 이력에 대한 시간대별 관리를 지원하여 워하는 시점으로 Rollback이 가능합니다.

XrGeoService의 장점은 공간데이터의 편집 서비스와 다양한 공간데이터베이스를 손쉽게 지원하는 것뿐만 아니라 공간 데이터를 이용한 공간분석 기능인 지오서비스(GeoService) 기능을 제공합니다. 아래의 그림은 GeoprocessingControl을 통해 제공되는 지오서비스에 대한 그림입니다.

사용자 삽입 이미지
원활하고 정확한 지오프로세싱을 위해 방대한 공간 데이터와 속성 데이터가 필요한데 이런 데이터군을 관리하는 서버에서 지오프로세싱을 처리하는 것이 옳바르며 결과만을 클라이언트에게 전송해주는 방식입니다.

[GIS] Xr의 Package Diagram

사용자 삽입 이미지
Xr 맵엔진을 구성하는 핵심 패키지는 위의 다이어그램에서 보이는 것처럼 Data, View, Access, Edit가 있고, 이외에 공통 모듈인 Common과 외부 라이브러리 모듈 패키지인 Extern이 존재합니다. 예전에는 하나의 프로젝트에 모든 패키지를 묶었으나 종속성을 최대한 줄이기 위하여 이번 Xr 맵엔진 개발에서는 각 패키지를 별도의 프로젝트로 분리시켰습니다.

각 모듈에 대해 간단하게 설명을 하면… Access는 파일이나 서비스로부터 데이터를 가져오고 보내는 일을 담당하며 이렇게 주고 받은 데이터를 Data 모듈에서 제공하는 데이터 타입의 인스턴스를 생성합니다. View는 Data를 화면상에 그리는 역활을 하는 모듈이며 Edit는 Data를 편집하고, 편집하기 위해 화면상에 사용자의 입력을 반영하기 위해 View 모듈을 사용하고 이렇게 편집된 데이터를 파일이나 서버에 반영하기 위해 Access 모듈을 사용합니다.

사용자 삽입 이미지
끝으로 위의 그림은 앞서 글로만 잠시 설명했던 두개의 패키지 모듈입니다. Extern은 서드파티 개발자로부터 제공받은 외부 라이브러리로써, 예를 들어 ziplib나 shapelib 등이 있습니다. 그리고 Common은 공통적인 데이터 타입이나 메시지 상수, 매크로 정의, 유틸리티 핼퍼 함수 클래스들의 모음입니다. 이 Extern과 Common은 필요할 경우 전역적으로 참조되는 모듈입니다.

[GIS] Xr로 만든 지도 이미지 세번째..

오랜만에…. 현재 작업하고 있는 Xr 맵엔진에 대해 소개합니다. 아래의 지도 이미지는 SHP 파일들로 구성된 지도 이미지입니다. 이미지를 클릭하면 원래 크기로 보실 수 있습니다.

사용자 삽입 이미지
이 지도 이미지는 Xr 맵 엔진으로 만든 BeautifyMap이라는 디자인 툴로 만들어졌습니다. BeautifyMap은 사용자가 원하는 스타일의 지도를 디자인하기 위한 툴로써 사용자가 지정한 타일의 크기(일반적으로 256×256 픽셀이며 BeautifyMap에서 자유롭게 크기를 지정할 수 있음)의 격자 이미지로 잘라서 지도 서버 FTP에 자동으로 올려주는 툴입니다.

구글이나 네이버 그리고 다음에서 서비스하는 맵에서 볼 수 있는 세련된 지도 스타일을 간단하게 구성할 수 있는 툴입니다. BeautifyMap은  RIA 기술을 이용한 맵 솔루션을 구성하는 3가지 요소 중에 하나입니다. 일정상으로는 이번달까지 마무리하기로 되어 있어 있습니다.

지도 이미지를 살펴보면… SHP 레이어와 색상과 텍스트만으로 꾸며진 것을 볼 수 있는데요. 여기에 세련된 아이콘 이미지를 사용하면 훨씬 멋진 스타일의 지도가 연출되리라 생각합니다.