sdo_filter(geometry1, geometry2, param);
判斷兩個幾何體是否有相交
select c.mkt_id, c.name
from cola_markets c
where sdo_filter(c.shape,
sdo_geometry(2003,
null,
null,
sdo_elem_info_array(1, 1003, 3),
sdo_ordinate_array(4, 6, 8, 8))) = 'true';
sdo_join(table_name1, column_name1, table_name2, column_name2, params,
preserve_join_order) return sdo_rowidset;
select /*+ ordered */
a.name, b.name
from table(sdo_join('cola_markets',
'shape',
'cola_markets',
'shape',
'mask=anyinteract')) c,
cola_markets a,
cola_markets b
where c.rowid1 = a.rowid
and c.rowid2 = b.rowid
order by a.name;
sdo_nn(geometry1, geometry2, param [, number]);
在指定的距離內,按順序返回離的最近的。
效能調優引數
sdo_num_res 指定返回離指定點最近的兩個市場
sdo_batch_size 指定了一次批量提取多少條記錄進行對比
select /*+ index(c cola_spatial_idx) */
c.mkt_id, c.name
from cola_markets c
where sdo_nn(c.shape,
sdo_geometry(2001,
null,
sdo_point_type(10, 7, null),
null,
null),
'sdo_num_res=2') = 'true';
select /*+ index(c cola_spatial_idx) */
c.mkt_id, c.name
from cola_markets c
where sdo_nn(c.shape,
sdo_geometry(2001,
null,
sdo_point_type(10, 7, null),
null,
null),
'sdo_batch_size=3') = 'true'
and c.name < 'cola_d'
and rownum <= 2;
sdo_nn_distance(number);
number
必須與sdo_nn
操作符的最後乙個引數保持一致。
sdo_nn操作符是通過計算距離來識別客戶的,我們可以通過sdo_nn_distance輔助操作符來獲取這些距離。
在使用該操作符時,必須指定乙個效能調優引數,sdo_num_res或sdo_batch_size,如果不知道如何設定sdo_batch_size的值,就將其設為0,索引會在內部使用合適的值。
select /*+ index(c cola_spatial_idx) */
c.mkt_id, c.name, sdo_nn_distance(1) dist
from cola_markets c
where sdo_nn(c.shape,
sdo_geometry(2001,
null,
sdo_point_type(10, 7, null),
null,
null),
'sdo_num_res=2',
1) = 'true'
order by dist;
sdo_relate(geometry1, geometry2, param);
判斷兩個幾何體的關係
select a.gid
from polygons a, query_polys b
where b.gid = 1
and sdo_relate(a.geometry, b.geometry, 'mask=touch') = 'true'
union all
select a.gid
from polygons a, query_polys b
where b.gid = 1
and sdo_relate(a.geometry, b.geometry, 'mask=coveredby') = 'true';
select c.mkt_id, c.name
from cola_markets c
where sdo_relate(c.shape,
sdo_geometry(2003,
null,
null,
sdo_elem_info_array(1, 1003, 3),
sdo_ordinate_array(4, 6, 8, 8)),
'mask=anyinteract') = 'true';
sdo_within_distance(geometry1, ageom, params);
返回與指定點相距指定的距離內的某錶的幾何物件
select c.name
from cola_markets c
where sdo_within_distance(c.shape,
sdo_geometry(2003,
null,
null,
sdo_elem_info_array(1, 1003, 3),
sdo_ordinate_array(4, 6, 8, 8)),
'distance=10') = 'true';
語法:操作符overlapbdydisjoint(geometry1, geometry2);
11、sdo_touch
1、 空間操作符使用的表必須有空間索引;
空間操作符執行速度比函式快,因此可以採用操作符的情況下就使用操作符
Oracle Spatial 例項簡介
oracle spatial 例項簡介 oracle spatial 簡介 首先,oracle 支援自定義的資料型別,你可以用陣列,結構體或者帶有建構函式,功能函式的類來定義自己的物件型別。這樣的物件型別可以用於屬性列的資料型別,也可以用來建立物件表。而oracle spatial也正是基於此種特性...
Oracle spatial空間查詢的選擇度分析
接下來,我們來研究一下這個問題。建立表,並使用sdo geometry資料型別儲存向量資料。檢視表中記錄數 建立空間索引 create index tddcsde a3010 ix1 on tddcsde dltb20150705 shape indextype is mdsys spatial i...
Oracle Spatial 幾何物件之間的距離
sdo within distance 操作符是最簡單的空間操作符之一,可以用它來進行臨近分析,查詢時該操作符能夠使用空間索引,加快查詢速度。如給定乙個位置集,該操作符將從中返回在乙個查詢位置指定距離範圍內的所有位置。上圖查詢了距位置q距離為d的所有點,於是物件a,b,c被檢索出來,d,e被排除。操...