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

Posted

技术标签:

【中文标题】OpenLayers v3.4 从 GeoServer 获取图层边界框和 CRS 数据【英文标题】:OpenLayers v3.4 getting layer bounding box and CRS data from GeoServer 【发布时间】:2015-04-12 23:39:08 【问题描述】:

我正在研究 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】:

我认为使用 EX_GeographicBoundingBox 更容易,你知道它总是在 EPSG:4326 中

例如,请参阅:https://github.com/MapStory/story-tools/blob/master/examples/common.js#L368:L379

【讨论】:

感谢您的回复。当我调用 EX_GeographicBoundingBox 时,它返回“未定义”。你知道为什么它可能是未定义的,服务器端可能有什么问题吗? 您可以尝试将 WMS 版本 1.3.0 用于 GetCapabilities 吗?

以上是关于OpenLayers v3.4 从 GeoServer 获取图层边界框和 CRS 数据的主要内容,如果未能解决你的问题,请参考以下文章

openlayers以前的版本怎么从官网查看

如何从业力测试触发 openLayers 3 'singleClick'

openlayers 从 wms 获取属性

如何从 openlayers 读取外部 GeoJSON 文件?

Openlayers 无法从 RestfulAPI(节点)显示 GeoJSON Vectorlayer

如何从PostGIS坐标中心openlayers地图?