我正在运行一个带有1个光栅文件(GeoTIFF)作为图层的地理服务器(2.5.x)。从我的应用程序中,我可以在点击(通过WMS)时访问单个像素值,但我真正感兴趣的是获得一系列像素,然后对其进行一些处理。我想这样做的方法是创建一个MOD_CTRL作为触发器的控件,然后当拖动结束时,将所选范围传递给geoserver,以便我可以返回像素值列表。
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);
}
我面临的问题是,我似乎找不到通过"范围的方法" (leftBottom,rightTop)到geoserver - 只有一个像素。 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 :(得分:0)
WMS无法获得矩形像素范围,您需要使用WCS,或最终使用自定义WPS流程。