2014-10-15 5 views
1

저는 하나의 래스터 파일 (GeoTIFF)이있는 Geoserver (2.5.x)를 레이어로 실행 중입니다. 내 응용 프로그램에서 (WMS를 통해) 클릭 할 때 단일 픽셀 값에 액세스 할 수 있지만 실제로 관심이있는 것은 픽셀 범위를 얻은 다음 그 중 일부 처리를 수행하는 것입니다. 내가 그것을 생각하고 있었던 방법은 MOD_CTRL을 트리거로 사용하여 컨트롤을 만든 다음 드래그가 끝나면 선택한 범위를 지오 서버에 전달하여 픽셀 값 목록을 다시 가져올 수있게하는 것이 었습니다. 단 하나의 픽셀 -geoserver 및 openlayers는 직사각형 픽셀 값을 선택합니다.

OpenLayers.Util.extend(control, { 
     draw: function() { 
      this.drag = new OpenLayers.Handler.Box(control, 
       {"done": this.notice}, 
       {keyMask: OpenLayers.Handler.MOD_CTRL}); 
      this.drag.activate(); 
     }, 

     notice: function (bounds) { 
     leftBottom = map.getLonLatFromPixel(new OpenLayers.Pixel(bounds.left, bounds.bottom)); 
     rightTop = map.getLonLatFromPixel(new OpenLayers.Pixel(bounds.right, bounds.top)); 
     console.log(leftBottom, rightTop); 
     return(true); 
     } 

내가 직면하고있어 문제는 내가 "범위"를 통과 할 수있는 방법을 찾을 수가 없어 수있는 geoserver에 (leftBottom, rightTop)입니다. leftBottom 및 rightTop은 정상적으로 작동하지만 픽셀 값 목록을 다시 얻으려면 어떻게해야합니까?

function makeCall(bounds) { 

    var url = sec.getFullRequestString({ 
              REQUEST: "GetFeature", 
              SERVICE: "WFS", //should this be WPS? 
              EXCEPTIONS: "application/vnd.ogc.se_xml", 
              typeNames: 'mystore:mylayer', 
              BBOX: bounds.toBBOX(), 
              INFO_FORMAT: 'text/plain', 
              QUERY_LAYERS: layerlist, 
              FEATURE_COUNT: 50, 
              WIDTH: map.size.w, 
              HEIGHT: map.size.h, 
              format: 'image/png', 
             }, 
             "http://localhost:8080/geoserver/wfs"); 

    var request = OpenLayers.Request.GET({ 
     url: url, 
     callback: extractFeatures 
    }); 
    } 

어떤 도움이 정말 감사하겠습니다 ...

이 기능은 전화를 걸 것으로 보인다하지만 서비스 또는 매개 변수를 사용하는 확실하지 않다.

답변

0

WMS에는 사각형 픽셀 범위를 가져올 수있는 방법이 없으므로 WCS 또는 결국 사용자 지정 WPS 프로세스를 사용해야합니다.