< CreateRingMap for OpenLayers >
RingMap은 시계열 데이터를 시각화하는 하나의 방법으로 OpenLayers2 기반(이하 OL2)에서 RingMap을 생성할 수 있는 라이브러리를 만들었다. 이민파 소장님(Minpa Lee)의 Create Ring Maps using PyQGIS Script 포스팅 내용을 참고하였다.
OL2의 {OpenLayers.Layer.Vector}를 상속받아 Layer 타입의 형식을 가지고 있는 하나의 완성체 클래스이다. 기존의 레이어와 동일한 방법으로 레이어를 Map Object에 추가할 수 있다. CLASS_NAME을 "OpenLayers.Layer.CreateRingMap" 라는 이름으로 부여했다.
심볼 스타일 설정을 위해 geostats라는 classification 라이브러리를 사용하였는데, geostats에서 지원하는 classify 함수로 Equal Interval, Quantile, Natural Breaks 등 여러가지가 있지만 Equal Interval만 고정으로 사용하도록 했다. 같은 데이터로 QGIS와 값을 비교를 해보니 Equal Interval만 정확히 맞아 떨어졌다.
DEMO 페이지를 통해서 간단하게 실행해 볼 수 있다.
첨부된 파일의 openlayers_ringmap.html 열어 샘플예제를 확인한다. Vector 레이어 하나가 올라오지 않는다면 크로스 도메인 문제이고, 라이브러리 참조를 인터넷 링크로 걸어놨기 때문에 인터넷 연결이 되지 않는 곳에서는 예제를 제대로 실행할 수 없다.
예제에 있는 샘플 데이터는 이민파 소장님 포스팅에 있는 데이터셋과 동일한 것을 사용하고 있는데, 좌표변환된(EPSG:5176에서 EPSG:3857) GML, GeoJSON 타입으로 첨부하였다.
- CreateRingMap Script : https://www.dropbox.com/s/g8y3hg0vqbgsvmj/CreateRingMap.js
CreateRingMap class는 단독으로 사용될 수 없고, 시계열 속성을 가진 벡터 레이어가 먼저 Map에 포함되어 있어야 한다. 대상이 되는 벡터 클래스의 필드, 그리고 디스플레이 옵션들로 이루어져있다. 샘플예제에 포함되어 있는 범례는 CreateRingMap에 포함된 기능은 아니다.
- 필수 프로퍼티
- sourceLayer : 시계열 데이터를 가진 원본 레이어 - {OpenLayers.Layer.Vector}
- fieldNames : 원본 레이어의 시계열 필드명 - {Array}
- 선택 프로퍼티
- labelDisplay : 공통 라벨설정 (default false) - {Boolean}
- labelField : 라벨을 설정할 필드명 - {String}
- valueDisplay : 셀에 값 표시 유무 (default false) - {Boolean}
- anchorDisplay : 원본 데이터와 첫번째 셀간의 연결선 생성 (default false) - {Boolean}
- colors : 색상설정 {Array}
< Example : anchorDisplay가 설정되어 원본 데이터의 중심점과 연결됨 >
< Example : valueDisplay가 설정되어 각 Cell의 Value값이 표시 >
< Example : colos의 기본값 >
'Dev Story > gis' 카테고리의 다른 글
[postgresql] java.io.IOException: Error occurred creating table (0) | 2014.03.12 |
---|---|
[geoserver] ERROR:ST_Estimated_Extent (0) | 2014.03.10 |
[GeoTools] Load the EPSG Properties File (0) | 2013.04.03 |
[postgis] PostGIS Shapefile Import/Export Manager 사용방법 (Import) (0) | 2013.01.23 |
위치, 공간정보 활용 데이터 서비스 (0) | 2013.01.15 |