• 検索結果がありません。

Oracle LocatorとOracle Spatial 11gのベスト・プラクティス

N/A
N/A
Protected

Academic year: 2021

シェア "Oracle LocatorとOracle Spatial 11gのベスト・プラクティス"

Copied!
16
0
0

読み込み中.... (全文を見る)

全文

(1)

Oracle Database 11g

Oracle Locator と Oracle Spatial の

ベスト・プラクティス

Oracle テクニカル・ホワイト・ペーパー

2008 年 8 月

(2)

Oracle Database 11g 2

Oracle Database 11g

Oracle Locator と Oracle Spatial の

ベスト・プラクティス

はじめに ... 3

一般的なベスト・プラクティス... 4

Oracle パッチ・セット ... 4

データ・モデリング... 4

メタデータ、トレランス、座標系 ... 4

空間データと空間索引を備えたトランスポータブル表領域 ... 6

データのロード... 6

SDO_GEOMETRY オブジェクトの SDO_POINT 属性内のポイント・

データ... 6

ジオメトリの検証... 7

空間索引の作成... 8

ローカル・パーティション空間索引 ... 9

空間問合せ... 9

アプリケーションの考慮事項... 11

ESRI ARCGIS でのベスト・プラクティス... 12

DBTUNE ファイル... 13

3D データの重要な注意点 ... 13

ESRI クライアント・ツールを使用した空間索引の作成... 14

ArcSDE の主キー ... 14

ESRI クライアント・ツールで作成されていない空間レイヤーの登録14

ArcSDE からのレイヤーの登録解除 ... 14

ESRI クライアント・ツールのパフォーマンス ... 15

(3)

Oracle Database 11g

Oracle Locator と Oracle Spatial の

ベスト・プラクティス

はじめに

このテクニカル・ホワイト・ペーパーでは、Oracle Databaseのベクトル・データを 格納するためのネイティブ・データ型であるSDO_GEOMETRYを使用したOracle LocatorとOracle Spatialのベスト・プラクティスについて説明します。また、Oracle LocatorとOracle SpatialでESRI ArcGISソフトウェアを実行するためのガイダンス を示します。

Oracle Spatial は、Oracle Locator を拡張したものです。Oracle Locator は、すべての Oracle データベースに含まれる、ロケーション機能のコアに相当します。そのため、 Oracle Locator と Oracle Spatial の両方に該当するベスト・プラクティスを説明する 際は、このドキュメントでは Oracle Locator と記載します。Oracle Spatial だけに該 当する場合は、Oracle Spatial と記載します。 このホワイト・ペーパーでは、Oracle Spatial テクノロジーを使用するアプリケー ションの設計と開発に役立つベスト・プラクティスとヒントに重点を置いて説明 します。記載されている多くの推奨事項は、Oracle Locator だけに当てはまるもの ではなく、顧客はそれぞれの環境で既存の Oracle Database に関する知識を活用で きます。 GIS、ロケーション・ツール、およびアプリケーションによってサポートされて いる標準としてのOracle Locator:すべての主要なGISおよびロケーション・サー ビス・テクノロジー・ベンダー、マッピングおよび画像データ・プロバイダは、 Oracle Locatorを直接統合しています。各ベンダーやプロバイダは、機能やパフォー マンスを落とすことなく、OracleのネイティブSDO_GEOMETRYデータ型をサポート しています。オラクルは、OGC(Open Geospatial Consortium)とISO SQL/MM標準 で提唱されている、空間とロケーション・サービス分野における最新のオープン 標準の形成、促進、実施、支持に一貫して取り組んでいます。

Oracle LocatorとOracle Spatialは、Oracle Databaseのネイティブ機能であり、空間

データを含むすべてのデータにセキュリティ、高可用性、耐障害性、管理性、パ フォーマンスを提供します。オラクルのネイティブ空間データ型を使用している ユーザーだけが、パーティション化、ローカル・パーティション空間索引、空間 索引のパーティション交換、空間データと空間索引に対するトランスポータブル 表領域のサポート、レプリケーション、Workspace Manager(バージョニングと有 効期間)、索引のパラレル作成と問合せ、空間主導マルチレベル・セキュリティ といった機能のすべての利点を最大限に活用できます。これらの機能は、LONG RAWまたはBLOBデータ型を使用すると、利用できない場合や機能が制限される場 合があります。

(4)

