天天看點

ORACLE SPATIAL介紹

一、 ORACLE SPATIAL 簡介

ORACLE SPATIAL 是Oracle 的支援GIS資料存儲的空間資料處理系統,是 Oracle 資料庫強大的核心特性,包含了用于存儲矢量資料類型、栅格資料類型和持續拓撲資料的原生資料類型。ORACLE SPATIAL使得我們能夠在一個多使用者環境中部署地理資訊系統(GIS),并且與其它企業資料有機結合起來,統一部署電子商務、政務。有了ORACLE SPATIAL 之後,即可用标準的 SQL 查詢管理我們的空間資料。

二、 ORACLE SPATIAL 表結構簡介

  Oracle 支援自定義的資料類型,你可以用數組,結構體或者帶有構造函數,功能函數的類來定義自己的對象類型。這樣的對象類型可以用于屬性列的資料類型,也可以用來建立對象表。而Oracle Spatial也正是基于此種特性所開發的一套空間資料處理系統。

  Spatial 的自定義資料類型有很多,都在MDSYS方案下,經常使用的是SDO_GEOMETRY類型。SDO_GEOMETRY表示一個幾何對象,可以是點、線、面、多點、多線、多面或混合對象。

  Spatial 在此資料類型的基礎上,實作了R樹空間索引和四*樹空間索引,還以sql函數的形式實作了多種空間分析功能。

  Oracle Spatial 使用:

  1、将SDO_GEOMETRY資料類型作為資料表的一個列。

  CREATE TABLE cola_markets (

   mkt_id NUMBER PRIMARY KEY,

   name VARCHAR2(32),

shape MDSYS.SDO_GEOMETRY);

  2、填寫空間中繼資料。

  INSERT INTO USER_SDO_GEOM_METADATA

  VALUES (

  'cola_markets',

  'shape',

  MDSYS.SDO_DIM_ARRAY( -- 20X20 grid

  MDSYS.SDO_DIM_ELEMENT('X', 0, 20, 0.005),

  MDSYS.SDO_DIM_ELEMENT('Y', 0, 20, 0.005)

  ),

  NULL -- SRID

);

  3、建立空間索引。

  CREATE INDEX cola_spatial_idx

  ON cola_markets(shape)

  INDEXTYPE IS MDSYS.SPATIAL_INDEX;

至此,空間資料表的建立才算正式完成 。

  4、插入空間資料。空間資料的插入要

  INSERT INTO cola_markets VALUES(

  2,

  'cola_b',

  MDSYS.SDO_GEOMETRY(

  2003, -- 2-dimensional polygon

  NULL,

  NULL,

  MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1), -- one polygon (exterior polygon ring)

  MDSYS.SDO_ORDINATE_ARRAY(5,1, 8,1, 8,6, 5,7, 5,1)

  )

);

  5、空間分析查詢示例。

  -- Return the topological difference of two geometries.

  SELECT SDO_GEOM.SDO_DIFFERENCE(c_a.shape, m.diminfo, c_c.shape, m.diminfo)

  FROM cola_markets c_a, cola_markets c_c, user_sdo_geom_metadata m

  WHERE m.table_name = 'COLA_MARKETS' AND m.column_name = 'SHAPE'

AND c_a.name = 'cola_a' AND c_c.name = 'cola_c';

三、 ORACLE SPATIAL 功能

由于傳統的 GIS 技術已達到其本身可伸縮性和可靠性的極限,使用者越來越多地轉向以資料庫為中心的空間計算。ORACLE SPATIAL将空間過程和操作直接轉移到資料庫核心中,進而提高了性能和安全性。ORACLE SPATIAL從1995年ORACLE 7.1.6開始發展到2003年的10G版本,空間資料處理能力越來越強大。ORACLE SPATIAL将所有的地理空間資料類型(矢量、栅格、網格、影像、網絡、拓撲)統一在單一、開放的、基于标準的資料管理環境中,這就減少了管理單獨、分離的專用系統的成本、複雜性和開銷。RACLE SPATIAL不但具有傳統GIS的所有特性,,而且還具有關系資料庫的特性,這些特性擴充了應用程式開發人員的工作範圍并提供了他們的生産率,因而能支援更廣泛的應用程式并提高性能主要表現在:

