sdo_within_distance 操作符是最簡單的空間操作符之一,可以用它來進行臨近分析,查詢時該操作符能夠使用空間索引,加快查詢速度。如給定乙個位置集,該操作符將從中返回在乙個查詢位置指定距離範圍內的所有位置。
上圖查詢了距位置q距離為d的所有點,於是物件a,b,c被檢索出來,d,e被排除。
操作符語法如下:
sdo_within_distance
( table_geo in sdo_geometry,
query_geo in sdo_geometry,
parameter_string in varchar2
)='true'
table_geo 為被檢索表的sdo_geometry列
query_geo 為指定查詢位置的sdo_geometry。可乙個以是另乙個表的一列、乙個繫結變數或乙個動態構造的物件。
parameter_string 指定引數 distance 及可選引數 unit(距離單位)
(ps : oracle spatial 規定操作符應永遠和字串『true』比較)
舉例:查詢商店周圍50公尺範圍內的所有客戶
select ct.id, ct.name
from shops sh, customers ct
where sh.id=1
and sdo_within_distance(ct.location, sh.location,'distance=50 unit=m')='true'
order by ct.id;
( unit 的單位值可以通過 mdsys.sdo_dist_units 表選擇)
函式 sdo_geom.sdo_distance,可以用來獲得客戶和商店之間的距離。該函式計算了兩個幾何體上的任意兩點之間的最小距離。
sdo_geom.sdo_distance
(geometry1 in sdo_geometry,
geometry2 in sdo_geometry,
tolerance in number
[, params in varchar2 ]
) returns a number
geometry1 和 geometry2 表示sdo_geometry 物件。
tolerance 表示資料集的容差。 對於大地測量的資料,通常設定為 0.5 或者0.1(公尺)。
params 可選的引數。可指定返回距離的單位。
改寫上述例子:
select ct.id, ct.name
from shops sh, customers ct
where sh.id=1
and sdo_geom.sdo_distance(ct.location, sh.location, 0.5, 'unit=meter') <=50
order by ct.id;
sdo_geom.sdo_distance 不能使用空間索引,所以在查詢效率上比 sdo_within_distance 慢很多。
Oracle spatial的幾何處理函式
空間查詢和分析元件提供查詢和分析空間幾何體的核心功能,包括幾何引擎 geometry engine 和索引引擎 index engine 幾何引擎提供分析,比較操作幾何體的函式。索引引擎為了提高空間查詢效率提供空間索引。索引引擎提供等價函式稱之為操作符。注意 幾何體處理函式不使用空間索引,他們相對於...
Oracle spatial的幾何處理函式
空間查詢和分析元件提供查詢和分析空間幾何體的核心功能,包括幾何引擎 geometry engine 和索引引擎 index engine 幾何引擎提供分析,比較操作幾何體的函式。索引引擎為了提高空間查詢效率提供空間索引。索引引擎提供等價函式稱之為操作符。注意 幾何體處理函式不使用空間索引,他們相對於...
Oracle Spatial 例項簡介
oracle spatial 例項簡介 oracle spatial 簡介 首先,oracle 支援自定義的資料型別,你可以用陣列,結構體或者帶有建構函式,功能函式的類來定義自己的物件型別。這樣的物件型別可以用於屬性列的資料型別,也可以用來建立物件表。而oracle spatial也正是基於此種特性...