Oracle Database 11g 4 ます。Oracle Spatialテクノロジーは、この段落と前の段落に記載されているOracle Databaseの中核となるユーティリティと機能に統合されています。つまり、Oracle Databaseの知識があれば、Oracle Locatorを知らなくても、すでにこの機能の 80% 以上を理解していることになるのです。非空間データに使用されるのと同じOracle Databaseの中核ユーティリティ(impdp、expdp、import、export、sqlldr)は、空間デー タでも使用されます。オラクルは、企業内において空間データをメインストリー ムに押し上げ、蓄積されたOracle Databaseの知識を最大限に活用することを可能と します。

一般的なベスト・プラクティス

Oracle パッチ・セット

可能な場合は、Oracle Database の最新のパッチ・セットにアップグレードします。 これにより、Oracle Spatial の最新機能を利用することが可能となり、最適化され たパフォーマンスを得ることができます。

データ・モデリング

空間データを扱う際には、従来のRDBMSデータ・モデルの概念を適用できます。 Oracle Databaseは、文字のVARCHAR2型、日付のDATE型、数値のNUMBER型、空間 的特徴の座標を格納するためのSDO_GEOMETRYデータ型を含む、多くのデータ型 をサポートしています。 Oracle Databaseには空間データに特化した特別な表は存在せず、通常のOracle Database表に 1 つまたは複数のSDO_GEOMETRY列を設定するだけです。表を正規 化する場合は、表にSDO_GEOMETRY列を含め、その表のほかのすべての列に SDO_GEOMETRY列と1 対 1 の関係をもたせることを推奨します。 次に、道と川の空間的特徴をモデリングする例について考えます。道の情報には、 車線の数や通りの住所の範囲などがあります。川の情報には、塩度や最大深度な どがあります。これらはいずれも線形の特徴ですが、道の情報には川との関連性 がなく、川の情報には道との関連性がないので、これらの座標を 1 つの表の同じ SDO_GEOMETRY列に格納することは推奨できません。正規化データ・モデルでは、 道の空間的特徴をRoad表に格納し、そのほかの列には、道の座標との 1 対 1 の関係 をもたせます。Rivers表にも同様の正規化データ・モデルを使用することを推奨し ます。 道の情報を川の情報と別に格納すると、問合せの実行時にその利点がより明白に なります。道の情報だけを検索している場合、道と川の両方のエントリを含む表 を参照する必要はありません。

メタデータ、トレランス、座標系

表 内 の 各 SDO_GEOMETRY 列 は 、 Oracle Locator メ タ デ ー タ ・ デ ィ ク シ ョ ナ リ (USER_SDO_GEOM_METADATA)内のエントリを必要とします。このメタデータに

は次の情報が含まれます。

• SDO_GEOMETRY型の列を含む表の名前

(5)

• SDO_GEOMETRY列の軸(ディメンション)数 • 各軸の下限と上限

• 各軸のトレランス値(通常は、すべての軸に同じ値を指定) • 空間参照識別子(SRID)

各 軸 の下 限と上 限 は 、 SDO_GEOMETRY列内のデータの最小外接矩形(MBR: Minimum Bounding Rectangle)ではありません。軸の境界は、現在と将来のジオメ トリのすべてを含められる値にする必要があります。最初に定義する軸は常にX で、2 番目の軸はYです。オプションで、Z軸とメジャー軸を定義することもでき ます。測地データ(経度/緯度のデータ)を扱う場合、最初の軸は(-180、180)の 範囲で、2 番目の軸は(-90、90)の範囲でそれぞれ定義する必要があります。 一般的に、X 軸と Y 軸のトレランスは同じです。トレランスは 2 つの座標が異な る点であると見なされるための距離です。Oracle のジオメトリ検証ルーチン、空 間演算子、空間関数は、すべてトレランスを使用します。そのため、トレランス の定義は重要です。トレンラスは、データが収集される際の解像度を反映したも のになります。 経度/緯度ではないデータを格納する場合、トレランス単位は空間データに関連づ けられている座標系単位と同じです。経度/緯度データを格納する場合、トレラン ス単位はメートルです。 Oracle Locatorでサポートされているすべての座標系は、MDSYS.CS_SRSと呼ばれる ディクショナリ表に定義されています。さらに、Oracle Database 10g Release 2 では、 欧州石油調査グループ(EPSG: European Petroleum Survey Group)標準の座標系を 表すデータ・モデルが導入されています。EPSGで定義されている各座標系には、 MDSYS.CS_SRS内に対応するエントリがあります。

