[GIS] FingerEyes-Xr for HTML5 ㅡ Code로 GraphicLayer에 마커 추가하기

FingerEyes-Xr은 그래픽 레이어를 통해 지도 상의 원하는 위치에 다양한 그래픽 요소를 추가해 표현할 수 있는데요. 이와 관련된 API를 정리해 봅니다. 그래픽 요소를 추가하기 위해서 그래픽 레이어가 하나 필요합니다. 아래의 코드를 통해 그래픽 레이어를 추가합니다. var gfxLyr = new Xr.layers.GraphicLayer(“g”); map.layers().add(gfxLyr); 그래픽 레이어의 이름을 ‘g’로 하여 이 이름을 통해 그래픽 레이어 객체를 얻을 수 있습니다. 이 …

[GIS] FingerEyes-Xr for Flex의 편집 기능을 위한 API 설명

FingerEyes-Xr for Flex에서 DBMS에 저장되어 있는 공간 데이터를 마우스를 이용해 사용자가 편집하는 기능을 구현하기 위한 API를 설명하는 문서입니다. DBMS에 저장되어 있는 공간 데이터의 정점을 편집할 수 있도록, 기존 정점을 이동하거나 삭제하고 새로운 정점을 추가하는 기능과 새로운 공간 도형을 생성하고 기존 도형을 삭제하는 기능을 구현하는 튜토리얼 형태의 문서입니다. 또한 편집 이력에 대한 Undo와 Redo에 대한 기능도 …

