29.16 SDO_PC_PKG.SDO_PC_NN
書式
SDO_PC_PKG.SDO_PC_NN( pc IN SDO_PC, center IN SDO_GEOMETRY, n IN NUMBER ) RETURN BLOB;
説明
入力点群オブジェクト内で指定された3D点に最も近いn個の点を戻します。
例
次の例では、指定された点群オブジェクト内で指定の"center"点から最も近い点を3200個戻します。
select
rownum pt_pos,
sdo_geometry(
3001,
null,
sdo_point_type(x, y, z),
null,
null) pts
from
table(
sdo_util.getvertices(
geometry => sdo_pc_pkg.to_geometry(
pts => sdo_pc_pkg.sdo_pc_nn(
pc => (select pc from pcs where id = 1),
center => sdo_geometry(
3001,
null,
sdo_point_type(15, 15, 30),
null,
null),
n => 3200),
num_pts => 3200,
pc_tot_dim => 3,
srid => null,
blk_domain => null,
get_ids => 1)))
order by
sqrt(
(x - 15) * (x - 15) +
(y - 15) * (y - 15) +
(z - 30) * (z - 30)),
x,
y,
z;
PT_POS
----------
PTS(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1
SDO_GEOMETRY(3001, NULL, SDO_POINT_TYPE(15, 15, 30), NULL, NULL)
2
SDO_GEOMETRY(3001, NULL, SDO_POINT_TYPE(15, 15, 30), NULL, NULL)
4
SDO_GEOMETRY(3001, NULL, SDO_POINT_TYPE(14, 15, 29), NULL, NULL)
10
SDO_GEOMETRY(3001, NULL, SDO_POINT_TYPE(14, 15, 29), NULL, NULL)
5
SDO_GEOMETRY(3001, NULL, SDO_POINT_TYPE(14, 16, 30), NULL, NULL)
11
SDO_GEOMETRY(3001, NULL, SDO_POINT_TYPE(14, 16, 30), NULL, NULL)
3
SDO_GEOMETRY(3001, NULL, SDO_POINT_TYPE(15, 14, 29), NULL, NULL)
...
3200
SDO_GEOMETRY(3001, NULL, SDO_POINT_TYPE(33, 28, 61), NULL, NULL)
3199
SDO_GEOMETRY(3001, NULL, SDO_POINT_TYPE(46, 2, 48), NULL, NULL)
3200 rows selected.
Elapsed: 00:00:15.57
親トピック: SDO_PC_PKGパッケージ(点群)