Oracle Locator には、事前設定済みの 1,000 を超える座標系があります。事前設定 済みの座標系は、多くのユーザーの要件を満たすものです。自分のニーズに合う 事前設定済みの座標系がない場合は、独自のカスタム座標系を追加できます。 Oracle Database 10g Release 2 以降、カスタム座標系は、Oracle Databaseで定義した EPSGデータ・モデルを使用して入力する必要があります。各カスタムEPSGエン トリは、MDSYS.CS_SRS表に自動的にエントリを生成します。カスタム座標系を 追加する方法については、『Oracle Spatial ユーザーズ・ガイドおよびリファレン ス』を参照してください。 MDSYS.CS_SRSディクショナリでは、SRIDと呼ばれる数値の主キーによって、サ ポートされている各座標系が識別されます。ディクショナリ表には、OGC(Open GIS Consortium)によって定義されているWKT(Well Known Text)文法で記述さ れた各座標系の定義も含まれています。空間データと座標系の関連付けは、空間 データとSRID値の関連付けと同様に簡単なものです。 空間データは SRID と関連づけることを推奨します。とくに、データが地理的、 つまり地球と関連している場合に推奨されます。地理的データは、測地(経度/緯 度データ)と投影(非経度/緯度データ)の 2 つのカテゴリに分類できます。Oracle Database では、測地 SRID で定義された連続するジオメトリの座標間の測地距離が 考慮されます。

(6)

Oracle Database 11g 6

空間データと空間索引を備えたトランスポータブル表領域

1 つのデータベース・インスタンスからほかのインスタンスへ、大量の空間デー タと空間索引を移動する場合、トランスポータブル表領域の使用を検討すること を推奨します。 Oracle Database 10g 以降、トランスポータブル表領域による空間索引の転送がサ ポートされています(ただし、ソース・プラットフォームとターゲット・プラッ トフォームが同じエンディアンである必要があります)。 空間索引ではなく空間データだけを転送する場合は、ソース・プラットフォーム とターゲット・プラットフォームが同じエンディアンである必要はありません。 表領域の転送を計画する際、表領域へのデータと索引のマップ方法を再検討する と、転送戦略の最適化に役立ちます。

データのロード

バルク・ロードは、従来の Oracle Database のユーティリティである sqlldr、imp、 impdp などを使用して実行できます。バルク・アンロードは、Oracle Database のエ クスポート・ユーティリティである exp、expdp などを使用して実行できます。こ れらのユーティリティでは、空間データに固有の構文を使用する必要はありませ ん。非空間データで推奨されているように、大量のバルク・ロードまたはバルク・ アンロードを実行する場合は、索引(存在する場合は空間索引も含む)を削除し てから、バルク・トランザクションを実行し、トランザクション完了後に索引を 再作成することを推奨します。バルク・ロードまたはバルク・アンロード前に索 引を削除しない場合、トランザクションの実行中も索引は維持されます。 SQL*Loaderは、空間データをロードすることはできますが、ESRIシェイプファイ ル、MapInfo Tabファイル、Autodesk DWGファイル、Microstation DGNファイルと いったGIS(Geographic Information System)ベンダー交換形式を認識しません。主要 な各GISベンダーには、それぞれの交換形式をOracleのSDO_GEOMETRY形式にイン ポートする独自のツールがあります。多数のベンダーの形式をSDO_GEOMETRYデータ 型にロードできる、Safe SoftwareのFME(Feature Manipulation Engine)のような一 般 的 な 変 換 を サ ポ ー ト す る 製 品 も あ り ま す 。 FME を 使 用 す る と 、 Oracle の SDO_GEOMETRYデータ型に格納されているデータを抽出して、FMEがサポートし ている任意のGISベンダーの形式に変換することもできます。

ESRIシェイプファイルは、非常に一般的な交換形式であるため、オラクルはシェイ プファイルをロードするための無料JavaユーティリティをOracle Technology Network に掲示しています。このユーティリティは、次のURLからダウンロードできます。 http://otn.oracle.com/products/spatial このユーティリティは優れたツールであり、広範囲にわたってテスト済みです。 このユーティリティは、シェイプファイル・ジオメトリとそれらの属性を読み取 り、レコードを Oracle 表にロード(または追加)します。

SDO_GEOMETRY オブジェクトの SDO_POINT 属性内のポイント・

データ

可能な場合は、SDO_ORDINATE属性の代わりに、SDO_GEOMETRYオブジェクトの SDO_POINT属性にポイント・データを格納します。

(7)

ジオメトリの検証

