WebGIS中基於控制點庫進行SHP數據座標轉換的一種查詢優化策略

文章版權由做者李曉暉和博客園共有,若轉載請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/測試

1.前言

目前項目中基於控制點庫進行SHP數據的座標轉換,流程大體爲:遍歷圖層要素,獲取每一個要素的座標串,查詢控制點庫,分別進行座標轉換,構建新的要素,最後構建新的圖層。此方法效率以下:優化

a.控制點庫有100W個控制點對。設計

b.待轉換SHP數據有5K個面要素。blog

轉換完畢大概須要120分鐘。索引

此效率是相對較低的,若是想對更多包含大量要素的圖層組數據進行批量轉換,耗時會成倍增加。這裏,咱們進行了一些列優化探索。事務

2.思路分析

以上方法,耗時最多的是大表查詢,即在控制點庫中查詢對應參考座標。get

對大表查詢有不少種優化策略,好比將大表改爲多個小表,根據業務創建相關索引等等。這裏咱們一塊兒探討另一種方法,流程圖以下:博客

                       

該思路的核心爲:遍歷得到單個feature後,便根據該feature的extent創建包含局部信息的視圖,減小沒必要要的全表查詢。it

最後結果測試爲:table

a.控制點庫有100W個控制點對。

b.待轉換SHP數據有5K個面要素。

轉換完畢大概須要5分鐘。

3.進一步優化

以上方法是利用視圖來進行查詢優化,可是每一個視圖創建完後還須要控制代碼銷燬。這個過程會影響效率。

3.1事務臨時表

臨時表分爲了會話臨時表和事務臨時表。

會話臨時表是指:該臨時表確定與會話有關。會話在不退出時,則些臨時表中的數據存在,會話退出,該臨時表中的數據也會隨之消失。而且,在多用戶操做的狀況下,一個會話歷來不阻塞另外一個會話使用臨時表。即便鎖定臨時表,一個會話也不會阻塞其餘會話使用臨時表。

事務臨時表是指:該臨時表與事務相關,當進行事務提交或者事務回滾的時候,臨時表中的數據將自行被截斷。

根據業務需求,這裏選用事務臨時表,主要利用其事務結束後會自動將數據作TRUNCATE的功能。

事務臨時表的構建規則以下:

Create global temporary table table_name
(col1 type1, col2 type2 …)
On commit delete rows;

3.2測試結果

使用事務臨時表進行改造後,測試結果以下:

a.控制點庫有100W個控制點對。

b.待轉換SHP數據有5K個面要素。

轉換完畢大概須要2.5分鐘。

4.總結

這裏的核心思想仍是進行大表改小表,不過將小表設計爲臨時表,此種方法在過濾查詢數據時效果十分明顯。

 

                                                                        -----歡迎轉載,但保留版權,請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/

相關文章
相關標籤/搜索