4.39 SDO_TOPO_MAP.LOAD_TOPO_MAP

構文(ファンクション)

SDO_TOPO_MAP.LOAD_TOPO_MAP(     
  topo_map      IN VARCHAR2,      
  allow_updates IN VARCHAR2,      
  build_indexes IN VARCHAR2 DEFAULT 'TRUE'      
) RETURN VARCHAR2;

または

SDO_TOPO_MAP.LOAD_TOPO_MAP(     
  topo_map      IN VARCHAR2,      
  xmin          IN NUMBER,      
  ymin          IN NUMBER,      
  xmax          IN NUMBER,      
  ymax          IN NUMBER,      
  allow_updates IN VARCHAR2,      
  build_indexes IN VARCHAR2 DEFAULT 'TRUE'      
) RETURN VARCHAR2;

または

SDO_TOPO_MAP.LOAD_TOPO_MAP(     
  topo_map      IN VARCHAR2,      
  xmin          IN NUMBER,      
  ymin          IN NUMBER,      
  xmax          IN NUMBER,      
  ymax          IN NUMBER,      
  allow_updates IN VARCHAR2,      
  build_indexes IN VARCHAR2,      
  next_load     IN VARCHAR2 DEFAULT 'FALSE'      
) RETURN VARCHAR2;

構文(プロシージャ)

SDO_TOPO_MAP.LOAD_TOPO_MAP(     
  topo_map      IN VARCHAR2,      
  allow_updates IN VARCHAR2,      
  build_indexes IN VARCHAR2 DEFAULT 'TRUE');'

または

SDO_TOPO_MAP.LOAD_TOPO_MAP(     
  topo_map      IN VARCHAR2,      
  xmin          IN NUMBER,      
  ymin          IN NUMBER,      
  xmax          IN NUMBER,      
  ymax          IN NUMBER,      
  allow_updates IN VARCHAR2,      
  build_indexes IN VARCHAR2 DEFAULT 'TRUE');'

説明

トポロジ全体またはトポロジのウィンドウ(矩形部分)の位相要素(プリミティブ)をTopoMapオブジェクトにロードします。ファンクションの構文を使用すると、位相要素がキャッシュにロードされている場合は文字列TRUEを、位相要素がキャッシュにロードされていない場合は文字列FALSEを戻します。

パラメータ

topo_map

TopoMapオブジェクトの名前を指定します。(TopoMapオブジェクトの詳細は、「TopoMapオブジェクト」を参照してください。)

xmin

ロードするウィンドウ(トポロジの矩形部分)の左下のX座標値を指定します。

ウィンドウの指定時にロードされる位相要素については、「使用上のノート」および図4-1を参照してください。

ymin

ロードするウィンドウ(トポロジの矩形部分)の左下のY座標値を指定します。

xmax

ロードするウィンドウ(トポロジの矩形部分)の右上のX座標値を指定します。

ymax

ロードするウィンドウ(トポロジの矩形部分)の右上のY座標値を指定します。

allow_updates

TopoMapオブジェクトを更新可能(TopoMapオブジェクトでのトポロジの編集操作、および変更内容のデータベースへの書込みを可能)にするにはTRUEを指定します。データベースに関してTopoMapオブジェクトを読取り専用(TopoMapオブジェクトでのトポロジの編集操作は可能であるが、変更内容のデータベースへの書込みを禁止)にするには、FALSEを指定します。

TopoMapオブジェクトを更新可能にすると、TopoMapオブジェクト内の位相要素がロックされます。つまり、これらの位相要素を、別のデータベース・ユーザーのセッションで更新可能なTopoMapオブジェクトに含めることはできません。(1回のユーザー・セッションでアクティブにできる更新可能なTopoMapオブジェクトは常に1つのみです)。

build_indexes

エッジおよびフェイスのデータにインメモリーRツリー索引を作成するにはTRUE (デフォルト)を指定します。エッジおよびフェイスのデータにメモリー内Rツリー索引を作成しない場合はFALSEを指定します。索引を作成すると、特に、大規模なトポロジで編集操作のパフォーマンスが向上します。

next_load

TRUEを指定すると、既存のウィンドウでは編集する領域がカバーされないことがわかった場合に、データを追加するために、ロード・ウィンドウ領域(トポロジの矩形部分)を展開できます。FALSE (デフォルト)では、ロード・ウィンドウにデータを追加できません。

TopoMapオブジェクト(topo_map)に対して最初にファンクションをコールするときは、常に、next_loadFALSE (デフォルトまたは明示的に指定)にする必要があります。ウィンドウ領域を展開する必要がある場合は、ファンクションを再度コールし(ただしnext_loadTRUEにする)、その後、必要な編集操作を追加的に実行します。