空間分析をおこなう際に正確な結果を得るには、空間データが有効である必要が あります。SDO_GEOMETRY列に空間索引がつけられている場合、空間データがそ の列に挿入される際にいくつかのチェックがおこなわれます。ただし、完全な検 証は、SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXTプロシージャ または SDO_GEOM.VALIDATE_LAYER_WITH_CONTEXTプロシージャのいずれかを実行 した場合にのみおこなわれます。 データのロード前にデータの有効性が確認された場合、検証の必要はありません。 それ以外の場合は、検証をおこなうことを強く推奨します。無効なジオメトリは、 修正または削除する必要があります。 SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXTとSDO_GEOM.VALIDATE_ LAYER_WITH_CONTEXTでは、Simple Feature Specification for SQLに基づき、OGC (Open GIS Consortium)によって定義されたルールに従いジオメトリが検証されま す。無効なジオメトリ(自己交差ポリゴンなど)が報告されると、交差している エッジなどの追加のコンテキスト情報も報告されます。追加のコンテキスト情報 は、無効なジオメトリの修正にたいへん役立ちます。 一般的な検証エラーの一部は次のとおりです。 報告されたエラー 考えられる原因と修正アクション ORA 13356 - ジオメトリ内の隣接する繰返 しポイントが冗長である トレランスの設定が粗すぎる可能性があり ます。トレランスの設定を細かくするとエ ラーを修正できます。ポイントが実際に繰り 返されている可能性があります。重複する頂 点を削除してください。 ORA 13349 - ポリゴンの境界自体が交差し ている トレランスの設定が粗すぎる可能性があり ます。トレランスの設定を細かくするとエ ラーを修正できます。ポリゴン自体が実際に 交差しています。交差するエッジをなくし て、ポリゴンを修正してください。 ORA 13367 - 内部/外部リングのローテー ションが不正である ポリゴン・リングのローテーションを修正し てください。外部リングは反時計回りに、内 部リングは時計回りにする必要があります。 検証ルーチンによって報告される追加のコンテキスト情報は、以下のルーチンに 提供することで、無効なジオメトリを修正することができます。 • SDO_UTIL.REMOVE_DUPLICATE_VERTICIES • SDO_UTIL.EXTRACT SDO_UTIL パッケージには、以下のようなジオメトリの点検に役立つユーティリ ティが含まれています。

(8)

Oracle Database 11g 8 • SDO_UTIL.GETNUMELEM - ジオメトリ内の要素の数を返します。 • SDO_UTIL.GETNUMVERTICES - ジオメトリ内の頂点の数を返します。 • SDO_UTIL.GETNUMRINGS - ジオメトリ内のリングの数を返します。 追加のユーティリティについては、ドキュメントを参照してください。

空間索引の作成

空間索引を作成する際には、以下のパラメータを指定することを推奨します。 • WORK_TABLESPACE - 空間索引の作成時に、このプロセスは、索引が完 成すると削除される中間表を作成します。中間表は、最終的な索引のサ イズの最大 2 倍のスペースを使用します。WORK_TABLESPACE を指定し ないと、中間表は最終的な索引と同じ表領域に作成され、断片化が発生 し、パフォーマンスが低下する場合があります。 SDO_TUNE.ESTIMATE_RTREE_INDEX_SIZE を使用して、得られた結果 を 2 倍し、作業表領域のサイズに関するガイダンスを提供できます。作業 表領域は、ほかの空間索引を作成するために再使用できます。 • LAYER_GTYPE - このパラメータは、とくにポイントのみのレイヤーで作 業する場合に指定する必要があります。ポイントのみのレイヤーがその ポイントをSDO_ORDINATE_ARRAYに格納する場合でも、空間索引の作成 時にLAYER_GTYPE=POINTを指定できます。これにより、空間分析実行 時の問合せのパフォーマンスが向上します。 • SDO_NON_LEAF_TBL - このパラメータは、大きな空間索引に対して指定 すると効果的です(小さな空間索引には必要ありません)。このパラメー タは、1 つではなく 2 つの空間索引を生成します。小さな空間索引表は、 非リーフ表で、空間分析中にもっとも頻繁に横断されます。非リーフ表 は、もっとも頻繁にアクセスされるので、バッファ・プールに固定する とパフォーマンスは向上します。以下の例を参照してください。 -- 索引の作成

CREATE INDEX geod_counties_sidx ON geod_counties(geom) INDEXTYPE IS MDSYS.SPATIAL_INDEX PARAMETERS ('sdo_non_leaf_tbl=TRUE'); -- 非リーフ索引表名の検索 SELECT sdo_nl_index_table FROM user_sdo_index_metadata WHERE sdo_index_name='GEOD_COUNTIES_SIDX'; --- MDNT_A930$ -- メモリに表を固定

(9)

ローカル・パーティション空間索引

