【问题标题】:WMS GetFeatureInfo request with buffer doesn't return any result (OpenLayers/MapServer)带有缓冲区的 WMS GetFeatureInfo 请求不返回任何结果(OpenLayers/MapServer)
【发布时间】:2020-04-18 18:56:38
【问题描述】:

我正在使用 OpenLayers 4 为 Mapserver 中的 WMS 图层构建一个带有缓冲区参数的 GetFeatureInfo url,以便在给定某些特定坐标的情况下找到该图层的最近要素。

问题是请求根本不会返回任何结果。所以我不知道我的代码是否有问题或者我遗漏了什么。

这是我的代码解释:

var layer = new ol.layer.Image({
    source: new ol.source.ImageWMS({
        url: 'http://www.juntadeandalucia.es/medioambiente/mapwms/REDIAM_PPHH_2012?',
        params: {'LAYERS': 'MSPF_POLY'},
        serverType: 'mapserver',
        crossOrigin: 'anonymous'
    })
});

// I create the layer only for requesting purpose so I don't add it to the map.

var coordinates = [311618.514508171, 4040090.26715453];

var srs = this.map_.getProjection().code; //"EPSG:25830"

const getFeatureInfoParams = {
        'INFO_FORMAT': 'text/plain', //or application/vnd.ogc.gml
        'FEATURE_COUNT': 1,
        'SRS': srs,
        'Buffer': 10;
};

var viewResolution = this.map_.getMapImpl().getView().getResolution(); 
// 353.3212194629518

var urlToRequest = layer.getSource().getGetFeatureInfoUrl(coordinates, viewResolution, srs, 
getFeatureInfoParams);

return urlToRequest;
// urlToRequest is ==> http://www.juntadeandalucia.es/medioambiente/mapwms/REDIAM_PPHH_2012?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetFeatureInfo&FORMAT=image%2Fpng&TRANSPARENT=true&QUERY_LAYERS=MSPF_POLY&LAYERS=MSPF_POLY&INFO_FORMAT=text%2Fplain&FEATURE_COUNT=1&SRS=EPSG%3A25830&Buffer=10&I=50&J=50&CRS=EPSG%3A25830&STYLES=&WIDTH=101&HEIGHT=101&BBOX=293775.7929252919%2C4022247.5455716513%2C329461.2360910501%2C4057932.988737409

//I have seen that it always return I=50/J=50 and perhap this could be the problem I 
//don't know. It is that correct? The pixel coordinates shouldn't be different in 
//different bounding boxes values per request?

【问题讨论】:

  • 如果您不将图层添加到地图中,BBOX 将无法正确设置。尝试使用opacity: 0.01 将图层添加到地图和/或将其添加为第一图层,使其隐藏在其他图层下方
  • @Mike 我尝试将图层添加到地图中。现在像素坐标并不总是 I=50/J=50 但请求也不返回任何结果。可能是因为 MapServer 不支持 BUFFER 参数?

标签: javascript gis openlayers wms mapserver


【解决方案1】:

buffer 不是WMS specification 的一部分,MapServer 不通过 WMS 支持。您可以阅读更多关于 MapServer 的 WMS 支持的信息:https://mapserver.org/ogc/wms_server.html 其他类型的地图服务器可能会提供缓冲区作为特定于供应商的附加参数。

在 MapServer 端,还有其他方法可以处理缓冲区操作,但在您的情况下,您似乎是在客户端。

抱歉,这方面的帮助太少了。

【讨论】:

    猜你喜欢
    • 2013-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-16
    • 2011-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多