PIE SDK加載WMS服務數據

1.   功能簡介

  WMS服務,WMS是OGC標準中比較簡單也是比較重要的標準之一。它全稱是「Web Map Service」(網絡地圖服務);利用具備地理空間位置信息的數據製做地圖。其中將地圖定義爲地理數據可視的表現。這個規範定義了三個操做:GetCapabilities返回服務級元數據,它是對服務信息內容和要求參數的一種描述; GetMap返回一個地圖影像,其地理空間參考和大小參數是明肯定義了的;GetFeatureInfo(可選)返回顯示在地圖上的某些特殊要素的信息;web

  可能你們會混淆和WMTS服務的區別; WMTS提供了一種採用預約義圖塊方法發佈數字地圖服務的標準化解決方案。WMTS彌補了WMS不能提供分塊地圖的不足。WMS針對提供可定製地圖的服務,是一個動態數據或用戶定製地圖(需結合SLD標準)的理想解決辦法。WMTS犧牲了提供定製地圖的靈活性,代之以經過提供靜態數據(基礎地圖)來加強伸縮性,這些靜態數據的範圍框和比例尺被限定在各個圖塊內。這些固定的圖塊集使得對WMTS服務的實現可使用一個僅簡單返回已有文件的Web服務器便可,同時使得能夠利用一些標準的諸如分佈式緩存的網絡機制實現伸縮性。緩存

  WMTS相比WMS,犧牲掉靈活性來換取性能,返回的都是基礎地圖,全部靜態數據的範圍框和比例尺通通被限定在各個圖塊(瓦片)中。而後這些圖塊集使得對WMTS的實現只須要一個僅僅返回簡單已有文件的web服務器便可。WFS與二者都不一樣,返回的是矢量數據,用於增刪改操做。服務器

  咱們今天來說一下用PIESDK如何加載一份WMS服務數據網絡

2.    功能實現說明

2.1 . 實現思路及原理說明

第一步分佈式

設置WMS服務路徑URLide

第二步性能

根據URL獲得WMS圖層WMSLayerurl

第三步spa

獲得服務包含的圖層的並選擇須要要顯示的圖層的名稱layerNamecode

第四步

利用IWMSLayer接口的SerLayer方法將圖層位layerName添加到地圖控件中並設置顯示範圍

2.2 .  核心接口與方法

接口/類

方法

說明

PIE.Carto.IWMSLayer

GetWMSCapabilities

獲得圖層的信息(獲取服務元數據信息)

SetLayers

設置圖層的集合

2.3 . 示例代碼

視頻路徑

百度雲盤地址下/PIE視頻教程/03.數據加載/15.打開WMS服務數據.avi

示例代碼

 1     /// <summary>
 2     /// WMS服務加載
 3     /// </summary>
 4     public override void OnClick()
 5     {
 6         string url = "http://172.16.10.114:8080/geoserver/World/wms";
 7         IWMSLayer wmsLayer = new WMSLayer(url);
 8         if (wmsLayer == null) return;
 9            
10         IList<WMSCapabilities> list = wmsLayer.GetWMSCapabilities();
11         List<string> layerList = new List<string>();
12         //獲得服務的圖層列表
13         foreach (WMSCapabilities item in list)
14         {
15             layerList.Add(item.Layer);
16         }
17         string layerName = "";
18         for (int i = 0; i < layerList.Count; i++)
19         {
20             layerName = layerList[i];
21             if (string.IsNullOrEmpty(layerName)) continue;
22             break;
23         }
24             
25         wmsLayer.SetLayers(layerName);//加載服務的第一個圖層
26         ILayer layer = wmsLayer as ILayer;
27         layer.Name = "WMS服務";
28         m_HookHelper.ActiveView.FocusMap.AddLayer(layer);
29         m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
30     }

2.4 . 示例截圖

相關文章
相關標籤/搜索