最も単純なソリッドの種類は、サイコロや積み木のような立方形として表現できます。複雑なソリッドとして錐台があります。これは(3面以上の)大きなピラミッドを底面と平行な平面で切り取って形作ったピラミッドです。錐台は、空間演算子の問合せウィンドウとしてのみ使用できます。錐台および立方体は、通常、ソリッド・タイプのSDO_GEOMETRYオブジェクトとしてモデル化されます。図1-9に、ビュー・ポイントからの距離が異なる2つの空間オブジェクトを含む問合せウィンドウとしての錐台を示します。
点群(点の巨大な集合体)を使用して、ソリッド・ジオメトリおよび表面ジオメトリの形状または構造をモデル化することもできます。点群データを使用するほとんどのアプリケーションには、位置に基づく問合せが含まれます。アプリケーションは、位置および可視性の両方に基づく問合せを実行する可視性のロジックを追加するために、Spatial and Graph外に出ることができます。
点群データを使用するアプリケーションのほとんどは、ビュー・ポイントからの距離に基づいてオブジェクトを取得することで、データ転送の最小化を図ります。たとえば、図1-9では、オブジェクトBはオブジェクトAよりもビュー・ポイントから離れています。したがって、アプリケーションは、オブジェクトAを細部まで(高解像度で)取得し、オブジェクトBを大まかに(低解像度で)取得する可能性があります。ほとんどの場合、ビュー・ポイントからの距離が遠くなるほど、オブジェクトの数は著しく増加します。また、離れているオブジェクトが近くにあるオブジェクトより低解像度で取得されると、問合せによって戻されるバイト数およびオブジェクトのレンダリング時間は飛躍的に減少します。
点群データの格納には、SDO_PCオブジェクトまたは平面表のいずれかを使用できます。使用する方法は、ご使用のハードウェア環境と使用方法に応じて異なります。平面形式の利点の1つは、その効果と動的な性質で、点データに対する更新であるため、再ブロック化を必要としません。
点群の一般的な操作手順は、その点群データがSDO_PCオブジェクトに格納されるか、平面表に格納されるかによって、次のようになります。
SDO_PCオブジェクトとして格納される点群データを使用するには、次のようにします。
SDO_PC_PKG.INITファンクションを使用して、点群を初期化します。
SDO_PC_PKG.CREATE_PCプロシージャを使用して点群を作成します。
問合せが必要な場合は、SDO_PC_PKG.CLIP_PCファンクションを使用して、点群をクリップします。
必要に応じて、SDO_PC_PKG.TO_GEOMETRYファンクションを使用します(たとえば、クリップ操作の結果を1つのSDO_GEOMETRYオブジェクトに変換する場合)。
平面表に格納される点群データを使用するには、次のようにします。
点群データのための表(または該当する表に基づくビュー)を作成します。
各行には、1つの点の最初の3つの空間次元(およびオプションで非空間次元)の値が含まれます。表またはビューの定義は、VAL_D1 NUMBER、VAL_D2 NUMBERおよびVAL_D3 NUMBERの列で始まる必要があります。また、点群の非空間次元の列を含めることもできます。
表に点群データを移入します。
問合せが必要な場合は、SDO_PC_PKG.CLIP_PC_FLATファンクションを使用して、点群をクリップします。
点群の操作に使用するPL/SQLサブプログラムについては、「SDO_PC_PKGパッケージ(点群)」を参照してください。
Javaによる点群の操作の例は、次のファイルを参照してください。
$ORACLE_HOME/md/demo/PointCloud/examples/java/README.txt $ORACLE_HOME/md/demo/PointCloud/examples/java/readPointCloud.java