図2-6に、1つの直線セグメントおよび1つの円弧で構成される複合ポリゴンとして表現される、アイスクリーム・コーンの形をしたオブジェクトを示します。この形を表すには5つの点が必要で、(6,10)、(10,1)および(14,10)の点は1つの鋭角の線ストリングを表し、(14,10)、(10,14)および(6,10)の点は円弧を表します。線ストリングの開始点と円弧の終了点は同じ点(6,10)です。SDO_ELEM_INFO配列には、この複合線ストリングに対して3つの値の組が3つ含まれます。これらの3つの値の組は{(1,1005,2), (1,2,1), (5,2,2)}です。
図2-6に示すジオメトリのSDO_GEOMETRY定義は、次のとおりです。
SDO_GTYPE = 2003。2は2次元を示し、3はポリゴンを示します。
SDO_SRID = NULL。
SDO_POINT = NULL。
SDO_ELEM_INFO = (1,1005,2, 1,2,1, 5,2,2)。3つの値で構成される3つの要素1,1005,2、1,2,1および5,2,2があります。
最初の組は、この要素が、後の2組を使用して記述されている2つのサブ要素線ストリングで構成される複合ポリゴンであることを示します。
2番目の組は、最初のサブ要素線ストリングが直線セグメントで構成され、かつこの線ストリングに対する座標がオフセット1から開始していることを示しています。この線ストリングの終了点は2番目の線ストリングの開始オフセット(このインスタンスでは5)によって決定されます。1つの頂点はXとYの2つの値で決定されるため、最初の線ストリングの終了点座標はオフセット5および6となります。
3つの値で構成される3番目の要素は、2番目のサブ要素線ストリングが、オフセット5で始まる縦座標が指定された円弧で構成されることを示しています。この線ストリングの終了点は、次の要素の開始オフセットによって決まりますが、これが最後の要素である場合は、SDO_ORDINATES配列の現在の長さで決まります。
SDO_ORDINATES = (6,10, 10,1, 14,10, 10,14, 6,10)。
例2-9に、図2-6のジオメトリをデータベースに挿入するSQL文を示します。
例2-9 複合ポリゴンを挿入するSQL文
INSERT INTO cola_markets VALUES( 12, 'compound_polygon', SDO_GEOMETRY( 2003, -- two-dimensional polygon NULL, NULL, SDO_ELEM_INFO_ARRAY(1,1005,2, 1,2,1, 5,2,2), -- compound polygon SDO_ORDINATE_ARRAY(6,10, 10,1, 14,10, 10,14, 6,10) ) );