[GIS] FingerEyes-Xr for Flex, ShapeMapLayer의 filterFunction 기능

수치지도 데이터를 처리하는 레이어인 XrShapeMapLayer는 filterFunction이라는 콜백함수 기능을 제공합니다. 이 기능은 공간 서버로부터 공간 데이터를 가져오고 화면에 표시하기 전에 가져온 공간 데이터에 대한 선처리(Preprocessing)을 수행하는 용도로 사용됩니다. 아래의 코드는 XrShapeMapLayer에 filterFunction 콜백함수를 지정하는 코드입니다.

var layer:XrShapeMapLayer = null;
layer = map.layers.getLayer("LAYER_NAME") as XrShapeMapLayer;
layer.filterFunction = filterFunction;

여기서 filterFunction은 다음과 같은 인자를 갖습니다. FingerEyes-Xr 버전 2.2를 기준으로 다릅니다.

ㅡ FingerEyes-Xr version 2.2 이상

// FingerEyes-Xr version 2.2 이상
private function filterFunction(fid:uint, 
    shpLyr:XrShapeMapLayer, index:uint, cntRows:uint):void
{
    // ...
}

ㅡ FingerEyes-Xr version 2.2 미만

// FingerEyes-Xr version 2.2 미만
private function filterFunction(fid:uint, 
    shpSet:XrShapeSet, attSet:XrAttributeSet):void
{
    // ...
}

이 기능은 다양한 용도로 사용될 수 있습니다. 예를 들자면 어떤 기준에 부합되지 않으면 공간 데이터를 화면에 그리기 전에 공간 데이터를 제거함으로써 화면에 표시하지 않는 경우입니다.

ㅡ FingerEyes-Xr version 2.2 이상

// FingerEyes-Xr version 2.2 이상
private function filterFunction(fid:uint, 
    shpLyr:XrShapeMapLayer, index:uint, cntRows:uint):void 
{
    var shpSet = shpLyr.shapeSet;
    var attSet = shpLyr.attributeSet;
    var attr:XrAttribute = attSet.rows[fid];
    var bBeDelete:Boolean = true;
    var from:int, to:int, value:int;

    value = attr.getValueAsInt(13);    
    from = this.nsDeathFrom.value;
    to = this.nsDeathTo.value;

    if(value >= from && value <= to) bBeDelete = false;

    f(bBeDelete) {
        shpSet.removeRow(fid);
        attSet.removeRow(fid);
    }
}

ㅡ FingerEyes-Xr version 2.2 미만

// FingerEyes-Xr version 2.2 미만
private function filterFunction(fid:uint, 
    shpSet:XrShapeSet, attSet:XrAttributeSet):void
{
    var attr:XrAttribute = attSet.rows[fid];
    var bBeDelete:Boolean = true;
    var from:int, to:int, value:int;

    value = attr.getValueAsInt(13);    
    from = this.nsDeathFrom.value;
    to = this.nsDeathTo.value;

    if(value >= from && value <= to) bBeDelete = false;

    f(bBeDelete) {
        shpSet.removeRow(fid);
        attSet.removeRow(fid);
    }
}

위의 코드는 공간 데이터에 대한 13번째 속성값이 정해진 범위값에 들어가지 않을 경우 그리기 전에 제거함으로써 화면에 표시하지 않도록 하는 코드예입니다.

[GIS] FingerEyes-Xr for HTML5 ㅡ 공간데이터 편집

1. 공간 데이터 기본 편집

HTML5 기반의 웹 GIS 엔진인 FingerEyes-Xr에서 공간 데이터 편집 기능에 대한 소개입니다. 공간 데이터 편집 기능 중 도형 신규 생성, 정점 추가, 삭제, 이동과 편집 이력에 대한 Undo/Redo 기능을 제공하며 Snapping 기능을 소개합니다. 이러한 기본 기능에 대해서 건물 데이터에 대한 편집 기능을 데모로 하였습니다.

사용자 삽입 이미지

2. 공간 데이터 고급 편집

기본 편집 기능 이외에 고급 편집 기능으로써 하나의 도형을 자르는 Split 기능과 두개의 도형을 하나로 합하는 병합(Merge) 기능에 대한 소개입니다. 이러한 고급 기능에 대해서 지적도 필지에 대한 편집 기능을 데모로 하였습니다.

사용자 삽입 이미지

FingerEyes-Xr은 GPL 라이선스 기반의 오픈소스(OpenSource)입니다. 아래의 GitHub 링크를 통해 다운로드 받을 수 있습니다.

사용자 삽입 이미지

[GIS] FingerEyes-Xr for HTML5 ㅡ VWorld 연동, Identify, GraphicLayer

1. TMS 배경지도 연동

HTML5 기반의 FingerEyes-Xr는 TMS 스펙을 지원하고 있습니다. 구글맵, 네이버맵, 다음맵 그리고 VWorld는 TMS 형식으로 배경지도를 제공하고 있는데요. 이러한 배경지도를 핑거아이즈에서 쉽게 활용할 수 있습니다. 아래의 동영상은 VWorld 배경지도에 대한 활용예 입니다.

사용자 삽입 이미지

2. Feature 선택 및 속성 확인

다음은 수치지도 레이어에 대한 마우스 선택 및 속성 확인에 대한 동영상입니다. FingerEyes-Xr은 벡터 데이터에 대한 빠른 처리가 가능한데요. 이러한 빠른 처리가 가능한 이유는.. 서버에서 서비스 되는 벡터 데이터의 포맷을 좌표값 포맷으로 받아 클라이언트에서 처리하도록 한다는 점입니다. 물론 이는 선택 사항이고 OGC 표준인 WMS와 WFS 형태의 서비스 활용도 가능합니다.

사용자 삽입 이미지

3. 그래픽 레이어 편집(매쉬업)

FingerEyes-Xr은 그래픽 레이어를 지원함으로써 사용자가 가지고 있는 위치 데이터를 배경지도 위에 매쉬업할 수 있는 기능을 제공합니다. 자바스크립트 코드를 통해 매쉬업을 할 수 있고 마우스를 통한 편집을 통해 매쉬업할 도형을 작성할 수 있는데요. 아래의 동영상은 마우스를 통한 매쉬업 도형을 생성하고 편집하는 예입니다.

사용자 삽입 이미지

FingerEyes-Xr은 GPL 라이선스 기반의 오픈소스(OpenSource)입니다. 아래의 GitHub 링크를 통해 다운로드 받을 수 있습니다.

사용자 삽입 이미지