[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를 …

[GIS] FingerEyes-Xr for HTML5 ㅡ 공간분석 기능

1. 밀도도 분석 핑거아이즈(FingerEye-Xr)에서 제공하는 레이어 중에서 그리드 레이어를 이용한 기능으로써, 공간상에 분포하고 있는 데이터에 대해서 어느 지점에 가장 많이 밀집되어져 있는지를 매우 직관적으로 파악할 수 있는 밀도도 분석에 대한 소개입니다. FingerEyes-Xr에서 실행할 수 있는 밀도도 분석을 통해 웹 환경에서 높은 품질의 분석 결과를 사용자에게 제공할 수 있습니다. 2. 지형 분석 다양한 공간분석 기능 중 …

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

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

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

1. TMS 배경지도 연동 HTML5 기반의 FingerEyes-Xr는 TMS 스펙을 지원하고 있습니다. 구글맵, 네이버맵, 다음맵 그리고 VWorld는 TMS 형식으로 배경지도를 제공하고 있는데요. 이러한 배경지도를 핑거아이즈에서 쉽게 활용할 수 있습니다. 아래의 동영상은 VWorld 배경지도에 대한 활용예 입니다. 2. Feature 선택 및 속성 확인 다음은 수치지도 레이어에 대한 마우스 선택 및 속성 확인에 대한 동영상입니다. FingerEyes-Xr은 벡터 데이터에 …

[GIS] FingerEyes-Xr, 속성값에 따라 라벨의 폰트 심벌 다르게 지정하기

웹 GIS 솔루션이자 엔진인 FingerEyes-Xr에서 라벨을 표시할때 속성값에 따라 다양한 모양으로 라벨을 표시하고자 하는 경우에 대한 내용입니다. 예를 들어서 지적도에 대한 필지값이 ‘전’, ‘구’, ‘임’, ‘도’, ‘답’으로 끝나는 경우에 대해 각기 다른 폰트 심벌로 표시하고자 할때 사용할 수 있는 방법입니다. 아래의 화면은 실제 이와 같은 경우에 대한 실행 화면입니다. 위의 화면에서 보는 것처럼 하나의 레이어에 …

[GIS] FingerEyes-Xr, 선형에 대해 자동으로 회전하는 라벨링

핑거아이즈 최신 버전에서는 선형 레이어에 대한 라벨이 선의 기울기에 따라 회전하도록 개선되었습니다. 아래는 도로명 주소에 대한 라벨이 도로의 방향에 따라 회전하는 핑거아이즈 실행화면입니다. 라벨의 텍스트에 기본적으로 외곽선을 표시함으로써 다른 그래픽 요소와 분명히 구별되어 깔끔하게 표시가 되는 것을 볼 수 있습니다. 핑거아이즈에서 이러한 라벨의 회전을 위해서는 폰트를 내장(embed)해야 합니다. 이는 핑거아이즈의 기반 기술인 Flex SDK에서 텍스트를 …

[GIS] FingerEyes-Xr에서 공간 데이터 편집에 대한 정리(Bridge Edit)

(주의) 이 글은 현재 핑거아이즈의 Bridge Edit 방식을 설명한 글입니다. 코드 작성을 위한 효율성을 목적으로 이 글의 내용이 실제 API와 달라질 수 있습니다. 이 글은 FingerEyes-Xr 버전 2.7을 기준으로 합니다. 핑거아이즈(FingerEyes-Xr)는 웹에서 공간 데이터를 편집할 수 있는 강력한 기능을 지원합니다. 편집에 대한 Undo/Redo는 물론 Vertex와 Segment에 대한 스냅핑(Snapping) 기능을 지원함으로써 편집에 대한 편리성을 사용자에게 제공합니다. …

[GIS] FingerEyes-Xr, TMS(OSGeo Spec) 지원

핑거아이즈가 OSGeo 스펙인 TMS를 지원합니다. TMS는 타일맵 형태의 맵 서비스로 오픈스트리트, 다음, 네이버, 지오서비스의 지도 서비스에서 따르는 맵 서비스 형태입니다. 핑거아이즈에서  TMS를 지원함으로써 사용자가 원하는 다양한 배경지도를 쉽게 활용할 수 있습니다. 다음은 네이버에서 제공하는 배경지도를 핑거아이즈에서 레이어로 추가한 화면입니다. TMS를 활용하기 위해서는 최소한 다음과 같은 메타데이터(Metadata)를 알고 있어야 합니다. 1픽셀에 대한 지도단위 길이 타일맵 이미지 …

[GIS] FingerEyes-Xr, 핑거아이즈로 생성한 밀집도(밀도도)

아래의 이미지는 웹 GIS 엔진인 핑거아이즈(FingerEyes-Xr)로 생성한 밀집도입니다. 흔히 밀집도는 Kernel Density 알고리즘을 사용해 계산됩니다. 알고리즘 명칭에 Density가 사용되어 밀집도라는 용어 대신 밀도도라는 용어가 사용될 수도 있습니다. 위의 밀집도의 대상 데이터는 교통사고 발생 지점입니다. 해외나 국내에서 웹기반의 지도 엔진에서 제공되는 밀집도 분석 결과는 HeatMap이라는 기능에서 사용된 오픈소스를 그대로 적용하거거나 개선해 구현함으로써 그 품질이 떨어집니다. 핑거아이즈는 …

[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; …

[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 …

[GIS] FingerEyes, Geometry로 Feature 가져오기

Geometry로 Feature를 가져온다는 의미는 임의의 지오메트리와 공간상에서 교차하는 Feature를 가져온다는 의미입니다. 임의의 지오메트리이므로 폴리곤, 폴리라인, 포인트 등 제약이 없습니다. 기준 지오메트리는 WKT 형식으로 쉽게 지정할 수 있습니다. 다음은 지정한 폴리라인과 교차하는 Feature를 서버측으로부터 가져오라는 코드 예입니다. var pnuLyr:XrShapeMapLayer = map.layers.getLayer(“JIBUN”) as XrShapeMapLayer; if(pnuLyr != null) { var bOK:Boolean = pnuLyr.queryByGeometry( “LINESTRING(250661 54225, 250343 53233)”, true, …

[GIS] FingerEyes, FID 리스트로 Feature 가져오기

FID값은 FeatureID로써 이 값에 대한 Feature를 가져오는 예제 코드입니다. 참고로 Feature는 공간 데이터 + 속성 데이터의 셋입니다. var pnuLyr:XrShapeMapLayer = map.layers.getLayer(“JIBUN”) as XrShapeMapLayer; if(pnuLyr != null) { var fids:Vector. = new Vector.(); fids.push(100, 200, 300, 400, 500, 600, 700, 10000); if(!pnuLyr.queryByFIDs(fids, true, callback)) { // Query Request Error !! } } 먼저 대상 레이어를 파악해야 …

[GIS] FingerEyes, UPDATE, INSERT, DELETE SQL 문 실행

핑거아이즈는 서버측의 DBMS에 UPDATE, INSERT, DELETE와 같은 SQL 문을 실행할 수 있도록 요청할 수 있습니다. 다음 코드는 그 예입니다. var svc:XrUpdateTableService = new XrUpdateTableService( “127.0.0.1:8076”, “postgis”, __completed, __error ); var sql:String = “INSERT INTO tstTbl VALUES (100, ‘안녕하세요!’)”; svc.run({sql:sql}); SQL문의 실행을 서버측에 요청하고 그 결과를 받아오는 일련의 과정을 사용하기 쉽게 캡슐화된 XrUpdateTableService 클래스를 이용합니다. 서버의 …

[GIS] FingerEyes, 면적, 거리 측정하기

핑거아이즈에서 마우스로 거리와 면적을 측정하는 방법에 대한 설명입니다. 펑거아이즈는 면적과 거리에 대해서도 스냅핑 기능을 적용할 수 있음으로 보다 정확하게 면적과 거리를 측정할 수 있습니다. 예를 들어 지적도를 대상으로 스냅핑을 적용할 경우 면적과 거리를 마우스를 이용해 측정할때 지적도의 도형의 정점이나 선분에 스냅핑되어 지적도를 정확히 참조하여 거리와 면적을 측정할 수 있습니다. 핑거아이즈의 거리와 면적의 측정은 매쉬업 레이어를 …

[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 } )) …

[GIS] FingerEyes, SQL Query API 사용 예

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

[GIS] FingerEyes, 핑거아이즈를 활용한 지도 뷰 앱 소개

핑거아이즈는 지오서비스에서 개발한 RIA 맵엔진입니다. 기존에 PC 기반의 견고한 GIS 시스템 개발에 안정적으로 활용되어 왔습니다. 최근 플래시를 개발한 Adobe에서 RIA를 통해 한번의 개발로 Android, iOS, BlackBerry 기반의 디바이스에서 구동이 가능한 앱 개발을 적극 지원함으로써 이에 대해 핑거아이즈를 활용하여 안드로이드에서 지도를 볼 수 있는 앱을 간단히 만들어 공개해 봅니다. 어도비의 AIR의 성능이 향상됨에 따라 모바일 디바이스에서 …