WMS 데이터 가져올때 CQL 필터 적용 방법에 대해서 문의 드립니다.

1,478 views
Skip to first unread message

호기심

unread,
Jan 6, 2014, 3:42:19 AM1/6/14
to osge...@googlegroups.com
 
우선, 다들 새해복 많이 받으시길 바라면서 글을 올립니다.
 
2014년, 모두들 십시일반해서 힘을 모아 운영되는 저희 OSGeo 구글 그룹에 다녀가시는 모든이들에게 복이 충만하실거라고 믿어 의심치 않습니다.
 
제가 아주 기초적인지 아닌지 모를 내용을 질문드립니다.
 
WMS데이터를 웹화면에서 불러올때요,
-----------------------------------------------------------------------------
  comgds_point = new OpenLayers.Layer.WMS(
   'WMS comgds_point',           
   'http://192.168.0.120:8090/geoserver/FRLPS/wms',
   {
    layers: 'FRLPS:COMGDS_POINT', 
    transparent: 'true',
    exceptions: 'BLANK'
   }, {
    isBaseLayer: false,
    singleTile: true,
    visibility: true
   }
  );
  map.addLayer(comgds_point);
-----------------------------------------------------------------------------
 
이런 구문으로 가져오는데요,
 
'comgds_point'라는 레이어 전체를 화면에 뿌려주고 싶은건 아니구요,
 
특정 A 라는 컬럼의 1 이라는 값에 해당하는 것만 가져오고 싶은데요,
 
CQL필터를 이용하는 건 알겠는데, WMS 레이어를 호출하는 과정에서 어떻게 적용하는지를 몰라서 헤메고 있습니다.
 
부디 선배님들의 지혜를 통해 신의 한 수 부탁드립니다. ㅠ.ㅜ
 
제가 이 알려주신 선배님께 은혜는 꼭 갚도록 하겠습니다!!
 
 
 
 

Hanjin Lee

unread,
Jan 6, 2014, 4:29:41 AM1/6/14
to osge...@googlegroups.com
안녕하세요. 망고시스템 이한진입니다.


실제로 WMS 1.1.1, 1.3.0 버전에서 CQL_FILTER는 정식 파라메터(인터페이스)가 아닙니다.
하지만 GeoServer를 사용하신다면 사용이 가능한데요.
아래와 같은 형식으로 넣으주시면 되겠네요~ 

 {
    layers: 'FRLPS:COMGDS_POINT', 
    transparent: 'true',
    exceptions: 'BLANK',
    CQL_FILTER: '컬럼명 = 1'
 }


감사합니다.











2014년 1월 6일 월요일 오후 5시 42분 19초 UTC+9, 호기심 님의 말:

호기심

unread,
Jan 6, 2014, 6:04:26 AM1/6/14
to osge...@googlegroups.com
 
오오오 이한진 과장님!!
 
과장님 말씀대로 적용했더니 되더라구요.ㅎㅎㅎ
 
CQL 필터를 적용하면 되는건 알았지만, 저렇게 하는지는 몰랐습니다.
 
 cql_filter: "WCSRN_CODE = '01'"  
 
위와 같은 형태로 넣었더니 되었습니다!!
 
혹시 저와같은 고민을 하시는 분들은 추후에 도움이 되시길 바라구요..ㅎㅎ
 
이한진 과장님을 위한 선물은 낼 아침에 카톡으로 뵙겠습니다.ㅋㅋ
 
복마니 받으십시오!!

민경일

unread,
Jan 6, 2014, 4:16:37 AM1/6/14
to osge...@googlegroups.com
안녕하세요. 새해복많이 받으세요~

일단 cql fillter는 wms 호출 url 에 ...&CQL_FIILTER=...... 이런식으로 요청 parameter를 추가해서 요청하는 방식입니다.

이를 Openlayer의 wms호출시 위 parameter를 추가하여 호출하기 위해서는 

comgds_point 레이어를 선언하신 뒤에 

comgds_point.mergeNewParams({"CQL_FILTER" : "A=1"}); 

이런 식으로 코드를 추가하시고 map에 addLayer하면 됩니다.

설명을 드리자면 openlayers의 wms layer 에서 제공하는 함수 중 mergeNewParams를 사용하여 호출되는 wms요청 url 뒤에 cql_filter부분을 추가하여 요청하게 됩니다.

다른방법도 있을 법 한데 전 이런식으로 사용했었습니다^^

도움이 되었으면 좋겠네요~




2014년 1월 6일 오후 5:42, 호기심 <nonn...@gmail.com>님의 말:

--
Google 그룹스 'OSGeo(Open Source GeoSpatial) 한국어 지부 - OSGeo Korean Chapter' 그룹에 가입했으므로 본 메일이 전송되었습니다.
이 그룹에서 탈퇴하고 더 이상 이메일을 받지 않으려면 osgeo-kr+u...@googlegroups.com에 이메일을 보내세요.
이 그룹에 게시하려면 osge...@googlegroups.com(으)로 이메일을 보내세요.
http://groups.google.com/group/osgeo-kr에서 그룹을 방문하세요.
더 많은 옵션을 보려면 https://groups.google.com/groups/opt_out을(를) 방문하세요.

호기심

unread,
Jan 7, 2014, 8:32:12 PM1/7/14
to osge...@googlegroups.com
오 민경일님! 감사합니다.
 
"mergeNewParams" 도 사용할 수 있다는건 검색해서 알아내긴 했었는데,
 
어떻게 적용해야하는지는 몰랐었거등요!! 정말 감사합니다.
 
경험이 우러나오는 이런 답변들은 정말 많은 도움이 되는것 같습니다!!
 
항상 관심가져주셔서 너무너무 감사합니다!!
 
복 마니 받으십시오!! ★★
Reply all
Reply to author
Forward
0 new messages