Oracle Spatial and Graphでは、『OpenGIS Implementation Specification for Geographic information - Simple feature access - Part 1: Common architecture』で指定された注釈テキストをサポートしています。この仕様では、注釈テキストは、地理関連データまたはアドホック・データおよびプロセス関連情報を表示可能なテキストとして含む、単純に挿入されたテキストとして定義されています。このテキストは、エディタまたは単純な地図で表示するために使用できます。通常、完全な地図製作における品質としては不十分ですが、あらゆるアプリケーションで必要となるテキスト機能をほぼ果たすことができます。
ST_ANNOTATION_TEXTオブジェクト型は、注釈テキストの格納に使用できます。この型には、注釈テキストを表に挿入するコンストラクタがあります(「ST_ANNOTATION_TEXTコンストラクタの使用」を参照)。
USER_ANNOTATION_TEXT_METADATAビューおよびALL_ANNOTATION_TEXT_METADATAビューは、注釈テキストに関連するメタデータを格納します(「注釈テキストのメタデータ・ビュー」を参照)。
注釈テキストのオブジェクトには、オブジェクトの配列が含まれます。ここでは、各オブジェクトは、テキスト・ラベル、テキスト・ラベルのレンダリングを開始する点、引き出し線(通常、テキスト・ラベルから地図上の関連付けられた点)およびオプションで追加の属性情報で構成されます。通常、単一の注釈テキストのオブジェクトには、地図のすべてのテキスト・ラベルを含めることができます。
各テキスト・ラベルのオブジェクトは、次のように定義されています。
Name Null? Type ----------------------------------------- -------- ---------------------------- PRIVATEVALUE VARCHAR2(4000) PRIVATELOCATION MDSYS.SDO_GEOMETRY PRIVATELEADERLINE MDSYS.SDO_GEOMETRY PRIVATETEXTATTRIBUTES VARCHAR2(4000)
例3-3 ST_ANNOTATION_TEXTコンストラクタの使用
単一の点に注釈を挿入する場合は、ST_ANNOTATION_TEXTコンストラクタを使用します。このコンストラクタは、例3-3に示すように、配列を使用して単一の点に情報を指定します。この例では、ST_ANNOTATION_TEXT型の列を含む表を作成し、INSERT文でST_ANNOTATION_TEXTコンストラクタを使用して、1つの行を挿入します。
CREATE TABLE my_annotations (id NUMBER, textobj ST_ANNOTATION_TEXT); INSERT INTO my_annotations VALUES (2, ST_ANNOTATION_TEXT( ST_ANNOTATIONTEXTELEMENT_ARRAY( ST_ANNOT_TEXTELEMENT_ARRAY( ST_ANNOTATIONTEXTELEMENT( 'Sample Label 2', SDO_GEOMETRY(2001,null,sdo_point_type(10,10,null),null,null), SDO_GEOMETRY(2002,null,null, SDO_ELEM_INFO_ARRAY(1,2,1), SDO_ORDINATE_ARRAY(5,10, 10,10)), NULL)))));
例3-3のST_ANNOTATION_TEXTコンストラクタでは、ST_ANNOTATIONTEXTELEMENTサブ要素で、次のような属性を指定しています。
ラベルのテキスト(この場合はSample Label 2
)。
ラベルのレンダリングを開始する点を指定する点ジオメトリ(この場合は位置(10,10))。
対象点とテキスト・ラベルの間で、引き出し線の開始点と終了点を指定する線ストリング・ジオメトリ(この場合は位置(5,10)と(10,10)の間の線)。
テキスト表示の属性情報がなく(NULL)、注釈テキストのメタデータ・ビューのTEXT_ATTRIBUTES列の情報が使用されていることを意味します(「注釈テキストのメタデータ・ビュー」の表3-2を参照)
注釈テキストのメタデータは、MDSYSが所有するグローバル表に格納されます。ユーザーは、このグローバル表を直接更新しないでください。Spatial and Graphのユーザーは、ユーザーに関連付けられたスキーマで使用可能な次のビューを持っています。
USER_ANNOTATION_TEXT_METADATAには、ユーザー(スキーマ)が所有する表のすべての注釈テキストについてのメタデータ情報が含まれます。このビューのみが更新可能であり、Spatial and Graphのユーザーは、空間表に関連するメタデータをこのビューに挿入する必要があります。
ALL_ANNOTATION_TEXT_METADATAには、ユーザーがSELECT権限を持つ、表のすべての注釈テキストのメタデータ情報が含まれます。
これらのビューの移入は、Spatial and Graphのユーザーの責任において行います。注釈テキストの各オブジェクトについて、USER_ANNOTATION_TEXT_METADATAビューに適切な行を挿入する必要があります。Oracle Spatial and Graphでは、ALL_ANNOTATION_TEXT_METADATAビューも更新され、USER_ANNOTATION_TEXT_METADATAに挿入した行が確実に反映されます。
USER_ANNOTATION_TEXT_METADATAビューとALL_ANNOTATION_TEXT_METADATAビューのどちらにも表3-2に示す列が含まれますが、USER_ANNOTATION_TEXT_METADATAビューにはOWNER列は含まれません。列をビュー定義の順に示します。
表3-2 注釈テキストのメタデータ・ビューの列
列名 | データ型 | 用途 |
---|---|---|
OWNER |
VARCHAR2(32) |
TABLE_NAME列で指定された表の所有者(ALL_ANNOTATION_TEXT_METADATAビューのみ)。 |
TABLE_NAME |
VARCHAR2(32) |
ST_ANNOTATION_TEXT型の列を含む表の名前。 |
COLUMN_NAME |
VARCHAR2(1024) |
ST_ANNOTATION_TEXT型の列の名前。 |
TEXT_EXPRESSION |
VARCHAR2(4000) |
ラベルにテキストが指定されていない場合に使用できる値。OpenGISの仕様によると、挿入するテキストは、VALUEがNULLでない場合、最初に現行の要素のVALUEの内容から取得されます。それ以外の場合、テキストは最初のNULL以外の先行する要素のVALUEから取得されます。すべての先行する要素がNULLのVALUEフィールドの場合、VALUEはメタデータ表のTEXT_EXPRESSIONから取得されます。 |
TEXT_ATTRIBUTES |
VARCHAR2(4000) |
ラベル・テキストのスタイルおよびレイアウトについて、デフォルトのテキスト表示属性(フォント・ファミリーおよびフォント・サイズ、水平スペースおよび垂直スペースなど)ですが、ST_ANNOTATION_TEXTコンストラクタのPRIVATETEXTATTRIBUTES属性で上書きされた場合を除きます(「ST_ANNOTATION_TEXTコンストラクタの使用」を参照)。OpenGISの仕様の「XML for Text Attributes」の項で指定された形式を使用してください。 |