パーティション化された表にローカル・パーティション空間索引をパラレル作成 する際には、次のアプローチを使用することを推奨します。このアプローチでは、 いずれかの ALTER INDEX コマンドが失敗しても、すでに正常に作成されている ローカル・パーティション索引を再構築する必要はありません。 • UNUSABLE キーワードを指定して、ローカル・パーティション空間索引 を作成します。この処理は非常に速く、索引に関連づけられているメタ データのみが作成されます。

CREATE INDEX sp_idx ON my_table (location) INDEXTYPE IS mdsys.spatial_index PARAMETERS (‘tablesapce=tb_name

work_tablespace=work_tb_name’) LOCAL UNSUABLE;

• 個々のスクリプトを作成します。仮に、100 個のパーティションと 10 個 のプロセッサがある場合は、それぞれの 10 個の ALTER INDEX REBUILD 文があるスクリプトを 10 個作成します。ただし、PARALLEL パラメータ は使用しません。次に例を示します。

• ALTER INDEX sp_idx REBUILD PARITION ip1; • ALTER INDEX sp_idx REBUILD PARITION ip2; • など • 10 個のスクリプトをすべて同時に実行します。各プロセッサは、単一の 索引パーティションを処理しますが、すべてのプロセッサは、それぞれ の ALTER INDEX 文の一連の処理も引き続きおこないます。 注:パーティション化された表に空間索引をパラレル作成する際、PARALLEL キーワードを使用することは推奨できません。これは、ローカル・パーティショ ン空間索引を作成する場合に、(表領域が一杯、またはそのほかの理由によ り)いずれかの索引パーティションの作成に失敗すると、最初からやり直す 必要があるためです(失敗した時点から続行することはできません)。

空間問合せ

Oracle Locator と Oracle Spatial には、一連の空間演算子と関数が含まれています。 空間演算子と関数のいずれでも空間分析を実行できます。違いは、演算子は空間 索引を活用しますが、関数は活用しない点にあります。

演算子には以下が含まれます。

• SDO_FILTER (search_column, window)

• SDO_RELATE (search_column, window, ‘operator specific parameters’)

• SDO_ANYINTERACT (search_colunn, window) • SDO_INSIDE (search_column, window)

(10)

Oracle Database 11g 10 • SDO_WITHIN_DISTANCE (search_column, window,

‘operator specific parameters’)

• SDO_NN (search_column, window, ‘operator specific parameters’) その以外の多くの演算子については、ドキュメントを参照してください。 関数には以下が含まれます。 • SDO_GEOM.SDO_AREA • SDO_GEOM.SDO_LENGTH • SDO_CS.TRANSFORM • SDO_LRS.PROJECT_PT それ以外の多くの関数については、ドキュメントを参照してください。 空間演算子はすべて、同様のパラメータをもっています。 • 空間演算子の 1 番目の引数は、常に検索される列であり、空間索引が作 成されている必要があります。 • 2 番目の引数は常に問合せウィンドウまたは影響範囲です。 • 3 番目の引数(ある場合)は、その演算子に固有のパラメータのリストを 含む文字列です。 空間演算子を含む SQL 文を記述する際には、オプティマイザによる、よりよい実 行計画の選択に役立つ Oracle のヒントが表示されます。Oracle のヒントは、Oracle Locator に固有のものではなく、空間演算子を含まない SQL 文の実行計画を向上 できるものであり、空間演算子を含む SQL 文の実行計画にも役立ちます。 最適な実行計画を得るには、表の問合せウィンドウ(空間演算子の 2 番目の引数) が表示されたときに常に/*+ ordered */ヒントを指定します。たとえば、次の問合せ は、5 マイル以内の汚染された鉱泉にあり、ID 値が 1 と 2 であるすべての化学プ ラントを検索します。 SELECT /*+ ORDERED */ b.chemical_plant_name FROM well_table a, chemical_plants b

WHERE sdo_within_distance (b.geom, a.geom, 'distance=5 unit=mile') = ‘TRUE’ AND a.id in (1,2); この例では、鉱泉の位置(鉱泉ID 1 および 2)が、well_tableの演算子の 2 番 目の引数に渡されます。これは、/*+ ordered */ヒントを指定する必要がある 典型的な例です。 orderedヒントを指定する場合は、FROM句へ処理順に表名を記入します。空間演 算子の 2 番目の引数を提供する表は、FROM句内で検索列を含む表の前に記載す る必要があります。この例では、well_tableは、FROM句のchemical_ plantsの前に記載されています。

(11)

