[GIS] ArcObjects, 속성값으로 도형 선택하기

ESRI에서 정의하는 Feature는 도형+속성입니다. 즉 공간 상의 위치/모양을 나타내는 도형 정보와 이 도형 정보에 대한 속성 정보의 쌍이 Feature라고 할 수 있습니다. GIS 시스템에서 우리는 매우 자주 속성값의 검색을 통해 공간 상의 도형이 어떻게 분포되어 있는지를 파악해 보는 경우가 많습니다. 예를 들어서 서울시를 구성하는 행정구 중에서 인구가 10만명 이상인 지역이라든지… 행정구의 이름 중 ‘동’자가 들어가는 동대문구나 동작구 등과 같은 지역의 도형을 선택하는 것입니다. 여기서는 두번째 예인 ‘동’자가 들어가는 서울시의 행정구를 선택해보는 예를 통해 속성값으로 도형을 선택하는 기능에 대해 정리해 보도록 하겠습니다.

먼저 서울시의 SHP 파일로부터 지도 레이어를 추가합니다. 이 SHP 파일의 속성값은 아래와 같습니다.

사용자 삽입 이미지
살펴보면 SGG_NM이라는 필드명이 행정구의 이름을 담고 있는 필드라는 것을 알 수 있습니다. 이런 경우에 ‘동’자가 들어가는 행정구의 이름을 가진 레코드를 검색하기 위해 우리는 흔히 다음과 같은 SQL문을 던지게 됩니다.

SELECT * FROM TABLE_NAME WHERE SGG_NM LIKE '%동%'

여기서 중요한 것은 WHERE절에 해당하는 SGG_NM LIKE ‘%동%’입니다. 바로 SQL문의 WHERE절에 우리가 원하는 조건을 통해 속성 조건값에 일치하는 도형을 선택할 수 있게 됩니다. 아래는 실제로 속성값에 대한 도형 선택에 대한 ArcObjects의 코드입니다.

ESRI.ArcGIS.Carto.IFeatureLayer pFL = axMapControl1.get_Layer(0) as 
                     ESRI.ArcGIS.Carto.IFeatureLayer;

ESRI.ArcGIS.Geodatabase.IFeatureClass pFC = pFL.FeatureClass;
ESRI.ArcGIS.Geodatabase.QueryFilter pQF = 
                     new ESRI.ArcGIS.Geodatabase.QueryFilter();

pQF.WhereClause = "SGG_NM LIKE '%동%'";

ESRI.ArcGIS.Geodatabase.ISelectionSet pSS = pFC.Select(pQF,
                           esriSelectionType.esriSelectionTypeIDSet,
                           esriSelectionOption.esriSelectionOptionNormal, null);

ESRI.ArcGIS.Carto.IFeatureSelection pFS = 
                    pFL as ESRI.ArcGIS.Carto.IFeatureSelection;
pFS.SelectionSet = pSS;

axMapControl1.ActiveView.Refresh();

아래는 그 실행 결과 화면입니다.

사용자 삽입 이미지

서울시의 행정구 중에 ‘동’자가 들어간 영역에 대한 총 4개의 도형이 선택된 것을 알 수 있습니다.

“[GIS] ArcObjects, 속성값으로 도형 선택하기”에 대한 2개의 댓글

    1. 네, 김과장님 ^^ 워낙 ArcObjects가 유연한 API이다보니 한가지 방법에도 다양한 코드와 방법이 존재하는듯합니다. 여러가지로 배울점이 많은 API입니다..

답글 남기기

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