2010-10-06 62 views
9

是否有可能获取由地理位置服务器提供的所有图层列表?即是否有一些特定的网址请求发送这样做?如何从地理位置服务器获取图层列表

+0

这里是一个WMS解析器/美化(我是新来的这一点,它帮助)https://geoportal.bayern.de/getcapabilities/;jsessionid=451FDFA90393C2C3F073949CF7715707?wicket-crypt=g-lD2bjSH6E – 2017-03-31 09:04:37

回答

8

的GeoServer的主页每个列表层通过各种服务,服务于功能链接:

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

样本WMS请求是这样的层:

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

+1

我怎样才能获得只有一层的能力?我可以通过传递layername来获得图层的能力吗? – 2014-09-29 07:26:58

+0

不可以。您可以做的唯一事情是使用工作空间将图层拆分为多个组,然后在工作空间级别执行ge​​tcapability,请查看http://docs.geoserver.org/latest/en/user/services/virtual -services.html。 作为一种替代方案,您可以调用GeoServer的REST管理界面,但您需要成为管理员。 – simogeo 2014-10-25 09:32:09

3

所以只是为了完整,这里有一个如何得到图层列表/阵列的例子:

 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.."); 
     });