所以,如何取得MgFeatureReader跟MgGeometry是很基本也很重要的函式,通常這樣常用的函式會把他寫到Class裡面以供各功能叫用,開發其他專案也可以互相套用。
如何抓取MgFeatureReader是本篇的重點,直接來看專案裡面的程式碼。
Function GetRecData(ByVal mgSessionId As String, ByVal mgMapName As String, ByVal LayerName As String, ByVal QueryString As String) As MgFeatureReader
'功能:以條件輸入獲得MgFeatureReader
'輸入:mgSessionId、mgMapName、LayerName、QueryString(查詢條件)
'輸出:MgFeatureReader
'1. 獲得使用者資訊
Dim userInfo As MgUserInformation = New MgUserInformation(mgSessionId)
'2. 連接站點
Dim siteConnection As MgSiteConnection = New MgSiteConnection
siteConnection.Open(userInfo)
'3. 獲得MgMap,打開地圖
Dim Map As MgMap
Map = New MgMap(siteConnection)
Map.Open(mgMapName)
'4. 建立查詢選項MgFeatureQueryOptions
Dim QueryOptions As MgFeatureQueryOptions = New MgFeatureQueryOptions()
Dim QureyLayer As String = LayerName
QueryOptions.SetFilter(QueryString)
'5. 獲取MgFeatureReader
Dim layer As MgLayer = Map.GetLayers().GetItem(QureyLayer)
Dim featureReader As MgFeatureReader = layer.SelectFeatures(QueryOptions)
GetRecData = featureReader
featureReader.Close()
End Function
這個函式必須傳入四個參數,分別是MapGuide啟動的SessionId,所使用的地圖名稱,要抓取的圖層名稱與篩選的條件式,共分為五個步驟,最後會傳回一個MgFeatureReader,其他的程式就可以用ReadNext的方式抓取到裡面的屬性資料。
1 則留言:
您好,我用了您的方法後出現了
Invalid stream header exception. 的錯誤訊息
錯誤的地方是在
Dim featureReader As MgFeatureReader = layer.SelectFeatures(QueryOptions)
請問您知道是什麼原因嗎??
張貼留言