次元、上限と下限および各次元の許容差を記述するジオメトリのメタデータは、MDSYSが所有するグローバル表に格納されます。ユーザーは、このグローバル表を直接更新しないでください。Spatial and Graphのユーザーは、ユーザーに関連付けられたスキーマで使用可能な次のビューを持っています。
USER_SDO_GEOM_METADATAには、ユーザーが所有するすべての空間表(スキーマ)についてのメタデータ情報が含まれます。このビューのみが更新可能であり、Spatial and Graphのユーザーは、空間表に関連するメタデータをこのビューに挿入する必要があります。
ALL_SDO_GEOM_METADATAには、ユーザーがSELECT権限を持つ、すべての空間表のメタデータ情報が含まれます。
これらのビューの移入は、Spatial and Graphのユーザーの責任において行います。各空間列について、USER_SDO_GEOM_METADATAビューに対応する行を挿入する必要があります。Oracle Spatial and Graphでは、ALL_SDO_GEOM_METADATAビューも更新され、USER_SDO_GEOM_METADATAに挿入した行が確実に反映されます。
各メタデータ・ビューは、次のとおり定義されています。
( TABLE_NAME VARCHAR2(32), COLUMN_NAME VARCHAR2(32), DIMINFO SDO_DIM_ARRAY, SRID NUMBER );
また、ALL_SDO_GEOM_METADATAビューには、TABLE_NAMEで指定した表を所有するスキーマを識別するOWNER列があります。
次に、Oracle Spatial and Graphメタデータ・ビューに格納されるスキーマ名、表名、列名およびSDO_DIMNAME値に関する注意事項を示します。
これらは、文字、数字およびアンダースコアのみで構成する必要があります。たとえば、このような名前には、空白(
)、アポストロフィ('
)、引用符("
)またはカンマ(,
)を含めることはできません。
名前がジオメトリのメタデータ・ビューに格納される前、または表がアクセスされる前に、名前に含まれるすべての文字が大文字に変換されます。表名で指定されるすべてのスキーマ名も、同様に変換されます。
COLUMN_NAME列には、SDO_GEOMETRY型の列名が含まれます。COLA_MARKETS表の場合、この列をSHAPEといいます。
列名は、空間メタデータ・ビューにすべて大文字で格納されます。
列名は、USER_SDO_GEOM_METADATAビューに挿入する場合、空白または大/小文字が混在した文字列を引用符で囲んで指定することができません。また、問合せで使用する場合は、(すべて大文字でないかぎり)引用符で囲むことはできません。
DIMINFO列は、オブジェクト型の可変長配列であり、次元によって指定され、次元ごとに1つのエントリがあります。SDO_DIM_ARRAY型は、次のとおり定義されます。
Create Type SDO_DIM_ARRAY as VARRAY(4) of SDO_DIM_ELEMENT;
SDO_DIM_ELEMENT型は、次のとおり定義されます。
Create Type SDO_DIM_ELEMENT as OBJECT ( SDO_DIMNAME VARCHAR2(64), SDO_LB NUMBER, SDO_UB NUMBER, SDO_TOLERANCE NUMBER);
n次元の場合、SDO_DIM_ARRAYインスタンスは、サイズがnのインスタンスです。DIMINFOには、2次元のジオメトリに対して2つ、3次元のジオメトリに対して3つ、4次元のジオメトリに対して4つのSDO_DIM_ELEMENTインスタンスが含まれます。配列の各SDO_DIM_ELEMENTインスタンスには、SDO_LB、SDO_UBおよびSDO_TOLERANCE属性に対する有効な(NULL以外の)値が必要です。
注意:
DIMINFO情報に反映される次元数は、レイヤー内の各ジオメトリ・オブジェクトの次元数に一致している必要があります。
許容差と適切なSDO_TOLERANCE値の決定方法については、「許容差」(特に「レイヤーのジオメトリ・メタデータの許容差」)を参照してください。
Spatial and Graphでは、可変長配列は次元によって指定されるとみなされます。DIMINFO可変長配列は、SDO_ORDINATES可変長配列の点の縦座標と同じ方法で、次元によって指定される必要があります。たとえば、SDO_ORDINATES可変長配列に{X1, Y1, ..., Xn, Yn}が含まれる場合、最初のDIMINFOエントリはX次元を定義し、2番目のDIMINFOエントリはY次元を定義する必要があります。
「空間データの挿入、索引付けおよび問合せの例」では、SDO_GEOMETRY型とSDO_DIM_ARRAY型の使用方法を示しています。この例は、ジオメトリ・オブジェクト(コーラの仮想マーケット領域)の表現方法、およびCOLA_MARKETSフィーチャ表とUSER_SDO_GEOM_METADATAビューにそれらのオブジェクトのデータを移入する方法を示しています。
SRID列は、列にあるすべてのジオメトリに対する座標系のSRID値、またはジオメトリに座標系が関連付けられていない場合はNULLを含む必要があります。(座標系については、「座標系(空間参照システム)」を参照してください。)