基於ArcGISServer進行分頁矢量查詢的方案進階
文章版權由作者李曉暉和博客園共有,若轉載請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/
1. 背景
在空間查詢中,我們對查詢結果要求以分頁形式進行展示。Geoserver的WFS服務提供了maxFeatures 、startIndex以及sortBy這樣的參數,通過設置這些參數的值即可實現分頁。但是arcgisserver中目前沒有這類可以實現分頁查詢的參數,那麽該如何解決這個問題?這裏我給出三個不斷優化的解決思路。
2.方案1——獲取所有查詢結果前端分頁
該方案顧名思義,獲取到所有查詢結果後在前端進行數據組織和分頁。
優點:
缺點:
a.當查詢返回結果過大時,數據查詢和傳輸時間都會很長
b.沒有真正體現分頁的優勢,前端獲取了所有數據,卻數據展示率很低
c.arcgis一次查詢返回結果的限制(需在AGS中手動設置最大返回數)
d.對arcgis服務器也有不小的壓力
3.方案2——後臺對所有查詢結果進行緩存以支持前端分頁
後臺進行arcgis查詢,將查詢返回的結果全部緩存:包括數據總數以及數據詳細信息。前端根據返回的總數來進行分頁設置。進行分頁跳轉時,向後臺發送請求後臺根據緩存數據進行對應的分頁數據獲取和返回。
a.實現相對簡單
b.查詢返回給前端的數據量大大減少,減少數據傳輸耗時,加速查詢效率。
缺點:
a.後臺依然要獲取到所有查詢信息,ags的查詢耗時
b.查詢數據量太大,對ags服務器的壓力也不小
c.緩存數據需要定時清理,否則造成太多不必要的緩存數據
d.依然需要處理設置AGS單次查詢的最大返回數據量
4.方案3——基於ObjectID實現分頁查詢
a.先進行僅返回objectID字段的查詢,獲取到所有結果的總數和主鍵值,前端進行分頁。
b.點擊分頁操作時,通過每個頁面的objectID進行指定查詢,展示結果。
優點:
a.僅查詢ObjectID的方式不受ags默認返回數據量限制,而且返回結果數據量少,可以減少傳輸耗時。
b.ags對於僅查詢ObjectID時,可以通過空間索引表快速返回查詢結果(無需通過ObjectID再去關聯查詢屬性數據表),其效率要高於還需返回其他屬性信息的查詢。可以大大提高查詢效率。
-----歡迎轉載,但保留版權,請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/
如果您覺得本文確實幫助了您,可以微信掃一掃,進行小額的打賞和鼓勵,謝謝 ^_^
基於ArcGISServer進行分頁矢量查詢的方案進階