ol3中妙用Arcgis Server Rest Export接口模擬WMS,並實現屬性過濾

概述

在本文,講述如何妙用Arcgis Server的REST Export接口實現WMS服務的調用和圖層的屬性過濾。

參考

1、巧用Arcgis Server的REST接口實現OL2中WMS添加過濾

2、OGC——WMS詳細介紹(arcgis server舉例)

參考文章2中,提到了Arcgis Server提供WMS的參數,如下圖:

從上圖我們可以看出,Arcgis Server提供WMS的參數裏面沒有標準的OGC服務裏面的CQL_FILTER,這對我們在進行圖層展示時需要一些根據屬性的過濾很不方便,所以就想到了rest接口。

實現

通過rest export實現該功能,需要: 1、理解export接口的參數 這個在參考文章1裏面有詳細的說明,此處不再贅述,例如下面就是一個完整的請求地址。 eg. http://192.168.1.20:6080/arcgis/rest/services/test/MapServer/export?bbox=48.232992147239216%2C27.40690405991184%2C142.6612600808303%2C61.296621841232096&bboxSR=4326&layers=show%3A0&layerDefs={"0"%3A+"name+in+('內蒙古自治區')"}&size=&imageSR=&format=png&transparent=false&dpi=&time=&layerTimeOptions=&dynamicLayers=&gdbVersion=&mapScale=&f=image

2、Openlayers3+裏面如何實現 查看API接口文檔如下圖:

如上圖,裏面提供了imageLoadFunction,可以很方便的來自定義url,關鍵實現代碼如下:

var url =
    "http://192.168.1.20:6080/arcgis/rest/services/test/MapServer/export?f=image&format=png&transparent=true";
var tiled = new ol.layer.Image({
    source: new ol.source.ImageWMS({
        ratio: 1,
        url: url,
        imageLoadFunction: function (image, src) {
            var _src = url;
            var size = map.getSize(),
                bbox = image.extent;
            var params = {
                layers: "show:0",
                layerDefs: '{"0": "name in (\'內蒙古自治區\')"}',
                // layerDefs: '',
                bboxSR: '4326',
                size: size.join(","),
                bbox: bbox.join(",")
            };
            for (var _p in params) {
                _src += "&" + _p + "=" + params[_p]
            }
            image.getImage().src = _src;
        }
    })
});

說明: 1、如果需要添加過濾條件,則在layerDefs中添加,詳細規則信息查看rest接口說明;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章