使用上のノート

TopoMapオブジェクトをロードする際に、位相要素がロードされたかどうかを確認する必要がない場合(たとえば、指定したトポロジ領域または矩形領域が空かどうかを確認する必要がない場合)、ファンクション構文を使用するよりも、プロシージャ構文の方が処理を効率的に実行できます。ファンクション構文を使用すると、位相要素がロードされたかどうかを確認できます。

TopoMapオブジェクトにデータをロードする前に、(SDO_TOPO_MAP.CREATE_TOPO_MAPプロシージャを使用して)TopoMapオブジェクトを作成しておく必要があります。

next_loadTRUEとしてファンクション構文を使用する場合を除き、TopoMapオブジェクトにすでにデータが含まれている場合は、このファンクションまたはプロシージャを使用できません。それ以外で、TopoMapオブジェクトにデータが含まれている場合は、このファンクションまたはプロシージャをコールする前に、変更をコミット(SDO_TOPO_MAP.COMMIT_TOPO_MAPプロシージャを使用)してキャッシュをクリア(SDO_TOPO_MAP.CLEAR_TOPO_MAPプロシージャを使用)するか、または変更をロールバック(SDO_TOPO_MAP.ROLLBACK_TOPO_MAPプロシージャを使用)する必要があります。

インメモリー・キャッシュを使用して位相要素を編集する方法の詳細は、「トポロジ・データを編集する方法」を参照してください。

このファンクションまたはプロシージャの動作は、クライアント側のJava APIに含まれるTopoMapクラス(「トポロジ・データ・モデルのJavaインタフェース」を参照)のloadTopologyメソッドまたはloadWindowメソッドを使用する場合と同じです。

TopoMapオブジェクトが、トポロジ全体のTopoMapオブジェクトであるか、またはxminyminxmaxおよびymaxパラメータを使用して指定されたウィンドウのTopoMapオブジェクトであるかにかかわらず、すべてのTopoMapオブジェクトには、それに関連付けられた領域があります。更新可能なTopoMapオブジェクトの場合は、この領域内でのみ更新が可能です。(この領域には、直接更新できない位相要素が含まれている場合もありますが、ユーザーの編集操作の結果として、Oracle Spatialが必要に応じて変更する場合があります。)

TopoMapオブジェクトがロードされると、そのTopoMapオブジェクトの領域と交差するすべてのノード、フェイスおよびエッジがロードされます。フェイスがロードされると、フェイスの境界上にあるすべてのエッジおよびノードがロードされます。エッジがロードされると、エッジの開始ノードおよび終了ノードがロードされます。図4-1に示すトポロジおよびウィンドウ(破線で表示)について考えてみます。

図4-1 ウィンドウへの位相要素のロード

図4-1の説明が続きます
図4-1「ウィンドウへの位相要素のロード」の説明

次に、図4-1に示すウィンドウについて説明します。

  • フェイスF1は、部分的にウィンドウに重なっているため、ロードされます。

  • エッジE3、E4、E5、E6、E7、E8、E9、E10、E11、E12、E13、E14およびE16はロードされます。

    エッジE3は、部分的にウィンドウに重なっているため、ロードされます。

    エッジE9は、部分的にウィンドウに重なっているフェイス(F1)の境界であるため、ロードされます。

    エッジE12は、部分的にウィンドウに重なっているフェイス(F1)内の孤立エッジであるため、ロードされます。

    エッジE1は、ウィンドウと相互作用するフェイスに関連付けられていないため、ロードされません。

  • ノードN2、N5、N6、N7、N8、N9、N10、N11、N12、N16、N19およびN20はロードされます。

    連結ノードN2は、エッジE3がロードされるため、ロードされます。

    連結ノードN12は、エッジE9およびE11がロードされるため、ロードされます。

    孤立ノードN16は、ロックされたフェイス内の孤立ノードであるため、ロードされます。

次の例では、デフォルトで、すべてのCITY_DATAトポロジの要素を、それに関連するTopoMapオブジェクトに編集用にロードして、インメモリーRツリー索引を作成します。この例では、操作が正常に実行され、一部の位相要素がキャッシュにロードされたことを示す結果が戻されます。(この例では、「トポロジ・データから作成したトポロジ」の定義およびデータを参照しています。)

CALL SDO_TOPO_MAP.LOAD_TOPO_MAP('CITY_DATA_TOPOMAP', 'TRUE') INTO :res_varchar;
 
Call completed.
 
PRINT res_varchar;
 
RES_VARCHAR
--------------------------------------------------------------------------------
TRUE