Пример на OL3 (http://openlayers.org/en/latest/example ... -tile.html) конечно же видел, его и пытаюсь использовать.
Итак, что делаю:
В PostGIS при помощи ogr2ogr поместил .shp, поменял проекцию на EPSG:3576 в отдельную колонку webmercator. При подключении PostGIS в QGIS всё работает и данные отображаются
Спойлер
Далее в .map файле в WEB прописываю такие METADATA:
Код: Выделить всё
METADATA
wms_title "GIS-LAB Demo"
wms_abstract "This is the WMS demo from GIS-Lab"
wms_onlineresource "http://localhost/cgi-bin/mapserv.exe?map=/ms4w/apps/example/polt.map&"
wms_srs "EPSG:3576"
wms_getfeatureinfo "http://localhost/cgi-bin/mapserv.exe?map=/ms4w/apps/example/polt.map&"
wms_featureinfoformat "text/html"
wms_encoding "utf-8"
ows_enable_request "*"
wms_feature_info_mime_type "text/html"
END
Слой в QGIS отображается, как там получить ответ на GetFeatureInfo - не знаю, поэтому проверить атрибутивные данные на настольном ГИС не могу.
В OpenLayers3 вставляю код из примера, заменив EPSG на 3576 и document.getElementById('info') - тут я так понял нужно вставить первичный ключ из PostGIS (у меня это ogc_fid):
Спойлер
Код: Выделить всё
map.on('singleclick', function(evt) {
document.getElementById('ogc_fid').innerHTML = '';
var viewResolution = /** @type {number} */ (view.getResolution());
var url = wmsSource.getGetFeatureInfoUrl(
evt.coordinate, viewResolution, 'EPSG:3576',
{'INFO_FORMAT': 'text/html'});
if (url) {
document.getElementById('ogc_fid').innerHTML =
'<iframe seamless src="' + url + '"></iframe>';
}
});
map.on('pointermove', function(evt) {
if (evt.dragging) {
return;
}
var pixel = map.getEventPixel(evt.originalEvent);
var hit = map.forEachLayerAtPixel(pixel, function() {
return true;
});
map.getTargetElement().style.cursor = hit ? 'pointer' : '';
});
Запрос (не уверен, что правильно составил его)
Спойлер
Код: Выделить всё
http://localhost/cgi-bin/mapserv.exe?map=/ms4w/apps/example/polt.map&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetFeatureInfo&FORMAT=image/png&TRANSPARENT=true&QUERY_LAYERS=veget&LAYERS=veget&INFO_FORMAT=text/plain&I=36&J=69&WIDTH=256&HEIGHT=256&CRS=EPSG:3576&STYLES=&BBOX=-11.7050,1468.9700,363.7713,1968.2715
GetFeatureInfo results:
Search returned no results.
Вопрос: как вывести атрибутивные данные данного отрезка при щелчке по слою?
P.S. Маленькое спасибо этому форуму