1. 程式人生 > >ArcGIS for Android載入WMS(1)——WMS基本介紹

ArcGIS for Android載入WMS(1)——WMS基本介紹

今天開始寫ArcGIS for Android載入WMS系列的一些記錄,主要包括WMS的基本介紹,ArcGIS for Android載入WMS,用MapGuide和GeoServer釋出WMS並在ArcGIS for Android中載入以及其中存在的一些問題等。因為前兩天在做用ArcGIS for Android載入WMS服務的時候,發現不論是國內還是國外,相關的資料都非常非常少。經過了大概半個多月的時間,才完全把ArcGIS for Android載入WMS服務以及用Mapguide釋出WMS服務基本搞清楚,在此記錄一下,希望能幫助到需要的同學。

首先簡單介紹WMS服務,簡單來說,我的理解,WMS就是將地圖服務釋出成地圖服務,然後客戶端向地圖伺服器請求的時候,能根據使用者的請求資訊,返回對應的地圖資訊(比如對應的地圖圖片),然後客戶端就能根據伺服器的返回的結果,在客戶端對需要的地圖進行顯示。使用WMS服務有很多的優點:首先是地圖資訊資料和客戶端分離,這樣當地圖資料變化時(比如新增了一些點,增加一條線),不需要更新客戶端,只需要在伺服器端更新資料即可。其次能減少手機的儲存壓力,搞過地圖切片的同學應該知道,一般一個切片包動輒幾個G,現在手機的儲存空間已經很大了,這個問題緩解了很多,要是像以前16GB記憶體那個時代,估計放兩三個地圖切片包使用者就受不了了。而且在安裝App後,將切片包下載到手機端這個過程,使用者也受不了。

WMS服務,根據OGC的標準,可以提供以下操作:

GetCapabitities:返回服務級元資料,它是對服務資訊內容和要求引數的一種描述。
GetMap:返回一個地圖影像,其地理空間參考和大小引數是明確定義了的。
GetFeatureInfo:返回顯示在地圖上的某些特殊要素的資訊。
GetLegendGraphic:返回地圖的圖例資訊。

其中,在ArcGIS for Android中,主要會涉及到GetCapabititiesGetMap兩種操作。其中,向地圖伺服器請求GetCapabitities,會獲得一個XML檔案,裡面包含該WMS服務中包含的圖層的名字,圖層的座標系等資料。向伺服器請求GetMap

,則會根據請求的引數獲得一張圖片,請求的引數中包含圖片的高度,寬度,座標系等資訊。需要注意的是,ArcGIS for Android載入WMS服務時,要使用WMSLayer這個類,官方例子在這裡,官方的關於該類的介紹在這裡。請求方式只能是GetCapabitities,通過GetCapabitities獲取到XML檔案後,ArcGIS for Android內部會自己解析,然後通過當前地圖的位置,自動構造請求引數,然後通過GetMap向伺服器請求,伺服器根據請求引數返回圖片,ArcGIS for Android會將圖片展示在MapView上。

好了,先寫到這裡,下一節介紹怎麼在GeoServer和MapGuide中獲取WMS的URL。