2010年6月17日 星期四

MapGuide_變更設定檔_匯出XML檔

MapGuide自從2010版本開始,Studio就內附在MapGuide而不需要再分開購買,所以不管是圖層、地圖或是輸出的版面我們都會透過Studio來進行設定,但有時候我們必須要讓使用者自行去決定圖層或地圖上的設定,那就必須去動態改變這些設定的資料。

而在MapGuide當中,全部的設定皆可以匯出成XML檔案,或是用已經準備好的XML檔案進行匯入。講到這個應該可以了解這樣我們可以做出怎樣的變化,也就是說我們可以將會出的XML檔案進行變更,然後再將其匯回設定檔中,達到動態變更版面設定的效果。當然,這樣的變更是對於所有的使用者進行變更,若是要對單一的使用者客製化他的介面就必須再作一些變化。

所以,要達成這樣的流程,第一步就必須要匯出已有的設定檔案為XML檔,方法相當簡單,ola之前測試的時候已經將他寫成一個小小的Function,也是直接貼上套入就可以了。

直接看程式碼!

Sub OutputXmlFile(ByVal mgSessionId As String, ByVal LibraryString As String, ByVal OutputPath As String)

'1. 獲得使用者資訊
Dim userInfo As MgUserInformation = New MgUserInformation(mgSessionId)

'2. 連接站點
Dim siteConnection As MgSiteConnection = New MgSiteConnection
siteConnection.Open(userInfo)

'3. 建立資源服務
Dim resourceService As MgResourceService
resourceService = siteConnection.CreateService(MgServiceType.ResourceService)

'4. 列出資源內容
Dim DataresourceID As New MgResourceIdentifier(LibraryString)
Dim DatabyteRdr As MgByteReader
DatabyteRdr = resourceService.GetResourceContent(DataresourceID)

'5. 匯出檔案
Dim DataByteSink As New MgByteSink(DatabyteRdr)
DataByteSink.ToFile(OutputPath)

End Sub

整個程式的流程就是:連接到要匯出的服務→指定要匯出的Library→指定匯出地點。

函式必須要給三個參數,第一個參數當然就是mgSessionId,第二個則是要匯出設定檔的地點,也就是在Studio的資料夾位置(例:Library://Samples/point.LayerDefinition),最後一個就是輸出位置(伺服器的本機位置),如此就可以簡單的獲得這些設定的檔案。

或是你必須建立一個複雜的臨時層,這時候也可以利用這樣的方式,先將複雜的設定在Studio完成,再以匯出的方式取得這個XML設定檔,等到需要進行臨時層建立的時候,再以這個檔案進行修改、匯入。

沒有留言:

張貼留言