[GIS] DuraMap-Xr, 도형 지도 레이어의 심벌 지정

Xr의 속성 중 레이어를 관리하는 객체인 Layers의 AddShapeMapLayer 매서를 통해 추가된 수치 지도 레이어의 색상 심벌 등을 지정하는 API에 대한 설명입니다.

먼저 개발환경에서 C#의 폼 어플리케이션 프로젝트를 생성하고 폼에 버튼들과 Xr 맵엔진을 올려 아래와 같이 화면을 디자인합니다.

사용자 삽입 이미지

상단에 4개의 버튼이 있는데, 왼쪽에서 오른쪽으로 순서대로 클릭하여 Xr 맵 컴포넌트에 그 반응을 살펴 보도록 하겠습니다. 첫번째 버튼인 Add Layers는 shp 파일로부터 레이어를 추가하는데 건물과 실폭도로에 대한 컨텐츠를 가지고 있습니다. 이 버튼의 클릭 이벤트는 아래와 같습니다.

axXr1.MapBackgoundColor = Color.FromArgb(10, 80, 10);

axXr1.Layers.AddShapeMapLayer("건물", "d:/building.shp");
axXr1.Layers.AddShapeMapLayer("도로", "d:/road.shp");
axXr1.WaitForAllConnections();

axXr1.ZoomFullExtent();
axXr1.MapScale = 4000;

레이어의 식별자로써 사용된 레이어의 이름인 ‘건물’, ‘도로’를 통해 각 레이어 객체를 얻어와 그리기 정의 심벌을 변경함으로써 원하는 스타일의 지도를 그릴 수 있습니다. 먼저 건물 레이어의 심벌을 변경하는 버튼인 Symbol Building 버튼의 클릭 이벤트에 대한 코드는 아래와 같습니다.

XrMapLib.IShapeMapLayer lyr;
lyr = axXr1.Layers.GetLayerAsShapeMap("건물");
if(lyr != null) 
{
    lyr.LineSymbol.Color = 
        (uint)ColorTranslator.ToOle(Color.FromArgb(0, 0, 0));
    lyr.FillSymbol.Color = 
        (uint)ColorTranslator.ToOle(Color.FromArgb(107, 107, 107));
    axXr1.Update();
}

ShapeMapLayer는 LineSymbol과 FillSymbol 그리고 PointSymbol 프로퍼티를 제공하며 이 프로퍼티를 통해 도형을 그리기 위한 심벌을 변경할 수 있습니다. 위의 코드는 도형의 선과 면에 대한 색상 심벌을 변경하고 있습니다.

다음은 ‘도로’ 레이어에 대한 심벌을 변경하는 버튼인 Symbol Road에 대한 코드로써 건물 레이어의 심벌을 변경하는 것과 다르지 않습니다.

XrMapLib.IShapeMapLayer lyr;
lyr = axXr1.Layers.GetLayerAsShapeMap("도로");
if (lyr != null)
{
    lyr.LineSymbol.Color = 
        (uint)ColorTranslator.ToOle(Color.FromArgb(200, 200, 200));
    lyr.LineSymbol.Width = 1;
    lyr.FillSymbol.Color = 
        (uint)ColorTranslator.ToOle(Color.FromArgb(200, 200, 200));

    axXr1.Update();
}

이제 끝으로 건물 레이어의 층수에 대한 값에 대한 속성을 이용하여 입체적으로 표현하기 위한 2.5D Building에 대한 버튼의 코드는 아래와 같습니다.

XrMapLib.IShapeMapLayer lyr;
lyr = axXr1.Layers.GetLayerAsShapeMap("건물");
if (lyr != null)
{
    XrMapLib.MapTheme3D theme3D = lyr.Set3DTheme();
    theme3D.HeightFieldName = "ABV_FL_CNT";
    theme3D.HeightWeight = 3.3;

    axXr1.Update();
}

건물 레이어의 층수에 대한 값은 ABV_FL_CNT라는 이름의 필드에 해당하며 이 값은 층수이므로 미터 단위의 높이값으로 환산하기 위해 3.3이라는 가중치를 주는 코드입니다.

이렇게 총 4개의 버튼에 대한 코드를 통해 순서대로 버튼을 클릭하면 아래와 같은 결과가 Xr 지도에 표시됩니다.

사용자 삽입 이미지

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다