GIS

[GIS] Geoserver : 조건식을 통한 레이어를 가져오는 CQL필터에 대해 알아보자

모찌바라기 2022. 12. 12. 12:37
728x90
반응형

 

 

 

지오서버에서는 CQL필터를 통해 조건식으로 원하는 피쳐들만 가져 올 수 있다. 

오늘은 CQL필터에 대해 한번 정리해보려 한다.

 

 

CQL필터를 이용한 피쳐(Feature) 추출

 

 

1. 레이어 미리보기를 통해 OpenLayers로 레이어창을 열어준다.

 

2. CQL필터의 조건식을 입력하고 적용해준다.

 

여기서 좌측상단의 ... 버튼을 누르면 위와 같이 조건 검색창이 뜬다.

여기서 Filter를 CQL로 맞추고, 보통의 쿼리문을 작성하듯이 조건식을 입력하여 준다.

나는 ctp_kor_nm컬럼이 '전라북도'인 녀석으로 조건을 주었다. 결과는 아래와 같이 된다.

 

 

결과화면

 

여기까지 왔으면 URL로도 CQL필터를 주어 원하는 피쳐만 가져올 수도 있다는 것을 알 것이다.

아래를 통해 실제 URL에서 CQL필터를 적용해보자.

 

 

 

URL에서 CQL필터을 이용하여 원하는 피쳐(Feature)만 가져오는 방법

 

 

URL에서 CQL필터를 사용하려면 CQL_FILTER 속성을 주면 된다.

 

 

기본문법

기본 사용법
CQL_FILTER='조건문'

샘플
CQL_FILTER=ctp_kor_nm='충청북도'

CQL_FILTER= ctp_kor_nm like '%충청북도%'

 

이런식으로 URL 요청시 붙여주면 된다. 샘플 URL은 아래와 같다.

 

 

샘플URL

http://아이피:포트/geoserver/test/wms?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&STYLES&LAYERS=test%3Actprvn&exceptions=application%2Fvnd.ogc.se_inimage&CQL_FILTER=ctp_kor_nm%3D%27%EC%B6%A9%EC%B2%AD%EB%B6%81%EB%8F%84%27&SRS=EPSG%3A5179&WIDTH=768&HEIGHT=729&BBOX=569412.2271878526%2C1333537.6480687275%2C1507347.509818522%2C2223829.619085721

 

 

단, 프론트단에서 요청할 때, encodeURIComponent 함수를 이용하여 인코딩을 해주도록 하자.

 


var cql_filter = 'CQL_FILTER = ' + encodeURIComponent("ctp_kor_nm like '%충청북도%'");

 

이런식으로 인코딩해준 뒤, params에 담아서 요청해주면 된다. 끝

 

 

 

728x90
반응형