1. 程式人生 > >基於ArcGISServer進行分頁矢量查詢的方案進階

基於ArcGISServer進行分頁矢量查詢的方案進階

eat 全部 數據傳輸 family 要求 ron 形式 objectid 返回結果

文章版權由作者李曉暉和博客園共有,若轉載請於明顯處標明出處: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進行分頁矢量查詢的方案進階