2010-10-06 106 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.."); 
     });