oracle+st_geometry


最近因為性能的原因開始關注通過oracle和st_geometry直接操作數據庫來解決實際業務問題。主要還是用到了“使用 SQL 處理 ST_Geometry”。對此,ESRI給出的幫助文檔中的解釋如下:

 

可使用數據庫管理系統 (DBMS) 的結構化查詢語言 (SQL)、數據類型和表格式來處理地理數據庫中存儲的信息。SQL 是一種數據庫語言,支持數據定義和數據操縱命令。通過 SQL 訪問地理數據庫中的信息允許外部應用程序處理地理數據庫管理的表格數據。這些外部應用程序可以是在 ArcObjects 以外的環境中開發的非空間數據庫應用程序或自定義空間應用程序。可以針對任意支持的地理數據庫的 DBMS 類型以及針對基於文件的數據源執行 SELECT 語句。      

警告:

請注意,通過 SQL 訪問地理數據庫會忽略地理數據庫功能,如版本化、拓撲、網絡、地形、關聯要素的注記、其他類或工作空間擴展模塊。可使用觸發器和存儲過程等 DBMS 功能來維護某個地理數據庫功能所需的表之間的關系。但是,如果對數據庫執行 SQL 命令而不考慮此附加功能(如執行 INSERT 語句以向業務表添加記錄或者向現有要素類添加列),則會避開地理數據庫功能並可能對地理數據庫中數據之間的關系造成損壞。

通常,使用 SQL 修改地理數據庫中的信息時將應用以下原則:

  • 數據已版本化后不要使用 SQL 來更新記錄,除非將 SQL 與多版本化視圖結合使用。
  • 使用 SQL 更新非版本化數據時,不要使用地理數據庫行為(例如關系類、關聯要素的注記,或者拓撲)修改可影響數據庫中其他對象的任意屬性。
  • 執行完 SQL 語句后,執行 COMMIT 或 ROLLBACK 語句以確保更改是已提交到數據庫還是未完成。

之前的原則適用於任何屬性、空間或非空間。本幫助手冊重點在於使用 SQL 進行空間選擇、更改數據,以及更改以 ST_Geometry 和 ST_Raster 數據存儲類型存儲的數據的屬性。

ST_Geometry 存儲類型:

ST_Geometry SQL 數據類型用於存儲在 DB2、Informix、Oracle 和 PostgreSQL 的地理數據庫中。此數據類型可在地理數據庫中使用,另外還可通過 SQL 訪問第三方應用程序的簡單要素類幾何。

ST_Geometry 執行空間的 OGC 和 ISO SQL 多媒體規范。OGC 參考資料為“地理信息的 OpenGIS 執行規范 - 簡單要素訪問 - 第 2 部分:SQL 選項,版本 1.1.0。ISO 參考資料為“ISO/IEC 13249-3 SQL 多媒體和應用程序包 - 第 3 部分:空間”(ISO/IEC 13249-3 SQL multimedia and application packages—Part 3: Spatial)。

有關 SQL 與 DB2 或 Informix 中的 ST_Geomery 類型結合使用的信息,請參閱 IBM DB2 和 Informix 文檔。有關 SQL 與 Oracle 和 PostgreSQL 中的 ST_Geometry 類型結合使用的信息,請參閱后續章節。

提示:

本幫助的“空間類型與 SQL 結合使用”一節包含 DB2 和 Informix 的一些示例;不過有關 ST_Geometry 與這些數據庫結合使用的完整信息,請閱讀 IBM 文檔。

利用SQL函數與ORACLE 可以進行一下的一些常用的操作:

  • 測試空間關系的函數
    • 這些函數將幾何作為輸入,並確定幾何之間是否存在特定關系。如果滿足空間關系的條件,則這些函數會返回 1 或 t(表示 TRUE)。如果不滿足條件(不存在關系),則這些函數將返回 0 或 f(表示 FALSE)。有關各個函數的說明。
  • 執行空間運算的函數

這些函數利用空間數據並對其執行分析,然后返回新的空間數據。有關這些函數的說明。

  • 返回幾何屬性的函數

比如他可以進行如我所寫的下面的處理一樣進行數據的相交判斷等等。

image 

當然這個工程中會涉及到一些ORACLE的語句的編寫等等,不過這也是鞏固和提高自身Oracle能力的一個好機會。因為ORACLE支持VSQL的能力,這使得我們在編寫符合我們自身業務邏輯的處理過程的時候更加的方便和快捷。因為是是直接通過底層操作數據,省去了中間初始化的很多過程,所以通常它的處理效率要高於我們常用的gp和soe擴展。

成功不是得到多少東西,而是把身上多余的東西的扔掉多少。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM