공간정보/Geoserver

Geoserver SQL View 관련 팁

요긴소프트 2022. 1. 6. 15:33
728x90
반응형

Geoserver는 파라미터 기반으로 동적 뷰 레이어를 만들 수 있는 SQL View 기능을 제공하고 있습니다.

select gid, state_name, persons, geom 
 from pgstates
 where persons between %low% and %high%

위와 같은 SQL View를 만들면 %low% 와 %high% 부분을 WMS, WFS 요청 시 동적으로 지정해서 결과를 받아볼 수 있습니다.

이렇게 정의한 SQL View에 해당 파라미터를 전달하는 방법은 WMS 또는 WFS 요청 파라미터에 viewparams을 추가하는 겁니다. 예를 들면, Lefleat에서 다음과 같이 사용할 수 있습니다.

var layer = L.tileLayer.wms(geoserverWMSUrl, {
  "version": "1.3.0",
  "layers": "pgstates_view",
  "styles": "",
  "format": "image/png",
  "transparent": true,
  "viewparams": "low:0;high:100000",
  "opacity": 1.0
});

이런 식으로 viewparams 라는 파라미터를 전달하며 됩니다.

 

그런데 이 SQL View 사용법이 약간 까다로운 부분이 있습니다.

만약 SQL문 중에 in 을 이용하여 리스트값을 조건 검색할 경우, viewparam콤마(,)에 대해 escape 문자를 써 줘야 합니다.

예를 들어, SQL 조건 중에 where gid in (1,2,3) 이 있고 변수명을 %gidlist% 라고 지정해 줬다면, viewparams는 다음과 같습니다.

 

var condition = 'gidlist:1\\,2\\,3';
...
"viewparams": condition,
...

콤마 대신에 \\, 로 escape 해줘야 합니다.

 

728x90
반응형