Openlayers ImageWMS构造函数无法读取BBOX参数

时间:2019-07-30 18:36:02

标签: gis geoserver wms openlayers-5

我试图在OpenLayers5中使用DrawExtent交互来定义对Geoserver的WMS / WCS请求的BBOX参数。使用此技术,我可以使用自定义WMS URL检索所需的图像子集,但是当我在ImageWMS的params属性中设置BBOX时,响应默认为整个图像。

我尝试使用“自定义”网址:

    'http://localhost:8080/geoserver/wms'+
    '?request=GetMap'+
    '&service=WMS'+
    '&version=1.3.0'+
    '&layers='+name+
    '&styles=""'+
    '&crs=EPSG:3857'+
  ->'&bbox='+bounds+
    '&width=665'+
    '&height=551'+
    '&format=image/geotiff';

请求相同的子集起作用,但是我似乎无法让OpenLayers将GeoTIFF响应识别为一层(使用ol.source.Image()和ol.layer.Image())。因此,我默认返回到ol.source.ImageWMS(),它提供了param属性,可以将BBOX设置为坐标字符串。问题是这些内容被覆盖(?),并且使用定义为图像范围的BBOX发送请求。

草稿箱扩展交互

var extent = new ol.interaction.Extent({
    condition: ol.events.conditions
});
map.addInteraction(extent);
extent.setActive(false);
window.addEventListener('keydown', function(event) {
    if (event.keyCode == 16) {
    extent.setActive(true);
    }
});
window.addEventListener('keyup', function(event) {
    if (event.keyCode == 16) {
        extent.setActive(false);
    var bbox = extent.getExtent();
    bbox[0]=Math.round(bbox[0]);
    bbox[1]=Math.round(bbox[1]);
    bbox[2]=Math.round(bbox[2]);
    bbox[3]=Math.round(bbox[3]);
    var bboxString = bbox.toString();
    getWMS('nurc:Img_Sample',bboxString);
    };
});

WMS获取地图

function getWMS(name,bounds) {
var wmsSource = new ol.source.ImageWMS({
        url: 'http://localhost:8080/geoserver/wms',
        params: {LAYERS:name, BBOX:bounds, CRS:'EPSG:3857'},
        serverType: 'geoserver'
        crossOrigin: 'anonymous'
    });
var wmsLayer = new ol.layer.Image({
        source: wmsSource
    });
map.addLayer(wmsLayer);
};

WMS请求应将BBOX属性设置为扩展交互所传递的边界,但是实际的url被nurc:img_Sample的边界覆盖

0 个答案:

没有答案