1)  幾何結構和空間參照

ORACLE SPATIAL 支援三種基本的幾何形狀,這些幾何形狀可分别用于表示那些通常構成空間資料庫的特征,如道路、管理邊界、公共設施等。這些空間基礎元素包括:

點和點簇:點可以表示建築、消防栓、電線杆、鑽井、貨車車廂或移動的交通工具等位置。

線和線串:線可以表示道路、鐵路線、公用設施管線或故障線等。

多邊形和帶孔的複雜多邊形:多邊形可以表示城市、街區、河漫灘或油田和天然氣田的輪廓。帶孔的多邊形可以表示由一片沼澤環繞的一小塊土地。為了有效地內建和表示空間資訊,ORACLE SPATIAL 提供了豐富的工具來管理坐标系統和投影。支援 950 多種常用的制圖坐标系統,而且使用者還可以定義新的坐标系統。ORACLE SPATIAL 還支援在不同的坐标系統間任意轉換資料。這些轉換一次可以在一個幾何級上或者整個圖層上進行。

2) 空間索引:R-tree

為了優化空間查詢的性能,Oracle Locator 為關系資料庫提供了空間索引功能。Oracle Locator 提供 R-tree 索引建立功能,該功能生成和存儲幾何結構的近似值作為索引。R-tree 索引易于建立和使用 — 幾乎不需要調整即可獲得最佳性能。可以在空間資料的兩個、三個或四個次元上建立 R-tree 索引。

3) 空間操作符

各種幾何特征的互動作用可以通過使用比較操作符來确定,如 contains、covers 和 anyinteract(任何互動作用)。這樣就可以答複類似下列的請求:“列出這條鐵道線穿過的所有校區”或“找出這個城市中所有的花店”

4) 基于函數的索引支援

現在不需要将位置資訊顯式地存儲為 SDO_GEOMETRY 類型的列即可在關系屬性上執行空間查詢。使用者可以對存儲在關系列(例如經度和緯度)中的空間資料上建立空間索引。然後使用者可以在這些關系列上調用空間操作符,而無需建立一個 SDO_GEOMETRY 列。

5) 大地坐标支援

就地表測量而言,無論坐标系統是什麼,空間函數、操作符和公用程式都提供正确的結果。距離、面積和角度等機關都獲得了全面的支援。

6) 空間索引的分區支援

空間索引可以根據分區表進行分區。對空間資料分區并使用分區的本地索引,可以為大型資料集上的查詢以及并發查詢與更新提供性能增益。它還使索引的維護更加容易。

7) 并行建立空間索引

索引建立可以被細分成能并行執行的更小的任務,以便利用未使用的硬體 (CPU) 資源。對于某些空間資料庫以及索引類型和資料來說,并行索引建立能充分提高索引建構性能并顯著節約時間。

8) 線性參照支援

ORACLE SPATIAL 将“測量”資訊存儲為 ORACLE SPATIAL 線性幾何結構的一部分。此特性對于線性聯網和動态分割應用程式很關鍵,這些應用程式常見于網際網路街道路徑搜尋、運輸、公用設施和電信網絡以及管線管理。

9) 空間聚集

空間聚集函數概括了與幾何對象相關的 SQL 查詢結果。空間聚集函數傳回類型為 SDO_GEOMETRY 的幾何對象。空間聚集的使用提高了性能,降低了底層代碼的複雜性。

10) 網絡資料模型