空間演算子は、演算子(検索列)の最初の引数に関連づけられている表から行を 除外することで、結果の候補を絞り込みます。問合せの結果が空間演算子によっ て絞り込まれ、空間演算子の最初の引数を提供する同じ表のほかに索引づけされ た列が WHERE 句に表示される場合は、no_index ヒントの使用を推奨します。こ れは、そのほかの索引づけされた列があまり選択的ではない場合にとくに役立ち ます。 たとえば、化学プラントの問合せが、5 マイル以内の汚染された鉱泉にあり、ID 値が 1 と 2 の"クロムを処理する"すべての化学プラントを返すように変更され、 chemical_plants 表に、"T"または"F"(true または false)の値が設定された processes_ chromium という列があるとします。この場合、processes_chromium 列にビットマッ プ索引があるとしても、問合せに使用する索引としてはあまりよい選択とはいえ ません。processes_chromium 索引に no_index ヒントを提供することで、Oracle Optimizer によって選択的な空間索引と、非選択的で非空間的索引がマージするのを回避で きます。 SELECT /*+ ORDERED NO_INDEX (b processes_chromium_index_name) */ b.chemical_plant_name FROM well_table a, chemical_plants b

WHERE sdo_within_distance (b.geom, a.geom, 'distance=5 unit=mile') = 'TRUE' AND a.id in (1,2) AND processes_chromium = 'T'; オラクルは、コストベースの最適化、表と索引に関する統計情報の収集をおこな うことを推奨します。統計情報は、以下のプロシージャを実行して収集できます。 • DBMS_STATS.GATHER_TABLE_STATISTICS • DBMS_STATS.GATHER_SCHEMA_STATISTICS SDO_GEOMETRYデータ型を含む表は、その表に関する統計情報を収集することで 利点を得ることができますが、CREATE INDEXコマンドによって暗黙的に作成さ れた空間索引表に関する統計情報の収集は必須ではありません。

アプリケーションの考慮事項

可視化がアプリケーションの主要部分である場合は、この項の内容を参考にして ください。ディスプレイが遠くにズームアウトされている場合、詳細なレイヤー を有効にするのはよい方法ではありません。たとえば、米国全体を表示するよう にディスプレイがズームアウトされている場合、細かい通りの表示を有効にして も表示上のメリットはありません。このようなズーム・レベルでは、細かい通り は画面上に黒い点として表示されます。通りの表示を有効にするのは、東西 1 キ ロの地域をズームインして表示するような場合に現実的となります。

(12)

Oracle Database 11g 12 別の例を示します。非常に詳細なポリゴン領域(各ポリゴンに約 300 頂点)をも つレイヤーがあるとします。遠くにズームアウトされている場合、このような詳 細なポリゴンを表示しても意味がありません。このようなポリゴンの多くの座標 は、ごくわずかなピクセルとして表示されてしまうため、ポリゴンの詳細はわか りません。より現実的なシナリオは、適度な範囲にズームインされているときに ズーム・コントロールを使用して、詳細なポリゴンの表示を有効にすることです。 別の現実的なアプローチは、汎用レイヤー(詳細なポリゴンの汎用バージョン) を作成することです。汎用レイヤーは、遠くにズームアウトされているときに表 示され、詳細なレイヤーは、より近くにズームインされているときに表示されま す。 ズーム・コントロールと汎用レイヤーの使用は、表示アプリケーションではよく知 られている概念です。ズーム・コントロールと汎用レイヤーを正しく使用するこ とで、パフォーマンスをさらに向上できます。詳細な各ジオメトリの座標の大部 分は、ごくわずかなピクセルとして表示されてしまうので、サーバーから詳細な ジオメトリを不必要にフェッチすることは、とくに避ける必要があります。

ESRI ARCGIS でのベスト・プラクティス

ESRI は、ESRI とオラクルの(共通の)数千の顧客に対して、Oracle Database を 12 年以上サポートしてきています。ESRI は、1995 年以来、すべての Oracle Database リリースのベータ・サイトとなっています。

ESRIのGeodatabaseは、Oracle LocatorとOracle Spatialを完全にサポートしており、 ArcGISの機能と実環境のアプリケーションで必要とされるパフォーマンスを備え ています。膨大な相互の顧客ベースが、このことを実証しています。パフォーマン スは、GITA(Geospatial Information Technology Association)の 2008 年度のGeospatial Infrastructure Solutions Conferenceにおいて、Idea IntegrationのKevin S. Larson氏が発 表した論文『Spatial Database Speed Comparisons』に数値で示されています。 この論文の目的は、ESRI ArcGIS でもっとも優れたパフォーマンスを発揮するデー タベースとデータ型を判定することにありました。ESRI SDE on Oracle Database で サポートされているすべてのデータ型を使用して、ESRI ArcGIS version 9.2 を Oracle Database 10.2.0.3 でテストしています。この調査では、異なる地理的領域とデータ 規模に分布するさまざまな密度で、ホット・キャッシュとコールド・キャッシュ、 優れたポイントの表現、ラインとポリゴン・データ、空間データをテストしてい ます。ジオメトリ・データのみを伴う空間データだけの問合せや、ジオメトリ・ データとリレーショナル・データの両方を伴うビジネス問合せといった 2 つの セットの問合せのワークロードが実行されました。

