Cute Happy Ghost
본문 바로가기
QGIS·Geo

[geoserver] geoserver의 getcapabilities를 활용하여 bbox영역 설정하기, openlayers extent경계값설정 (parameter없을 때)

by JENN_tech7 2022. 6. 21.
728x90
SMALL

parameter가 상관이 없으면 아래와 같은 소스를 사용할 수 있다

WMSCapabilities parser를 사용하고

fetch를 이용해 geoserver에서 getcapabilities를 request한다

응답한다면 result값을 변환하고 그 안에 있는 해당 layerId의 EX_GeographicBoundingBox값을 가져온다

(bbox=경계영역의 모서리좌표.. 그런것임...)

이것을 proj의 transformextent함수를 사용하여 원하는 좌표로 변환해준다

나같은 경우는 3857로 변환해주었다

변환된 extent값을 map.getView().fit() 함수에 넣어주면 그 영역대로 설정이 된다

뭔가 자동줌을 하는건 안되고 extent를 구해서 fit해주는 방법이 최선인것 같다

function setExtentFromGeoserver(layerId, isUsrLayer) {
      var base_url = geoserver_url + "?layers=" + geoserver_uri + ":"+ layerId;
      var parser = new ol.format.WMSCapabilities();

      // Parse WMS Capabilities to retrieve layer extent
      fetch(base_url + '&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities').then(function(response) {
         return response.text();
      }).then(function(text) {
         var result = parser.read(text);
         var extent = result.Capability.Layer.Layer.find(l => l.Name === layerId).EX_GeographicBoundingBox;
         var extent_3857 = ol.proj.transformExtent(extent, 'EPSG:4326', 'EPSG:3857');
          
            map.getView().fit(extent_3857);
      });
}

 

 

하지만 나는 지도의 영역이 고정되어있지않고 parameter가 필요한 상황이었기 때문에 

추후 parameter를 가져와서 extent를 구할 수 있는 소스로 변경하게된다...

그글은 다음글에...

728x90
LIST

댓글