Запрос WMS GetFeatureInfo с буфером не возвращает никакого результата (OpenLayers / MapServer)

Я использую OpenLayers 4 для создания URL-адреса GetFeatureInfo с параметром буфера для слоя WMS в Mapserver, чтобы найти ближайший объект слоя по некоторым конкретным координатам.

Проблема в том, что запрос вообще не возвращает никакого результата. Поэтому я не знаю, что-то не так в моем коде или я что-то упускаю.

Вот объяснение моего кода:

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?

person Fran1911989    schedule 18.04.2020    source источник
comment
Если вы не добавите слой на карту, BBOX не будет настроен правильно. Попробуйте добавить слой на карту с помощью opacity: 0.01 и / или добавить его в качестве первого слоя, чтобы он был скрыт под другими слоями.   -  person Mike    schedule 19.04.2020
comment
@Mike Я пытался добавить слой на карту. Теперь координаты пикселей не всегда I = 50 / J = 50, но запрос тоже не возвращает никакого результата. Может быть, это потому, что параметр BUFFER не поддерживается в MapServer?   -  person Fran1911989    schedule 20.04.2020


Ответы (1)


buffer не является частью спецификации WMS и не поддерживается MapServer через WMS. Вы можете узнать больше о поддержке WMS MapServer по адресу: https://mapserver.org/ogc/wms_server.html Другие типы картографических серверов могут предлагать буфер в качестве дополнительного параметра, зависящего от производителя.

На стороне MapServer есть другие способы обработки операции с буфером, но в вашем случае кажется, что вы находитесь на стороне клиента.

Извините за такую ​​небольшую помощь по этому поводу.

person mapserving    schedule 06.05.2020