如何从地理服务器获取图层列表

Posted

技术标签:

【中文标题】如何从地理服务器获取图层列表【英文标题】:How to get list of layers from geoserver 【发布时间】:2010-10-06 13:06:44 【问题描述】:

是否可以获得geoserver服务的所有图层的列表? IE。是否有一些特定的 url 请求可以发送?

【问题讨论】:

这里是一个 WMS 解析器/美化器(我是新手,它有帮助)geoportal.bayern.de/getcapabilities/… 【参考方案1】:

geoserver 主页上的功能链接,每个列表层通过各种服务提供服务:

WMS 功能列出了支持平铺图像请求的图层 WFS 功能列出了支持矢量数据请求的层 WCS 功能列出了支持栅格查询的图层

WMS 请求示例如下所示:

http://demo.opengeo.org/geoserver/wms?request=GetCapabilities&service=WMS&version=1.0.0

【讨论】:

我怎样才能获得只有一层的能力?我可以通过层名获得层的能力吗? 没有。您唯一能做的就是使用工作区将图层拆分为多个组,然后在工作区级别执行 getcapability,请查看此链接 docs.geoserver.org/latest/en/user/services/…。作为替代方案,您可以调用 GeoServer 的 REST 管理界面,但您需要成为管理员。【参考方案2】:

所以为了完整起见,下面是一个如何获取层列表/数组的示例:

        var formatter = new OpenLayers.Format.WMSCapabilities();
        var endpoint = "path/to/wms/endpoint";
        var layers = [];

        // async call to geoserver (I'm using angular)
        $http.get(endpoint + 'request=GetCapabilities').

        success(function(data, status, headers, config) 

            // use the tool to parse the data
            var response = (formatter.read(data));

            // this object contains all the GetCapabilities data
            var capability = response.capability;

            // I want a list of names to use in my queries
            for(var i = 0; i < capability.layers.length; i ++)
                layers.push(capability.layers[i].name);
            
        ).

        error(function(data, status, headers, config) 
            alert("terrible error logging..");
        );

【讨论】:

以上是关于如何从地理服务器获取图层列表的主要内容,如果未能解决你的问题,请参考以下文章

从地理服务器导出图层配置

从地理服务器将 wmts 图层添加到 mapbox gl

如何将地理服务器图层添加到 openlayers?

地理服务器和 WMS

地理服务器:单个 url 中的多层 gwc

地理编码服务器 Apple API 从何处获取其信息