首页 文章

OpenLayers v3.4从GeoServer获取层边界框和CRS数据

提问于
浏览
0

我正在研究OpenLayers v3.4以及GeoServer . 我正在尝试从我已经上传到GeoServer的形状文件中收集正确的边界框/范围数据 .

我在这里从服务器收集图层 .

var vectorLayer = new ol.layer.Tile({
    source: new ol.source.TileWMS({
        preload: Infinity,
        url: 'http://localhost:8080/geoserver/Newcastle/wms',
        serverType: 'geoserver',
        params: {
            'LAYERS': "Newcastle:Newcastle_Coverage", 'TILED': true
        }
    })
});
map.addLayer(vectorLayer);

我原本以为我可以从图层调用范围 .

var extent = vectorLayer.extent;

但是,唉,这个程度总是“未定义”,这对我来说完全没用 . 然后,我尝试直接从XML服务器下载中使用WMSCapabilities函数收集数据 .

var featurePrefix = '***';
    var featureType = '***';
    var url = 'http://localhost:8080/geoserver/wms?request=GetCapabilities&service=WMS&version=1.1.1';
    var parser = new ol.format.WMSCapabilities();


    $.ajax(url).then(function (response) {
        //window.alert("word");
        var result = parser.read(response);
        console.log(result);
        window.alert(result);
        var Layers = result.Capability.Layer.Layer;
        var extent;
        for (var i = 0, len = Layers.length; i < len; i++) {

            var layerobj = Layers[i];
            window.alert(layerobj.Name);

            if (layerobj.Name == "Newcastle:Newcastle_Coverage")
            {
                extent = layerobj.BoundingBox[0].extent;
            }
        }
    });

这在某种程度上起作用,它确实返回数据的已定义CRS的边界框 . 在这种情况下,它的EPSG:28356(MGA56) . 我知道它的MGA56,因为我上传了它并告诉它它是什么 .

我需要的是获取我不知道的形状文件的CRS细节 . 我如何知道它的MGA55或MGA54等我无法找到获取这些特定信息的方法 .

1 回答

相关问题