[GIS] FingerEyes-Xr, ShapeMapLayer의 포인트에 이미지 심벌 설정

수치지도 데이터를 서비스 받아 화면에 표시하는 레이어인 XrShapeMapLayer는 도형 데이터를 표현하는 다양한 방법을 제공합니다. 단순히는 일괄적인 색상 심벌에서부터, 속성값에 따라 달라지는 다양한 심벌에까지.. 이 포스트는 포인트 타입의 수치지도 데이터에 대해서 이미지 심벌을 지정하는 코드 예입니다.

layer = new XrShapeMapLayer("LAYER_NAME", "http://www.gisdeveloper.co.kr/Xr?layerName=SPTBL");
shpTheme = layer.theme as XrSingleColorTheme;
 
var ImgSym:XrImageMarkerSymbol = new XrImageMarkerSymbol(   
    {borderEnable:false, markerUrl:"http://www.gisdeveloper.co.kr/images/0.png"});

shpTheme.markerSymbol = ImgSym;

map.layers.addLayer(layer);

포인트 타입의 수치지도의 경우 원, 사각형 등과 같은 단순 도형에서부터 위의 글에서처럼 이미지 뿐만 아니라 특수 기호 표시를 위한 텍스트 심벌을 지원합니다.

[GIS] FingerEyes, 지오메트리의 버퍼(Buffer) 연산

핑거아이즈는 공간서버인 지오서비스(GeoService-Xr)의 지오프로세싱(Geoprocessing) 서비스를 통해 지오메트리의 버퍼 연산을 수행할 수 있습니다. 아래의 코드는 레이어의 구성 항목 중 하나의 도형에 대해 버퍼 반경값 10으로 하여 버퍼 연산을 수행하는 코드입니다.

var ml:XrMashupLayer = _map.layers.getLayer("myLyr") as XrMashupLayer;
var mashup:IXrMashup = ml.getMashup(0);
if(mashup != null)
{
    var wkt:IXrWKT = mashup as IXrWKT;
    var strKwt:String = wkt.toWKT();
    var loader:URLLoader = new URLLoader();
    var url:String = "http://www.gisdeveloper.co.kr/Gp?command=buffer;geometry=" 
        + strKwt + ";distance=10";
    var request:URLRequest = new URLRequest(url);

    loader.addEventListener(Event.COMPLETE, onBufferRequestCompleted);
    loader.load(request);			
}

1번과 2번 코드를 통해 버퍼 연산 대상이 되는 도형을 가져옵니다. 그리고 이 도형에 대한 지오메트리 정보를 WKT 형식으로 변환하는 코드가 5~6번 코드입니다. 마지막으로 7~13번 코드를 통해 공간서버로 요청을 날립니다. 아래의 이미지는 버퍼 연산의 대상이 되는 도형입니다.

사용자 삽입 이미지

버퍼 연산 서비스를 요청하고 그 결과는 onBufferRequestCompleted 함수를 통해 전달되며 다음과 같은 예로 구성될 수 있습니다.

private function onBufferRequestCompleted(event:Event):void
{
    var loader:URLLoader = event.target as URLLoader;
    var result:String = loader.data;				
    var ml:XrMashupLayer = 
        _map.layers.getLayer("myLyr") as XrMashupLayer;
    var mashup:IXrMashup = ml.getMashup(0);
    if(mashup != null)
    {
        var wkt:IXrWKT = mashup as IXrWKT;
        wkt.fromWKT(result);
        ml.updateItem(0, false);
    }

    loader.removeEventListener(Event.COMPLETE, onBufferRequestCompleted);
}

버퍼 연산 결과에 대한 지오메트리 역시 WKT 형식입니다. 연산 결과를 다시 대상이 되는 도형에 반영하고 있습니다. 그 결과는 다음과 같습니다.