[OpenLayers] 객체편집기능 Ver.3.0
WFS-T(transactWFS) : OpenLayers+GeoServer+PostGIS
* 웹기반 OpenLayers + GeoServer 객체편집기능으로 지난글을 작성하였습니다.
( https://cafe.naver.com/gisapplication/1050 )
* 이번에는 PostGIS을 사용하여 객체편집을 구현하는데 고려해야할 사항이 있어 정리해봅니다.
- OpenLayers(ol.js v6.1.1)에서는 ol.format.WFS, ol.format.GML을 사용하였습니다.
- GeoServer wfs transaction filter로 shapefiles data store를 이용할때와 동일하나,
PostGIS로 구성할때의 편집기능 입니다
- 객체선택시 객체정보창의 [편집] 버튼이 아닌 링크를 눌러 편집시작
- 객체 생성은 좌측TOC에서 레이어 선택후 "생성"버튼 클릭으로 편집시작
- reSize편집정보창에서 속성을 변경하여 "저장(생성/업데이트)", "삭제" 기능 수행
- 지도상에서 편집상태일경우 버텍스가 표시되고, 버텍스 이동과 선분에 표시되는 점으로 버텍스생성
- 버텍스 삭제는 "Alt"키를 누른상태에서 버텍스 클릭시 삭제
- 스냅모드는 일단 자동으로 켜놓았습니다.
- 일단 주요한점은 그대로 생성하고 설정후 편집기능을 실행하면 읽기전용 등의 메세지로 편집수행을
하지못합니다. 결론은 PostGIS에 "primary keys"필드의 사용에 문제가 있었습니다.
* 편집기능
- OpenLayers확장기능의 응용으로 기존 버텍스 편집과 객체 편집을 병행하도록 하였습니다.
- 객체 스케일, 회전, 이동을 할 수 있습니다.
- 스케일링 할 때 비율을 유지 하려면 Shift 키를 사용 하십시오 (keepAspectRatio 참조).
스케일링 할 때 Ctrl 키를 사용 하여 중심으로부터 조정됩니다.
* 데모: http://www.gisapplication.kr/OL/Neighborpost/
* 편집설정을 요약하여 정리합니다.
1) "PostGIS PostGIS Bundle 3 for PostgreSQL x64 12 Shapefile and DBF Loader Exporter"를 사용해서 shp파일로 테이블을 생성합니다.
- SRID에 좌표계를 넣으면 나중에 GeoServer에 레이어 등록시 자동으로 설정하도록 입력합니다.
2) "pgAdmin"을 실행하면 해당 스키마에 테이블로 등록됩니다.
등록한 테이블의 속성을 보면 Shp파일로 자동 등록시 primary keys필드로 "gid"가 생성되며 등록됩니다.
다른 필드로 변경하거나 다른방식(쿼리문, QGIS 등)으로 테이블을 생성하였다면 primary keys 설정을 잘하셔야
합니다. 이것까지는 테스트하지 않았지만 primary keys메타데이터 생성 및 몇가지 수동으로 변경/생성시는 잘해야
합니다. 테스트하려다 이번 목표에서는 제외하였습니다. 이설정이 제대로 안되면 WFS-T수행시 읽기전용으로 명령이
수행되지 않습니다.
3) GeoServer에 위 PostGIS에 올린 테이블을 레이어로 발행시,
먼저 PostGIS 저장소를 만듭니다, 이때 "Expose primary keys"를 체크해야 필드속성에서 키필드를 이용할 수
있습니다. 그래야 객체 생성/편집/삭제 WFS-T(transactWFS)가 가능합니다.
4) WFS-T(transactWFS)로 객체 편집/삭제/생성
웹기반 OpenLayers + GeoServer 객체편집기능으로 지난글 ( https://cafe.naver.com/gisapplication/1050 )처럼
WFS-T(transactWFS)명령으로 객체를 관리합니다. 기존글에서는 멀티폴리곤을 대상으로 하였구요.
차후 시간이 있으면 포인트와 폴리라인에 대한 WFS-T를 작성하려합니다. (본사업에서는 자ㅓㄱ용되었으나 정리를 못해서요 ㅠㅠ)