在 Oracle 資料庫 10g 中提供了一個存儲網絡(圖形)結構的資料模型。它顯式地存儲和維護“連接配接—節點”網絡的連通性并提供網絡分析功能(如最短路徑、連通性分析)。需要網絡解決方案的應用程式包括運輸、公共交通、公共設施和生命科學(生物化學路徑分析)。對于運輸應用程式,該網絡資料模型還支援一個路線搜尋特性。Oracle 引入了一個可伸縮的路線搜尋引擎,該引擎提供了位址(或預先經過地理編碼的位置)之間的駕駛距離、時間和方向。它作為一個 Java 用戶端庫提供給網絡資料模型,這個網絡資料模型可以容易地部署在 Oracle 應用伺服器或獨立的 OC4J 環境中。其他的特性包括:最快或最短路徑的首選項,傳回概要或詳細的駕駛指導;并傳回沿着一條街道網絡從單個位置到多個目标位置的時間和距離。

11) 拓撲資料模型

ORACLE SPATIAL 包含一個資料模型和模式,它們在 Oracle 資料庫中持久存儲拓撲結構。當進行大量特征編輯且對地圖和地圖圖層間的資料完整性的有高度需求時,這非常有用。另一個好處是基于拓撲結構的查詢一般比涉及到關系(如鄰接性、連通性和包容性)的查詢執行速度更快。土地管理(地籍)系統和空間資料提供商将從這些功能中獲益。

12) GeoRaster

一種新的資料類型在 Oracle 資料庫 10g 中以本地形式管理地理參照栅格成像(衛星成像、遙感資料、網格化資料)。ORACLE SPATIAL 的 GeoRaster 特性提供成像的地理參照、用于中繼資料管理的XML 模式和基本操作,如形成分層、平鋪和交*。環境管理、國防/國家安全、能源勘探和人造衛星影像門戶方面的應用程式将會從中受益。

13) 空間分析函數

新的基于伺服器的空間分析功能包括分類、分裝、關連空間關系 — 這些功能對于商務智能應用程式非常重要。

14) 地理編碼器

地理編碼是将地理參照(比如位址和郵編)與位置坐标(經度和緯度)聯系起來的過程。在 ORACLE SPATIAL 10g 中提供一個功能全面的地理編碼引擎。它通過查詢存儲在 Oracle 資料庫中的經過地理編碼的資料,提供國際位址标準化、地理編碼和 POI 比對。它獨特的非解析位址支援為客戶應用程式增加了巨大的靈活性和便利性。ORACLE SPATIAL 地理編碼器作為 Java 存儲過程在 Oracle 資料庫伺服器内部實施。并提供了一個用于地理編碼的 PL/SQL API。

從ORACLE SPATIAL的特性中可以看出, 在Oracle資料庫内實作了所有的傳統的GIS管理、分析功能,而且這些功能與ORACLE的強大資料倉庫管理技術緊密的融合在一起,可以利用标準的SQL語言管理分析空間資料。是以,利用ORACLE SPATIAL我們完全可以部署适合各個領域的空間資料倉庫服務。然後通過C/S、B/S與客戶平台聯系起來,和使用者互動。

四、 ORACLE SPATIAL 優點

ORACLE SPATIAL 在資料庫服務端內建了空間資料倉庫高性能管理技術,使得地理資訊可以其它業務結合起來,并可以分布式地布署在INTERNET上,所有的這些優勢正在導緻新型空間資料倉庫應用程式的出現:

1)  低擁有成本

在企業級别上部署應用程式,集中存儲空間資料,進而降低了擁有成本。網際網路/内聯網體系結構不需要在桌上型電腦上安裝和維護用戶端軟體,也不需要在企業資料庫之外單獨存儲和管理資料。在客戶機上隻需要一個标準網際網路浏覽器。

2)  低風險

空間資訊直接內建到 ORACLE SPATIAL 中。這就促成了可伸縮的、安全的和高性能的應用程式。開發人員可以選擇部署在任何伺服器平台上,包括 Solaris、Unix、Linux、Windows NT 和 Windows 2000,并使用現有的 IT 資源來管理這些應用程式。

3)  高價值

利用網際網路,更多使用者可以在機會不增加機構成本的情況下通路應用程式。這意味着使用者可以全天候地通路任務的關鍵資訊