この調査では、Oracle LocatorとそのネイティブOracle SDO_GEOMETRYデータ型の 組合せが、ESRI ArcGIS on Oracle Databaseに対してもっとも一貫性があり、スケー ラブルなパフォーマンスを提供することがわかりました。また、大きなデータ・ セット(より小さなデータ規模)に対して大幅なパフォーマンスの向上を示し、 デ ー タ 密 度 が 少 な い 場 合 に は 事 実 上 同 じ パ フ ォ ー マ ン ス を 示 し ま し た 。 SDO_GEOMETRYのパフォーマンス上の利点は、空間のみの問合せでより明白にな ります。これらの結果は、顧客から報告された結果と一致しています。

(13)

次は、カスタマー・エクスペリエンスによって確定された、ESRI ArcGIS と Oracle Locator をチューニングするための具体的なベスト・プラクティスをいくつか説明 します。

DBTUNE ファイル

以下は、SDO_GEOMETRY機能クラスに関連づけられているDBTUNEキーワードに 追加するための推奨属性です。次に示す値は例です。属性値は、自分のSDO_GEOMETRY 機能クラスに適した値を設定する必要があります。 データにポイントごとの値、たとえば(x、y)とメジャー(xyz)がある場合は、 DBTUNEキーワードにSDO_LB_3属性、SDO_UB_3属性、SDO_TOLERANCE_3属性 を必ず追加してください。データにポイントごとに 4 つの数値、たとえば(x、y、 z)とメジャーがある場合は、DBTUNEキーワードにSDO_LB_4属性、SDO_ UB_4属性、SDO_TOLERANCE_4属性を必ず追加してください。

3D データの重要な注意点

• データが 3Dの場合は、ジオメトリを調べて、Z縦座標が常に 0 であるか どうかを確認します。これは、CADデータをSDO_GEOMETRYにロードする ユーティリティを実行した結果として生じることがあります。Z縦座標が 常に 0 の場合は、ジオメトリからすべてのZ縦座標を削除することを推奨 します。Z縦座標を削除しない場合、3 分の 1 を超える必要以上のジオメ トリ・データがネットワーク上に転送されます。つまり、Z縦座標の転送 には、その値が常に 0 の場合でも時間がかかります。 • CADデータをSDO_GEOMETRYにロードするユーティリティには、通常、 データを 2Dとしてアップロードするための設定フラグがあります。 SDO_INDEX_SHAPEでは、ESRIクライアント・ツールがSDO_GEOMETRY機能クラ スの空間索引を作成するシナリオのSDO_GEOMETRY CREATE INDEXパラメータ を指定できます。 GEOMETRY_STORAGE "SDO_GEOMETRY" SDO_DIMNAME_1 "x" SDO_DIMNAME_2 "y" SDO_LB_1 -180.000000 SDO_LB_2 -90.000000 SDO_SRID 8307 SDO_TOLERANCE_1 0.05 SDO_TOLERANCE_2 0.05 SDO_UB_1 180.000000 SDO_UB_2 90.000000 SDO_VERIFY "FALSE" SDO_INDEX_SHAPE "tablespace=value WORK_TABLESPACE=value etc.." DBTUNEパラメータは、データベースに格納されています。現在のDBTUNEファイ ルを抽出するには、次のコマンドを実行します。これで、dbtune_orig.outin SDEHOME¥etc¥dbtune.origというファイルが配置されます。

(14)

Oracle Database 11g 14 sdedbtune -o export -f dbtune_orig.out -u sde -p

sde_password

copy dbtune_orig.out dbtune.out

上述のSDO_GEOMETRYに固有のDBTUNEパラメータをdbtune.outファイルに追加 します。次に、新しいdbtune.outファイルをデータベースにロードします。次 を参照してください。

sdedbtune -o import -f dbtune.out -u sde -p sde

ESRI クライアント・ツールを使用した空間索引の作成

索引作成のベスト・プラクティスを参照してください。ESRIクライアント・ツー ルでデータをロードする場合、通常、オプションで空間索引を作成するかしない かを選択できます。ESRIクライアント・ツールで空間索引を作成する場合は、こ のドキュメントのDBTUNEの項で説明してあるDBTUNE属性を適切に設定してくだ さい。とくに、空間索引の作成に関係する属性は重要です。

