Oracle Spatial 幾何物件之間的距離

2022-09-22 02:42:10 字數 1558 閱讀 8197

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也正是基於此種特性...