[GIS] FingerEyes, FID를 통해 MBR 얻는 API 사용 예

오직 공간 도형에 대한 FID 값만을 알고 있는 상태에서 해당 도형의 MBR 영역을 얻어는 방법입니다. 물론 공간 데이터는 저…… 멀리 떨어진 서버에 존재하고 있습니다. 사용하는 클래스는 XrQueryMBRByFIDService이며 사용 예에 대한 코드는 다음과 같습니다.

var fid:int = 77707;
var layer:XrShapeMapLayer = map.layers.getLayer("JIBUN") as XrShapeMapLayer;
     
var svc:XrQueryMBRByFIDService =  
     new XrQueryMBRByFIDService(onRequestMBRComplete, onRequestMBRError);

if(!svc.run( { layer:layer, fid:fid } ))
{
    // 에라! 에러다! 에라이! ㅡ,.ㅡ
}

1번과 2번 코드를 통해 FID 값은 77707이며 검색 대상이 되는 레이어를 레이어 명으로 얻어옵니다. 그리고 XrQueryMBRByFIDService의 run 함수를 통해 FID와 대상 레이어를 인자로 해서 호출합니다.

성공적으로 MBR을 얻어오면 onRequestMBRComplete 함수가 호출되며 실패하면 onRequestMBRError가 호출됩니다. 이 함수들의 코드는 다음과 같은 형태가 될 수 있습니다.

private function onRequestMBRComplete(mbr:XrExtent):void
{
    map.moveMap(new XrCoordinate(mbr.centerX, mbr.centerY), false);
    map.update(true);
}
   
private function onRequestMBRError():void
{
    // 에라!    
}

MBR 얻기가 성공했을때 호출되는 콜백함수에는 MBR 값이 XrExtent 타입으로 넘어옵니다. 이 타입을 통해 MBR에 접근해 지도를 이동시키는 등의 작업을 할 수 있습니다.

아래의 이미지는 위의 코드를 기반으로 지적 검색 기능을 실제 프로젝트에 적용해 본 화면입니다. 읍면 그리고 리 등과 같은 정보를 입력하고 검색을 누르면 해당 지번이 검색되고 검색된 지번 중 하나를 선택하고 이동 버튼을 누르면 선택된 지번의 FID 값을 이용해 해당 위치로 이동합니다.

사용자 삽입 이미지

[GIS] FingerEyes, SQL Query API 사용 예

Flex 기반의 GIS 엔진인 핑거아이즈는 데이터베이스 테이블의 데이터를 쉽게 쿼리할 수 있는 매우 손쉬운 API를 내장하고 있습니다. XrQueryTableService라는 클래스로 이름에서도 알 수 있듯이 테이블에 대해 쿼리를 날려주는 서비스를 제공하는 녀석입니다. SQL 구문 중 SELECT 구문을 통해 쉽게 데이터를 질의할 수 있습니다. 아래는 이 클래스를 사용하는 한가지 예입니다.

var svc:XrQueryTableService = new XrQueryTableService(
    "127.0.0.1:8080",
    "postgis",
    searchQueryRequestComplete,
    searchQueryRequestError
);

var select:String = "SELECT * FROM yp_admindistrict_main";
svc.run({sql:select});

DBMS는 127.0.0.1:8080 주소에 존재하는 서버에 있습니다. 그리고 DBMS는 postgis이구요. arcsde나 jdbc로도 지정이 가능합니다. 쿼리가 성공했을 시 searchQueryRequestComplete라는 함수가 콜백되고 실패했을 시에는 searchQueryRequestError라는 함수가 콜백됩니다. 실제 SQL문의 지정은 XrQueryTableService의 run 매서드를 통해 실어 보낼 수 있습니다.

쿼리시 성공했을 때와 실패했을 때의 콜백 함수의 예는 다음과 같습니다.

private function searchQueryRequestComplete(result:String):void
{
    ta.text = result;
}
   
private function searchQueryRequestError():void
{
    ta.text = "err!";
}

위에서 ta는 Flex의 TextArea 컴포넌트입니다. 버튼을 클릭했을 시 위의 코드들을 통해 쿼리를 날리고 결과를 받아 화면에 표시하는 화면은 아래와 같습니다.

사용자 삽입 이미지
보시는 것처럼 TextArea에 쿼리 결과가 XML 형태로 넘어 오는 것을 알 수 있습니다. 핑거아이즈는 개발자가 쉽게 DBMS에 접근하여 개발할 수 있도록 XrQueryTableService라는 클래스를 제공합니다. 이 외에도 ID를 통해 공간 도형의 MBR을 가져오는 서비스 등도 클라이언트 맵 엔진 단에서 제공하고 있습니다.