[GIS] DuraMap-Xr, 그림 아이콘을 지도 위에 표시하기

포인트 SHP 파일을 듀라맵에서 표현할때 그리기 심벌로 이미지를 적용하고자 할때가 있습니다. 듀라맵에서 포인트 심벌로 제공하는 이미지 파일의 종류는 bmp, jpg, 투명 배경을 지원하는 gif, 알파값을 지원하는 png입니다.

다음 코드는 포인트 타입의 SHP 파일을 레이어로 추가하고 심벌로 png 파일을 지정하는 코드 예입니다.

axXr1.Layers.AddShapeMapLayer("lyr", "D:/__Data__/주기.shp");
axXr1.WaitForAllConnections();

if (axXr1.Resources.AddImageResource("img", "d:/__data__/redmark.png"))
{
    axXr1.Layers.GetLayerAsShapeMap("lyr").
        PointSymbol.SetImage("img", axXr1.Resources);
}

axXr1.Update();

1번 코드는 주기.shp 파일을 lyr이라는 이름의 레이어로써 추가하는 것이고, 2번 코드는 추가할 레이어의 준비가 완료될때까지 기다리는 코드이며.. 4번 코드에서 readmark.png를 심벌로 사용하기 위해서 img라는 id로 리소스로 추가해 주는 코드입니다. 그리고 6번 코드가 바로.. 가장 핵심적인 코드로 포인트 심벌을 지정해 주는 코드입니다.

사용자 삽입 이미지

위의 그림은 위에서 제시한 코드에 대한 실행 결과로.. 코드는 “SHP Layer” 버튼의 클릭 이벤트에 존재합니다.

경우에 따라서는 SHP 파일처럼 이미 준비된 포인트 데이터가 아닌.. 그때 그때마다 위치가 가변적인 곳에 이미지 심벌을 표시해야하는 경우도 있습니다. 이때는 그래픽 레이어를 사용하며.. 이때의 경우 다음의 예제 코드를 응용하여 기능을 개발할 수 있습니다.

axXr1.Layers.AddGraphicLayer("gl", "");
axXr1.WaitForAllConnections();

IPointGraphicElement gr = new PointGraphicElement();
CoordinateList cl = new CoordinateList();
cl.Add(350, 20);

gr.SetPointList(cl);

axXr1.Resources.AddImageResource("img", "d:/a.png");
gr.PointSymbol.SetImage("img", axXr1.Resources);

axXr1.Layers.GetLayerAsGraphic("gl").AddElement(0, gr as GraphicElement);

axXr1.Update();

그래픽 레이어는 레이어를 구성하는 요소마다 심벌을 지정할 수 있습니다. SHP 파일을 통해서 이미지 심벌을 지정하는 코드처럼 먼저 Resouces의 AddImageResource 매서드를 통해 이미지 리소스를 먼저 추가하고 심벌을 지정해 주면 됩니다. 이미 짐작할 수 있겠지만.. 이미지 리소스는 한번만 추가해주고 재활용할 수 있습니다.

[GIS] DuraMap-Xr 3.0 릴리즈

듀라맵 3.0이 릴리즈되었습니다. 이전 버전을 사용하고 계시는 분들은 최신 버전을 받아 사용하시기 바랍니다. 소소한 버그에서부터 좀더 크고 복잡한 SHP 파일을 읽고 표시할 수 있도록 개선되었습니다. 듀라맵 3.0은 크게 3가지 기능이 추가되었습니다. 3가지 추가된 기능은 다음과 같습니다.

1. 데이터 용량에 제한없이 항공 및 위성 영상 표현

50cm, 25cm급 항공영상에 대해서 전국 범위의 테라급 용량의 항공 및 위성 영상을 듀라맵에서 빠르게 표현할 수 있게 되었습니다.  geotiff 파일로부터 피라미드 시스템을 구축하여 듀라맵에서 사용할 수 있는 포맷(XrR)으로 변경하여 사용할 수 있으며 이렇게 변경된 XrR 파일을 이용해 항공 및 위성영상을 듀라맵에서 읽을 경우 리소스를 거의 사용하지 않으면서 빠르게 화면상에 영상을 표시할 수 있습니다.

사용자 삽입 이미지
듀라맵을 이용하여 대용량의 항공영상을 표시하여 듀라맵의 도형 편집 기능을 이용하여 항공영상을 기반으로 수치지도를 편집할 수 있습니다. 듀라맵에서 사용할 수 있는 항공 및 위성영상에 대한 XrR 포맷으로 변환은 지오서비스로 문의하시기 바랍니다.

2. 공간데이터 서버를 통한 공간 데이터 표현

서버로부터 수치지도와 속성 데이터를 받아 지도를 표시할 수 있는 기능이 추가되었습니다. 기존의 SHP 파일을 통해 레이어를 추가하는 방식과 동일한 매서드인, Layers 객체의 AddShapeMapLayer를 사용하며 서버로부터 레이어를 추가하는 코드 예는 다음과 같습니다.

Xr1.Layers.AddShapeMapLayer("layerName", "XrVtp://abld@geoservice.co.kr:8080/Xr")

위의 코드는 geoservice.co.kr이라는 URL에 존재하는 서버의 8080 포트를 통해 서버가 가지고 있는 레이어중 abld라는 이름의 레이어 리소스를 추가하는 예입니다. 서버를 통해 수치지도를 서비스 받음으로써 수치지도를 네트워크를 통해 여러 사람과 쉽게 공유할 수 있으며 64비트 기반의 서버를 통해 대용량의 수치지도를 관리하고 서비스할 수 있는 기반이 제공됩니다. 듀라맵에 수치지도 및 속성 데이터를 제공하는 서버에 대한 문의는 지오서비스로 하시기 바랍니다.

3. 입체 건물 렌더링 품질 개선

끝으로.. 듀라맵의 장점 중에 하나인 건물의 2.5D 입체 표현에 대해서 그 표현의 품질이 개선되었습니다. 기존에는 건물의 옆면이 모두 동일한 색상으로 표시되어 입체감이 다소 떨어졌으나 3.0 버전에서부터는 태양광의 방향에 따라 옆면의 색상을 다르게 표현하도록 하여 입체감이 향상되었습니다.

사용자 삽입 이미지