- OpenLayers를 여행하는 개발자를 위한 안내서 - 25. WebGL로 초대용량 데이터 표시하기
- OpenLayers를 여행하는 개발자를 위한 안내서 - 24. Heat Map 표현하기
- OpenLayers를 여행하는 개발자를 위한 안내서 - 23. Cluster Map 표현하기
- OpenLayers를 여행하는 개발자를 위한 안내서 - 22. WFS Transaction으로 데이터 삭제하기
- OpenLayers를 여행하는 개발자를 위한 안내서 - 21. WFS Transaction으로 데이터 수정하기
- OpenLayers를 여행하는 개발자를 위한 안내서 - 20. WFS Transaction으로 데이터 추가하기
- OpenLayers를 여행하는 개발자를 위한 안내서 - 19. WMS에 팝업 붙이기
- OpenLayers를 여행하는 개발자를 위한 안내서 - 18. WFS에 팝업 붙이기
- OpenLayers를 여행하는 개발자를 위한 안내서 - 17. WFS 객체에 상호작용 추가하기
- OpenLayers를 여행하는 개발자를 위한 안내서 - 16. WMS GetImage를 사용하여 지도에 이미지 표시하기
- OpenLayers를 여행하는 개발자를 위한 안내서 - 15. WFS GetFeature를 사용하여 지도에 객체 표시하기
- OpenLayers를 여행하는 개발자를 위한 안내서 - 14. 지도에 사용자의 위치 표시하기
- OpenLayers를 여행하는 개발자를 위한 안내서 - 13. 브라우저에서 사용자 위치정보 수집하기
- OpenLayers를 여행하는 개발자를 위한 안내서 - 12. 맵의 유용한 정보 표시하기
- OpenLayers를 여행하는 개발자를 위한 안내서 - 11. VWorld 맵 만들기
- OpenLayers를 여행하는 개발자를 위한 안내서 - 10. Open Street Map(OSM) 맵 만들기
- OpenLayers를 여행하는 개발자를 위한 안내서 - 9. 데이터 필터링하기
- OpenLayers를 여행하는 개발자를 위한 안내서 - 8. 공간정보 데이터를 주문하는 법. OGC
👀 OpenLayers를 여행하는 개발자를 위한 안내서 - 7. 공간정보 데이터를 관리하는 법. GeoServer
- OpenLayers를 여행하는 개발자를 위한 안내서 - 6. 공간정보의 DB화
- OpenLayers를 여행하는 개발자를 위한 안내서 - 5. OpenLayers
- OpenLayers를 여행하는 개발자를 위한 안내서 - 4. QGIS 체험하기
- OpenLayers를 여행하는 개발자를 위한 안내서 - 3. 좌표계
- OpenLayers를 여행하는 개발자를 위한 안내서 - 2. GIS랑 인사하기
- OpenLayers를 여행하는 개발자를 위한 안내서 - 1. 머릿말
Table of Contents
Without GeoServer 🔗
이전 장에서 공간정보 데이터를 DB에 넣어봤다. 이제 데이터를 적절한 방법으로 통신할 방법만 마련한다면, DB에 저장한 공간정보 데이터를 웹에서든 앱에서든 자유롭게 활용할 수 있을 것이다.
하지만 누누히 언급했듯이, 공간정보 데이터는 다른 데이터와 엄연한 차별점이 존재한다. 바로 공간 데이터라는 점이다. 공간정보 데이터는 일반적인 텍스트 기반의 데이터가 아니다보니, CRUD에 있어서 굉장히 취약하다. 좀 더 자유로운 통신을 위해 DB에 넣었음에도 CRUD에 전혀 강점이 없는 것.
즉, MyBatis든, JPA든, 일반적인 DB 통신으로는 공간정보 데이터를 온전히 받기가 어렵다.
GeoServer 🔗
이 쯤에서 등장하는 게 GeoServer다. GeoServer는 GIS 데이터를 공유, 편집할 수 있는 웹 서버다. JAVA로 개발된 오픈 소프트웨어다.
API 형태로 원하는 GIS 데이터를 다양한 형태로 통신할 수 있으며, 엔진 단계에서 좌표계 변환, 타일 렌더링 등을 제공하기 때문에 개발자가 구현해야할 GIS 연산 로직이 대폭 감소한다.
GeoServer 설치하기 🔗
설치는 GeoServer 공식 홈페이지에서 확인 가능하다. GeoServer의 파일은 두 가지 형태로 제공한다.
- Stand-Alone: 단독 설치버전. WAS가 자체적으로 포함되어있음.
- Platform Independent Binary: OS에 범용적인 바이너리 파일
- Windows Installer: Windows 전용 exe 파일
- Web Archive: WAR 버전. Tomcat같은 JavaEE를 구현한 WAS에서 구동 가능.
둘 중 원하는 방식을 사용하면 된다.
만약 별도로 Tomcat을 운용하는데, GeoServer 스탠드얼론 버전을 사용할 경우, 포트가 8080으로 서로 겹친다. GeoServer 스탠드얼론 버전의 기본 포트도 8080이기 때문. start.ini
의 jetty.port=8080
을 원하는 포트로 변경해주면 된다.
기본 설정 기준으로 https://example.com/geoserver로 접속하면 GeoServer에 접속할 수 있다.
위 페이지가 뜬다면 정상적으로 설치가 완료된 것.
GeoServer의 모든 설정은 웹에서 관리하므로, 여기에서 원하는 설정을 관리하면 된다.
기본 계정의 아이디/비밀번호는 admin/geoserver
다.
계정 관리 🔗
기본 계정을 그대로 사용할 경우, 보안 상의 위협을 받을 수 있다. 따라서 비밀번호를 변경하거나, 아예 새로운 계정을 만들어 관리하는 것이 안전하다.
사이드 메뉴의 [사용자, 그룹, 역할] 메뉴를 클릭한다. 상단의 탭에서 [사용자/그룹] 탭을 클릭하여 계정을 관리할 수 있다. admin
계정은 가장 기본적으로 제공하는 계정이므로, 노출도가 심하다. 비밀번호를 적절히 변경해주거나, 아니면 아예 다른 계정을 사용하는 것이 안전하다.
새로운 계정 생성하기 🔗
상단의 버튼 중 [새로운 사용자 추가] 버튼을 클릭한다.
원하는 계정명, 비밀번호를 입력한다. 맨 하단의 역할에서 [ADMIN]을 활성화하면, 기존의 admin
계정과 동일한 권한을 부여받는다.
admin 계정 비활성화 🔗
사용하지 않는 계정은 비활성화하는 것이 안전하다. 아까와 동일한 메뉴에서 admin
계정을 클릭하여 들어간다.
계정명 하단의 [비활성화] 체크박스를 활성화하고 저정하면 계정이 비활성화된다.
레이어 추가하기 🔗
GeoServer를 설치했으니, GeoServer에게 어떤 데이터를 서비스할 것인지 알려주는 과정이 필요하다. 이 과정을 "레이어를 추가한다"고 한다.
레이어는 아래의 분류를 가진다.
- 레이어: 데이터의 주체가 되는 소분류. DB의 테이블이 여기에 해당한다.
- 레이어 그룹: 다수의 레이어를 그룹화한 것. 한꺼번에 여러개의 레이어를 호출해야할 경우, 그룹화하여 호출 레이어를 간략화할 수 있다.
- 저장소: 데이터 저장소가 되는 중분류. DB, SHP가 여기에 해당한다. 다수의 레이어 및 그룹을 하위에 포함하고 있다.
- 작업공간: GeoServer에서 레이어를 관리하기 위한 대분류. 다수의 저장소를 하위에 포함하고 있다.
작업공간은 저장소를 포함하고, 저장소는 레이어 그룹 및 레이어를 포함한다. 즉, 레이어를 추가하기 위해선 먼저 작업공간을 만들고, 저장소를 추가한 뒤 레이어를 생성하는 순서로 진행된다.
1. 작업공간 추가하기 🔗
레이어의 가장 대분류가 되는 작업공간을 추가하자. 좌측 사이드 메뉴에서 [작업공간] 메뉴를 클릭하자.
[새로운 작업공간 추가하기]를 클릭하여 작업공간을 추가한다.
이름과 URI를 지정한다. URI는 추후 레이어 호출 시 같이 입력해야 하므로, 적절한 걸 입력해주자.
2. 저장소 생성하기 🔗
레이어를 담고있는 저장소를 생성하자. SHP 혹은 DB를 연결할 수 있다.
DB의 경우, 기본적으로 PostgreSQL을 지원하며, 별도의 플러그인을 통해 다른 DB와의 연결을 추가할 수도 있다. 이 장에서 사용할 MariaDB(MySQL)의 경우도 별도의 플러그인을 추가하여 진행하게 된다.
[새로운 저장소 생성하기]를 클릭하여 저장소를 생성한다.
원하는 연결 방법을 선택하자. 파일 시스템의 SHP를 지정할 수도, DB를 연결할 수도 있다.
플러그인 추가하기 🔗
GeoServer 다운로드 페이지에서 각 버전에 해당하는 플러그인을 다운로드 받을 수 있다.
링크의 사이트를 Stable 버전으로, 자신이 설치한 버전에 맞는 플러그인을 받는 것이 좋으므로 버전을 꼭 확인하자.
MariaDB(MySQL) 플러그인의 경우, 하단의 [Vector Formats - MySQL]을 클릭해서 다운로드 받을 수 있다.
이 밖에도 Oracle, MongoDB 등 타 DB의 플러그인도 있는 걸 확인할 수 있으니, 필요하다면 참고할 것. [Extensions - Extensions]를 클릭하여 제공하는 플러그인 일체를 확인할 수 있다.
받은 플러그인의 압축을 해제하면 jar
파일이 나오는데, 이 jar
라이브러리를 GeoServer의 라이브러리에 넣으면 된다. 아래의 경로 중 하나에 넣자.
Tomcat의 설치경로를 CATALINA_HOME
으로 표기한다.
- Tomcat 전역 라이브러리:
CATALINA_HOME/lib
- GeoServer 라이브러리
CATALINA_HOME/webapps/geoserver/WEB-INF/lib
이후 재기동을 해주면 반영된다. MySQL 플러그인을 설치하면, 이후 [저장소 생성하기] 메뉴의 저장소 목록에서 MySQL 관련 항목이 추가된 것을 확인할 수 있다.
SHP 추가하기 🔗
DB를 따로 구축하기 싫다면, 파일 기반의 SHP를 통해 레이어를 구성할 수도 있다.
[Directory of Spatial files]를 클릭한다.
- 할당할 저장공간을 선택한다.
- 데이터 저장소의 이름을 선택한다.
- SHP 경로를 지정한다.
- 데이터의 문자셋을 지정한다.
이후 저장을 누르면 SHP 기반의 저장소가 생성된다.
MariaDB(MySQL) 추가하기 🔗
GIS 데이터를 관리하는 DB가 있다면, GeoServer와 연동하여 레이어를 구성할 수 있다.
진행 전에 아래 두 사항을 진행했는지 확인하자.
- GIS 데이터가 DB에 이미 삽입되어 있어야한다.
- MySQL 플러그인이 설치되어 있어야한다.
[MySQL]을 클릭한다.
- 할당할 저장공간을 선택한다.
- 데이터 저장소의 이름을 선택한다.
- host를 입력한다. (IP 혹은 도메인)
- 포트를 입력한다.
- 데이터베이스의 이름을 입력한다.
- 계정명, 비밀번호를 입력한다.
이 정도가 필수 사항이고, 나머지 하단의 옵션은 Connection Pool에 대한 설정이므로 원한다면 별도로 수정해주면 된다.
이후 저장을 누르면 MySQL 기반의 저장소가 생성된다.
3. 레이어 추가하기 🔗
GIS 데이터의 기본이 되는 레이어를 추가하자. 기존에 유효한 저장소가 추가되어 있어야, 정상적으로 레이어를 추가할 수 있다.
[새로운 레이어 추가하기]를 클릭한다.
- 대상 저장소를 선택한다. 추가 가능한 레이어 목록이 표시된다.
- 원하는 레이어의 우측 [발행하기] 버튼을 클릭한다.
- 좌표계를 지정한다. 원하는 좌표계를 검색하여 선택할 수 있다.
- 레이어 영역을 지정한다. [데이터로부터 계산하기], [원본 영역으로부터 계산하기]를 각각 눌러주면 알아서 계산된다.
- 상단 탭의 [발행]을 클릭한다.
- [WMS 설정]의 [기본 스타일]을 지정한다.
- 해당 스타일은 WMS 요청 시 기본으로 지정되여 렌더링된다. (자세한건 추후 별도 문서에서 후술)
이후 저장을 누르면 레이어가 추가된다. 여기까지 진행해야 GeoServer에서 레이어를 호출할 수 있다.
레이어 호출 시 {저장공간 URI명}:{레이어명}
으로 레이어를 특정할 수 있다. 만약, 저장공간의 URI를 storage
라 지정하고, 레이어명은 polygon
으로 지정했다면, storage:polygon
이라는 형식으로 해당 레이어를 특정할 수 있는 것이다.
그 밖에도 지도 서비스와 관련해서 여러 설정을 할 수 있으니, 확인해보자.
📆 작성일
2022-03-06 Sun 16:12:33
📚 카테고리
🏷️ 태그