ユーザー・データは、道路ネットワークに対する制限をモデル化します。現在、ルーティング・エンジンには、制限付き運転マヌーバ(右左折制限)ユーザー・データおよびトラック輸送ユーザー・データの2種類のユーザー・データがあります。
ユーザー・データはバージョン管理されます。ユーザー・データがパーティション化されると、SDO_ROUTER_DATA_VERSION表のルーティング・エンジン・データ・バージョンがユーザー・データBLOBに格納されます。ユーザー・データがキャッシュに格納される場合、ユーザー・データ・パーティションに格納されるバージョンは、SDO_ROUTER_DATA_VERSION表のバージョンと互換である必要があります。
ユーザー・データのパーティション化は、一般に非常に高速な操作です。ルーティング・エンジン・データのパーティション化の一部として実行するか、ルーティング・エンジン・データがすでにパーティション化されている場合はスタンドアロン操作として実行できます。どちらの場合も、ユーザー・データのパーティション化ではパーティション化されたルーティング・エンジン・データがガイドとして使用され、それにより、パーティション化処理が大幅に迅速化されます。
ユーザー・データのパーティション数は、ルーティング・エンジン・データのパーティション数以下になります。ルーティング・エンジン・データ・パーティションに関連付けられているユーザー・データがない場合、ユーザー・データ・パーティションは生成されません。ユーザー・データ・ローカル・パーティションは、関連するルーティング・エンジン・データ・パーティションとともにキャッシュに出し入れされます。ユーザー・データの高速道路パーティションは、ルーティング・エンジンの起動時にロードされ、キャッシュ内に保持されます。
リリース12cでは、制限付き運転マヌーバ・ユーザー・データはデータ・ベンダーが提供するルーティング・エンジンODFデータの一部です。トラック輸送ユーザー・データはルーティング・エンジンODFデータとともに提供されず、別途購入する必要があります。リリース12c以降のルーティング・エンジンの起動時には、使用可能なユーザー・データが検出されて使用されます。リリース12cより前のすべてのバージョンのルーティング・エンジンでは、ユーザー・データが検出されず、ルーティング・エンジン・データのみ使用してルートが計算されます。
この項には次のトピックが含まれます:
制限付き運転マヌーバは、右折を許可しない単純な右左折制限など、あるエッジから別のエッジへの移動を許可しないという単純なものにすることができます。または、開始エッジ、中央分離帯上のエッジおよび反対方向へ向かう道路上のエッジがある、中央分離帯で分割されている道路上でのUターン制限など、多くのエッジが関係する非常に複雑なマヌーバの場合もあります。
ルーティング・エンジンでは、制限付き運転マヌーバに3つの表を使用します。最初の2つの表ROUTER_NAV_STRANDおよびROUTER_CONDITIONには、制限付きマヌーバ・ユーザー・データを作成するためのRAWデータが含まれます。
最後の表ROUTER_TURN_RESTRICTION_DATAには、BLOB形式で格納された、パーティション化された制限付きマヌーバ・ユーザー・データが含まれます。制限付きマヌーバ・データをパーティション化すると、そのデータを同じパーティションのルーティング・エンジン・データとともにキャッシュに出し入れできます。
リリース12cでは、制限付き運転マヌーバ・ユーザー・データはデータ・ベンダーが提供するODFデータの一部です。リリース12cのルーティング・エンジンの起動時に、右左折制限ユーザー・データが検出されて使用されます。リリース11cのルーティング・エンジンが起動された場合、ユーザー・データは検出されず、ルーティング・エンジン・データのみ使用してルートが計算されます。
制限付き運転マヌーバ・ユーザー・データはODFデータ・セットの一部であるため、すでにパーティション化されています。一般に、このユーザー・データを再パーティション化する理由はありません。ただし、ルーティング・エンジン・データが再パーティション化された場合は、ユーザー・データも再パーティション化されます。制限付き運転マヌーバ・ユーザー・データを再作成することで、ルーティング・エンジン・データを再パーティション化しなくても、右左折制限データを再パーティション化することもできます。
構文:
SDO_ROUTER_PARTITION.CREATE_TURN_RESTRICTION_DATA( LOG_FILE_NAME IN VARCHAR2 := 'sdo_router_partition.log', CLEANUP IN BOOLEAN DEFAULT TRUE);
CREATE_TURN_RESTRICTION_DATAプロシージャは、制限付き運転マヌーバRAWデータ表ROUTER_NAV_STRANDおよびROUTER_CONDITIONを含むルーティング・エンジン・スキーマから実行する必要があります。このプロシージャは、制限付き運転マヌーバ・データをパーティション化し、BLOB形式の右左折制限ユーザー・データを含むROUTER_TURN_RESTRICTION_DATA表を作成します。右左折制限ユーザー・データの作成時にはデータ・バージョンへのアクセスが必要となるため、SDO_ROUTER_DATA_VERSION表がルーティング・エンジン・スキーマ内に存在する必要があります。
LOG_FILE_NAMEパラメータは、右左折制限生成時に書き込まれるログ・ファイルの名前です。このログ・ファイルはSDO_ROUTER_LOG_DIRディレクトリに作成されます。ユーザーは、ログ・ファイルの名前を選択するか、デフォルトのパーティション・ログ・ファイルsdo_router_partition.log
を使用するかを選択できます。
CLEANUPパラメータはデバッグに使用されます。デフォルトでは、右左折制限の生成中に作成されるすべての中間表がクリーンアップされます。右左折制限の生成に問題がある場合は、これらの表をそのまま残すと、かなりのデバッグ情報を提供できます。
構文:
SDO_ROUTER_PARTITION.DUMP_TURN_RESTRICTION_DATA( LOG_FILE_NAME IN VARCHAR2 := 'sdo_router_partition.log', START_PID IN NUMBER DEFAULT 0, END_PID IN NUMBER DEFAULT -1, DUMP_SOFT_RESTRICTIONS IN BOOLEAN DEFAULT FALSE);
DUMP_TURN_RESTRICTION_DATAプロシージャでは、右左折制限ユーザー・データ・パーティションBLOBの内容がダンプされます。このプロシージャは、BLOBをアンパックし、データを書式設定してログ・ファイルに書き込みます。このプロシージャを1回コールして、単一のパーティションまたは連続するパーティション範囲をダンプできます。この範囲はSTART_PIDからEND_PIDまでと定義されます。デフォルトでは、すべてのパーティションがダンプされます。連続するパーティション範囲を1回のコールでダンプすることはできません。
LOG_FILE_NAMEパラメータでは、右左折制限ユーザー・データのパーティションをダンプする際に書き込まれるログ・ファイルの名前を指定します。このログ・ファイルはSDO_ROUTER_LOG_DIRディレクトリに作成されます。ログ・ファイルの名前を選択するか、デフォルトのパーティション・ログ・ファイルsdo_router_partition.log
に書き込むことができます。
START_PIDパラメータは、最初にダンプするパーティションのIDです。デフォルトのSTART_PIDは0です。START_PIDはEND_PID以下である必要があります。
END_PIDパラメータは、ダンプする最後のパーティションのIDです。デフォルトのEND_PIDは-1で、これはデータ・セット内の最大のパーティションIDに変換されます。開始と終了のPID値が等しい場合は、単一のパーティションがダンプされます。END_PIDがSTART_PIDよりも小さい場合は、ログにエラー・メッセージが書き込まれます。
DUMP_SOFT_RESTRICTIONSパラメータは、右左折制限データのダンプ方法を制御します。3つ以上のエッジがある右左折制限では、ソフト制限は右左折制限を部分的に説明する一連のエッジです。これはデバッグ・パラメータであり、一般にはデフォルト値のFALSEに設定したままにする必要があります。
構文:
SDO_ROUTER_PARTITION.CREATE_TRUCKING_DATA( LOG_FILE_NAME IN VARCHAR2 := ' sdo_router_partition.log', CLEANUP IN BOOLEAN DEFAULT TRUE);
CREATE_TRUCKING_DATAプロシージャは、RAWトラック輸送データ表ROUTER_TRANSPORTを含むルーティング・エンジン・スキーマから実行する必要があります。このプロシージャでは、トラック輸送データをパーティション化し、BLOB形式のトラック輸送ユーザー・データを含むROUTER_TRUCKING_DATA表を作成します。トラック輸送ユーザー・データの作成時にはデータ・バージョンへのアクセスが必要となるため、SDO_ROUTER_DATA_VERSION表がルーティング・エンジン・スキーマ内に存在する必要があります。
LOG_FILE_NAMEパラメータは、トラック輸送制限の生成時に書き込まれるログ・ファイルの名前です。このログ・ファイルはSDO_ROUTER_LOG_DIRディレクトリに作成されます。ユーザーは、ログ・ファイルの名前を選択するか、デフォルトのパーティション・ログ・ファイルsdo_router_partition.log
を使用するかを選択できます。
CLEANUPパラメータはデバッグに使用されます。デフォルトでは、トラック輸送制限の生成中に作成されるすべての中間表がクリーンアップされます。トラック輸送制限の生成に問題がある場合は、これらの表をそのまま残すと、かなりのデバッグ情報を提供できます。
構文:
SDO_ROUTER_PARTITION.DUMP_TRUCKING_DATA( LOG_FILE_NAME IN VARCHAR2 := ' sdo_router_partition.log', START_PID IN NUMBER DEFAULT 0, END_PID IN NUMBER DEFAULT -1, SKIP_UNSUPPORTED IN BOOLEAN DEFAULT TRUE);
DUMP_TRUCKING_DATAプロシージャでは、トラック輸送制限ユーザー・データ・パーティションBLOBの内容がダンプされます。このプロシージャは、BLOBをアンパックし、データを書式設定してログ・ファイルに書き込みます。このプロシージャを1回コールして、単一のパーティションまたは連続するパーティション範囲をダンプできます。この範囲はSTART_PIDからEND_PIDまでと定義されます。デフォルトでは、すべてのパーティションがダンプされます。連続するパーティション範囲を1回のコールでダンプすることはできません。
LOG_FILE_NAMEパラメータでは、トラック輸送制限ユーザー・データのパーティションをダンプする際に書き込まれるログ・ファイルの名前を指定します。このログ・ファイルはSDO_ROUTER_LOG_DIRディレクトリに作成されます。ログ・ファイルの名前を選択するか、デフォルトのパーティション・ログ・ファイルsdo_router_partition.log
に書き込むことができます。
START_PIDパラメータは、最初にダンプするパーティションのIDです。デフォルトのSTART_PIDは0です。START_PIDはEND_PID以下である必要があります。
END_PIDパラメータは、ダンプする最後のパーティションのIDです。デフォルトのEND_PIDは-1で、これはデータ・セット内の最大のパーティションIDに変換されます。開始と終了のPID値が等しい場合は、単一のパーティションがダンプされます。END_PIDがSTART_PIDよりも小さい場合は、ログにエラー・メッセージが書き込まれます。
SKIP_UNSUPPORTEDパラメータは、トラック輸送制限データのダンプ方法を制御します。ユーザー・データには、将来の作業用に含まれ、現在はサポートされていないいくつかの制限が含まれます。SKIP_UNSUPPORTEDをTRUE (デフォルト)に設定すると、現在サポートされているトラック輸送制限のみダンプされます。SKIP_UNSUPPORTEDをFALSEに設定すると、すべてのトラック輸送制限がダンプされます。
この項では、ユーザー・データに関連する操作の例を示します。これらの例のデータ・セットは、San Franciscoの中心から半径100マイルの道路ネットワーク・データです。このデータ・セットには、約520,000個のノードと、トラック輸送制限のある82,000個のエッジと制限付き運転マヌーバのある30,000個のエッジを含む1,200,00個のエッジが含まれます。
この項には、次の例が記載されています。
例E-8では、右左折制限ユーザー・データを再構築します。クリーンアップはFALSEに設定されているため、右左折制限ユーザー・データの再構築に使用される中間表は削除されません。(これらの表を削除するには、SDO_ROUTER_PARTITION.CLEANUP_ROUTERプロシージャを実行します。)
例E-8 右左折制限ユーザー・データの再構築
EXEC SDO_ROUTER_PARTITION.CREATE_TURN_RESTRICTION_DATA( 'rebuild_turn_restriction_data.log', FALSE); ******** Begin generation of turn restriction user data ** Logfile location: /scratch/logs/rebuild_turn_restriction_data.log [INFO] Generating turn restriction user data for 995 partitions, data version (12.1.0.1.2) [INFO] SQL String: CREATE TABLE new_turn_restriction_data(partition_id NUMBER, num_edges NUMBER, turn_restriction_data BLOB) LOB(turn_restriction_data) STORE AS (STORAGE (INITIAL 512K NEXT 128K MAXEXTENTS UNLIMITED) CHUNK 32768 NOCACHE NOLOGGING) [INFO] ---- Writing 573 edges for partition 0 [INFO] ---- Writing 16 edges for partition 1 [INFO] ---- Writing 10 edges for partition 2 *** Note that partition 3 contains no turn restriction user data [INFO] ---- Writing 8 edges for partition 4 [INFO] ---- Writing 23 edges for partition 5 [INFO] ---- Writing 39 edges for partition 6 *** Many more Writing partition messages [INFO] ---- Writing 4 edges for partition 1023 [INFO] ---- Writing 11 edges for partition 1024 INFO: creating the final turn restriction user data table INFO: create index rtrud_p_idx on router_turn_restriction_data table ******** Completed generation of turn restriction user data
例E-9では、すべてのハード右左折制限ユーザー・データBLOBをダンプします。(ソフト制限のダンプでは、はるかに大きなダンプ・ファイルが生成され、右左折制限制約で問題をデバッグする場合にのみ役立ちます。)
例E-9 すべてのハード右左折制限ユーザー・データBLOBのダンプ
EXEC SDO_ROUTER_PARTITION.DUMP_TURN_RESTRICTION_DATA( 'dump_all_turn_restrictions.log'); ******** Beginning turn restriction dump ** Logfile location: /scratch/logs/dump_all_turn_restrictions.log ** Routeserver data version: 12.1.0.1.2 (A) ** Start partition id: 0 ** End partition id: 1024 ** Dumping soft restrictions: FALSE Starting turn restriction dump for partition 0, blob length 19956 bytes Data version: 12.1.0.1.2 Partition 0 has 573 edges with turn restrictions (B) edge id -937799058 has 1 turn restrictions Restriction Type/Attributes: Hard/None AppliesTo(959): Trucks, Through Traffic, Taxies, Motorcycles, Emergency Vehicles, Delivery Vehicles, Carpools, Buses, Automobiles Subpath(1): 24501308 ******************************* edge id -936524317 has 2 turn restrictions (C) Restriction Type/Attributes: Hard/None AppliesTo(943): Trucks, Through Traffic, Taxies, Motorcycles, Delivery Vehicles, Carpools, Buses, Automobiles Subpath(1): -724922777 ------- Restriction Type/Attributes: Hard/None AppliesTo(959): Trucks, Through Traffic, Taxies, Motorcycles, Emergency Vehicles, Delivery Vehicles, Carpools, Buses, Automobiles Subpath(1): 936524317 ******************************* edge id -932185370 has 2 turn restrictions Restriction Type/Attributes: Hard/None AppliesTo(1023): All Vehicles Subpath(1): 836074944 ------- Restriction Type/Attributes: Hard/None AppliesTo(1023): All Vehicles Subpath(1): -24638792 ******************************* edge id 834380593 has 1 turn restrictions (D) Restriction Type/Attributes: Hard/None AppliesTo(943): Trucks, Through Traffic, Taxies, Motorcycles, Delivery Vehicles, Carpools, Buses, Automobiles Subpath(4): 112065672, -112065610, -112008660, -834380591 ******************************* *** Dump of the remaining restrictions in Partition 0 Starting turn restriction dump for partition 1, blob length 520 bytes Partition 1 has 16 edges with turn restrictions (E) edge id -806530190 has 1 turn restrictions Restriction Type/Attributes: Hard/None AppliesTo(703): Trucks, Taxies, Motorcycles, Emergency Vehicles, Delivery Vehicles, Carpools, Buses, Automobiles Subpath(1): 120865027 ******************************* *** Dump of the remaining restrictions in Partition 1 through 1024
例E-9では、次のことを示しています。
(A): 標準ユーザー・ダンプ・ヘッダーには、ログ・ファイルの場所とダンプで使用されるパラメータが含まれます。SDO_ROUTER_DATA_VERSION表から問合せされるルーティング・エンジン・データ・バージョンも含まれます。このデータ・バージョンは、パーティション0のBLOBのヘッダーに格納されるデータ・バージョンと一致する必要があります。
(B): パーティション0のBLOBのBLOBヘッダー・セクションでは、すべての右左折制限ユーザー・データのBLOBヘッダーに、パーティションID、バイト単位でのBLOBの長さ、および右左折制限のあるエッジ数が含まれます。パーティション0のBLOBヘッダーにはユーザー・データ・バージョンも含まれます。このバージョンは、SDO_ROUTER_DATA_VERSION表にあるデータ・バージョンと一致する必要があります。
(C): エッジ-936524317の右左折制限のダンプでは、このエッジには2つの単純な右左折制限が関連付けられています。どちらの制限も、エッジ-936524317へのサブパスで単一エッジからの移動を許可しない単純な右左折制限です。制限が適用される車両の違いにも注意してください。最初の制限は緊急車両に適用されませんが、2つ目の制限は緊急車両にも適用されます。
(D): エッジ834380593には1つの右左折制限のみありますが、記述されている制限は単純な右左折よりもはるかに複雑です。エッジ834380593の直前のサブパスがエッジ-834380591で開始するサブパスと一致し、エッジ-112008660、-112065610、112065672を厳密にこの順序で通過する場合、マヌーバは許可されません。現在のエッジへのサブパスに、リストされているサブパス・エッジの1つがない場合、またはサブパス内のエッジの順序が異なる場合、マヌーバは許可されます。
(E): ローカル・パーティションのBLOBヘッダーでは、すべての右左折制限ユーザー・データのBLOBヘッダーに、パーティションID、バイト単位でのBLOBの長さ、および右左折制限のあるエッジ数が含まれます。
例E-10では、トラック輸送ユーザー・データを再構築します。クリーンアップではデフォルト値のTRUEが使用されるため、右左折制限ユーザー・データの再構築に使用される表は構築完了時に削除されます。
例E-10 トラック輸送ユーザー・データの再構築
EXEC SDO_ROUTER_PARTITION.CREATE_TRUCKING_DATA( 'rebuild_trucking_data.log'); ******** Begin generation of trucking user data ** Logfile location:/scratch/logs/rebuild_trucking_data.log [INFO] Generating trucking user data for 974 partitions, data version (12.1.0.1.2) (A) [INFO] SQL String: CREATE TABLE new_trucking_data (partition_id NUMBER, num_edges NUMBER, trucking_data BLOB) LOB(trucking_data) STORE AS (STORAGE (INITIAL 512K NEXT 128K MAXEXTENTS UNLIMITED) CHUNK 32768 NOCACHE NOLOGGING) INFO: creating the final trucking user data table INFO: create index rtud_p_idx on router_trucking_data table ******** Completed generation of trucking user data
例E-10では、次のことを示しています。
(A): ルーティング・エンジン・データの1,023個のローカル・パーティションに比べて、974パーティションのトラック輸送ユーザー・データしかないことに注意してください(例E-9の出力を参照)。パーティションがユーザー・データ出力にない場合、これは関連するルーティング・エンジン・データ・パーティションのトラック輸送データがないことを意味します。
例E-11は、トラック輸送ユーザー・データの制限をダンプします。この例では、パーティション0から25のサポートされる制限をダンプします。ダンプでは、Main Typeは制限のタイプ、Subtypeは制限の理由、Valueは制限を測定する手段です。たとえば、高さ制限がMain Typeの場合、SubtypeはBridgeやTunnelまたはUnknownになり、Valueは高さと幅を表すメートルや重量を表すメートル・トンなどの測定単位(常にメートル単位)になります。Valueは、物理的に測定できない制限(法定制限など)を表す0にすることもできます。
例E-11 トラック輸送ユーザー・データ制限のダンプ
EXEC SDO_ROUTER_PARTITION.DUMP_TRUCKING_DATA( 'dump_trucking_data0-25.log', 0, 25); ******** Beginning trucking data dump ** Logfile location: /scratch/logs/dump_trucking_data0-25.log ** Routeserver data version: 12.1.0.1.2 (A) ** Start partition id: 0 ** End partition id: 25 Starting truck data dump for partition 0, blob length 1019048 bytes Data version: 12.1.0.1.2 Partition 0 has 21808 edges with truck data (B) edge id -939054768 has 4 truck restrictions Main Type(10): Physical Height Restriction Sub-type(99): Unknown Value: 4.65 ******************************* edge id -854677940 has 3 truck restrictions Main Type(10): Physical Height Restriction Sub-type(1): Bridge Value: 4.67 ******************************* edge id -929320205 has 4 truck restrictions (C) Main Type(10): Physical Height Restriction Sub-type(2): Tunnel Value: 4.27 ------- Main Type(20): Physical Weight Restriction Sub-type(99): Unknown Value: 4.08 ******************************* *** The rest of the trucking data for edges in partition 0 Starting truck data dump for partition 2, blob length 296 bytes (D) Starting truck data dump for partition 3, blob length 3272 bytes Partition 3 has 91 edges with truck data edge id -811551125 has 1 truck restrictions Main Type(50): Legal Restriction Sub-type(22): All trailers forbidden Value: 0.0 ******************************* edge id 105439903 has 1 truck restrictions Main Type(20): Physical Weight Restriction Sub-type(99): Unknown Value: 9.07 ******************************* edge id -105491810 has 1 truck restrictions (E) Main Type(50): Legal Restriction Sub-type(21): All trucks forbidden Value: 0.0 ******************************* edge id -105449802 has 1 truck restrictions Main Type(50): Legal Restriction Sub-type(26): All trucks forbidden except deliveries and residents Value: 0.0 ******************************* *** The rest of the trucking data for edges in partitions 3 through 25
例E-11では、次のことを示しています。
(A): 標準ユーザー・ダンプ・ヘッダーには、ログ・ファイルの場所とダンプで使用されるパラメータが含まれます。SDO_ROUTER_DATA_VERSION表から問合せされるルーティング・エンジン・データ・バージョンも含まれます。このデータ・バージョンは、パーティション0のBLOBのヘッダーに格納されるデータ・バージョンと一致する必要があります。
(B): パーティション0のBLOBのBLOBヘッダー・セクションでは、すべての右左折制限ユーザー・データのBLOBヘッダーに、パーティションID、バイト単位でのBLOBの長さ、および右左折制限のあるエッジ数が含まれます。パーティション0のBLOBヘッダーにはユーザー・データ・バージョンも含まれます。このバージョンは、SDO_ROUTER_DATA_VERSION表にあるデータ・バージョンと一致する必要があります。
エッジ-939054768は4つのトラック輸送制限を持つものとしてリストされていますが、1つのみリストされています。他に3つの制限がありますが、現在はルーティング・エンジンでサポートされていません。これらの制限を表示するには、ダンプのリクエスト時にSKIP_UNSUPPORTEDをFALSEに設定します。
エッジ-929320205では、Height制限はBridgeが理由です。エッジ-939054768にもHeight制限がありますが、それを説明するSubtypeは指定されていません。
(C): これは複数の制限があるエッジの例です。この場合、高さ制限と重量制限の両方がメートルおよびメートル・トンで表現されます。
(D): ここでは次の2点に注意する必要があります。(1) パーティション1はありません。これはパーティション1のトラック輸送ユーザー・データがないことを意味します。(2) パーティション・ヘッダーはパーティション2に対して出力されていますが、データはダンプされていません。これは、パーティション2のトラック輸送制限があるにもかかわらず、ルーティング・エンジンが現在そのいずれもサポートしていないことを意味します。
(E): これは、モデル化できる2種類の法定制限の例です。(1) エッジ-105491810は、排他的な法定制限の例です。エッジにはすべてのトラックを禁止する法定制限があります。(2) エッジ-105449802は、含まれる法定制限の例です。エッジにはトラックを除外する法定制限がありますが、配送トラックおよび居住者用トラックの例外もリストされています。