ArcSDE の主キー

ArcSDE では、登録されているすべて表の NUMBER(38)型として宣言されている 数値列に一意な索引が必要となります。

ESRI クライアント・ツールで作成されていない空間レイヤーの登録

以下は、ESRI クライアント・ツールと ArcSDE データ・ディクショナリ表で作成 していない空間レイヤーを登録するポイント、ライン、ポリゴンの例です。 • ポイントの例

sdelayer -o register -l bts,shape -e p -C oid_,USER -i esri_sde -u oracle_username -p oracle_password

• ラインの例

sdelayer -o register -l road_geo,shape -e sl+ - C objectid,USER -i esri_sde -u oracle_username - p oracle_password

• ポリゴンの例

sdelayer -o register -l buildings,shape -e a+ - C objectid,USER -i esri_sde -u oracle_username - p oracle_password

ArcSDE からのレイヤーの登録解除

ESRIクライアント・ツールでレイヤーを作成した場合、sdelayer -o deleteを 指定すると、表が登録解除されて削除されます。

(15)

ESRIクライアント・ツールで表を作成していない場合、sdelayer -o deleteを 指定すると、レイヤーが登録解除され、USER_SDO_GEOM_METADATA内のエント リが削除されますが、表は削除されません。空間レイヤーを再登録する場合は、

USER_SDO_GEOM_METADATAを再移入する必要があります。

次に、ビルディング・レイヤーの登録解除の例を示します。 sdelayer -o delete -l buildings,shape -i esri_sde -u oracle_username -p oracle_password

ESRI クライアント・ツールのパフォーマンス

ESRIクライアント・ツールのパフォーマンスに疑問を感じる場合は、まず索引作 成のベスト・プラクティスを参照してください。次に、ほかの視覚化ツールを使 用してレンダリングをおこない、ツールセット間で動作が一致しているかどうか を確認します。ツール間でパフォーマンスの相違がある場合、このドキュメント のベスト・プラクティスを参照して、ESRI/SDO_GEOMETRY環境を最適な状態に してください。

Oracle Database 11gでは、空間索引をもつSDO_GEOMETRY列における編集のパ フォーマンスが大幅に向上しています。これもテストする価値がある領域です。

(16)

Oracle Locator と Oracle Spatial 11g のベスト・プラクティス 2008 年 8 月 Oracle USA World Headquarters 500 Oracle Parkway Redwood Shores, CA 94065 U.S.A. 海外からのお問い合わせ窓口: 電話:+1.650.506.7000 ファクシミリ:+1.650.506.7200 www.oracle.com

Copyright © 2008, Oracle. All rights reserved.

本文書は情報提供のみを目的として提供されており、ここに記載される内容 は予告なく変更されることがあります。本文書は一切間違いがないことを保 証するものではなく、さらに、口述による明示または法律による黙示を問わ ず、特定の目的に対する商品性もしくは適合性についての黙示的な保証を含 み、いかなる他の保証や条件も提供するものではありません。オラクル社は 本文書に関するいかなる法的責任も明確に否認し、本文書によって直接的ま たは間接的に確立される契約義務はないものとします。本文書はオラクル社 の書面による許可を前もって得ることなく、いかなる目的のためにも、電子 または印刷を含むいかなる形式や手段によっても再作成または送信すること はできません。Oracle は米国 Oracle Corporation およびその子会社、関連会 社の登録商標です。その他の名称はそれぞれの会社の商標です。

参照

関連したドキュメント

断面が変化する個所には伸縮継目を設けるとともに、斜面部においては、継目部受け台とすべり止め

Vondrák: Optimal approximation for the submodular welfare problem in the value oracle model, STOC 2008,

(a) 主催者は、以下を行う、または試みるすべての個人を失格とし、その参加を禁じる権利を留保しま す。(i)

このマニュアル全体を読んで、Oracle Diagnostics Pack に同梱の Oracle Performance Manager、Oracle Capacity Planner、Oracle TopSessions および Oracle Event

えて リア 会を設 したのです そして、 リア で 会を開 して、そこに 者を 込 ような仕 けをしました そして 会を必 開 して、オブザーバーにも必 の けをし ます

① 新株予約権行使時にお いて、当社または当社 子会社の取締役または 従業員その他これに準 ずる地位にあることを

創業当時、日本では機械のオイル漏れを 防ぐために革製パッキンが使われていま

Oracle WebLogic Server の脆弱性 CVE-2019-2725 に関する注 意喚起 ISC BIND 9 に対する複数の脆弱性に関する注意喚起 Confluence Server および Confluence