大規模ラスタ データセットの ArcSDE への読み込み

このトピックは、ArcEditor および ArcInfo にのみ適用されます。

データの性質を考えると、ラスタは大きくなる傾向にあります。ラスタ データセットやラスタ カタログが数ギガバイト(GB)以上になることも多く、データベース管理システム(DBMS)内で数テラバイト(TB)を占めるケースもあります。大きなサイズのラスタ データへの対処は、経験豊富なデータベース管理者(DBA)にとっても難問です。このトピックでは、大量のラスタ データをラスタ データセットまたはラスタ カタログに読み込むための基本的な手順について説明します。ここでは、ArcSDE ジオデータベースにラスタを格納することを前提とします。

大規模なラスタ データセットを構築するための主なプロセスは、データの読み込み準備、データの読み込み、最終結果の確認の 3 つです。これらのプロセスは以下のタスクで構成されます。

データを読み込む準備

  1. システムを構成する
  2. DBMS の格納領域のサイズを推定する
  3. DBMS の格納領域を割り当てる

データの読み込み

  1. データ ソースを準備する
  2. ラスタ オブジェクトを作成する
  3. ラスタ データをラスタに読み込む
  4. DBMS 統計情報を構築する
  5. ラスタ統計情報を構築する

検証と確認

  1. 最終的な結果を確認する

システムを構成する

システムの構成には 2 つの目的があります。DBMS の構成と ArcSDE の構成です。

DBMS パラメータの構成

Esri によってサポートされる各 DBMS の構成はそれぞれ異なりますが、基本的な目的は同じです。それは、データベースへのデータ スループットをできるだけ改善することです。大量のラスタ データを読み込むには、DMBS の書き込みパフォーマンスを最適化する必要があります。ただし、数百 GB 以上のラスタ データを読み込むために DBMS システムを最適化すると、他のタスクを実行するために同じリソースを使用する他のアプリケーションのパフォーマンスを低下させる可能性があります。このため、DBMS がラスタ データの読み込み専用ではない場合は、システムを再構成して、ラスタ データをピーク時以外の時間帯に読み込んで他のユーザの作業に影響をおよぼすことを避けるか、またはラスタ データの読み込み専用の DBMS を別に作成することを検討します。

SQL Server、Oracle、および DB2 にラスタ データを格納するためのガイドラインがあります。次に、これらのガイドラインに含まれている情報のポイントをまとめます。

SQL Server DBMS パラメータの構成

  • SQL Server によって消費されるリソースは、サーバ上で他のアプリケーションが実行されている場合にのみ管理します。
  • 軽量プーリングを使用して、スレッド コンテキスト スイッチの数を削減します。
  • 可能であれば、データベース復元モデルを「単純」に設定します。これは、ラスタ データセットの読み込み時に特定の時点に復元する必要はなく、すべてのログを記録するとログが不必要に大きくなるためです。
  • autoclose と autoshrink はパフォーマンスを低下させる可能性があるため、無効にします。

詳細については、「SQL Server に格納されたジオデータベースのラスタ データセットとラスタ カタログ」をご参照ください。

Oracle DBMS パラメータの構成

  • オンライン Redo ログ スイッチでのみチェックポイント間隔が適用されるように、Oracle 初期化パラメータ LOG_CHECKPOINT_INTERVAL および LOG_CHECKPOINT_TIMEOUT を 0 に設定します。この設定により、チェックポイントがログ スイッチの際に強制的に適用されます。
  • オンライン Redo ログ ファイルのサイズをそれぞれ少なくとも 1GB に増加します。
  • DB_BUFFER_CACHE のサイズを増加することにより、ダーティ ブロックを格納するためのデータ ブロック バッファ キャッシュを増やします。
  • 8KB のデータ ブロック サイズで Oracle データベースを作成します。これは、すべての ArcGIS バイナリ データの基本的なデフォルト ストレージ タイプになっている BLOB データを格納するための最適なデータ ブロック サイズです。16KB または 32KB の大きなデータ ブロックを使用すると、BLOB ログ セグメントの領域が浪費されます。BLOB ストレージをよく理解するには、Oracle のマニュアルをご参照ください。

詳細については、「Oracle に格納されたジオデータベースのラスタ データセットとラスタ カタログ」をご参照ください。

DB2 DBMS パラメータの構成

  • ラスタ表領域のためのバッファ プールを別に作成します。
  • ラスタ ブロック テーブルを格納する表領域のための大きなバッファ プールを作成します。
  • DB2 が AIX プラットフォームにインストールされている場合は、次のパラメータを設定します。

  • db2set DB2_MMAP_READ=OFF
  • db2set DB2_MMAP_WRITE=OFF

詳細については、「DB2 に格納されたジオデータベースのラスタ データセットとラスタ カタログ」をご参照ください。

Informix DBMS パラメータの構成

onconfig パラメータを構成します。

  • BUFFERS を十分に大きな値に設定して、クリーン機能に先行するようにします。
  • LOGSIZE を 100000 に設定します。
  • 物理ログが rootdbs dbspace に作成されていないことを確認します。
  • LOG_BACKUP_MODE を設定して、論理ログを継続的にバックアップします。
  • LOGSMAX を 100 に設定します。
  • RA_PAGES を 125 に設定します。
  • RA_THRESHOLD を 85 に設定します。
  • RESIDENT を-1 に設定します。
  • ダイレクト コネクションを使用する場合は、NETTYPE を任意のリモート接続に設定します。

詳細については、「Informix に格納されたジオデータベースのラスタ データセットとラスタ カタログ」をご参照ください。

ArcSDE サーバの構成

ArcSDE は、転送バッファを使用して、ArcSDE クライアントと ArcSDE サーバ間でデータを転送します。書き込み処理の過程でクライアント側のデータ バッファが閾値に達すると、ArcSDE サーバにバッファが送信されます。ArcSDE サーバがそのバッファを処理する間、ArcSDE クライアントはバッファにさらにデータを追加することができます。閾値に達するとクライアントはバッファを再び送信しますが、この操作は ArcSDE サーバが待機状態の場合にのみ実行されます。ラスタ データの場合、転送バッファのサイズは ArcSDE の RASTERBUFSIZE サーバ パラメータによって制御されます。このパラメータはデフォルトで 200KB に設定されますが、ほとんどの読み込み操作にはこのサイズで十分です。ArcSDE は、RASTERBUFSIZE によって指定された値の 2 倍のメモリ サイズを、ArcSDE クライアントとサーバの両方に割り当てます。したがって、200KB のデフォルト値を使用すると、クライアント上で 400KB、サーバ上で 400KB が割り当てられます。転送バッファに加えて、ArcSDE は DBMS のデータの読み書き用に、サーバ上でさらに 3 つのバッファを割り当てます。これにより、サーバに割り当てられるメモリの合計量は 1000KB に増えます。ダイレクト コネクションを使用している場合、ArcSDE クライアントとサーバの機能はクライアント コンピュータで実行されます。このため、ダイレクト コネクションによって割り当てられるメモリは、RASTERBUFSIZE によって指定されたサイズの 7 倍になります。RASTERBUFSIZE のサイズを変更する必要があるのは、デフォルト サイズがラスタ タイルの非圧縮サイズを保持するのに十分でない場合だけです。ラスタ タイルの非圧縮サイズを計算するには、タイル幅とタイルの高さを掛けた後、ピクセル深度に応じて調整します。たとえば、タイル幅とタイルの高さにデフォルトの 128 x 128 を使用する場合、これら 2 つの値の積は 16,384 になります。この積に次の表のピクセル深度係数を掛けて、ラスタ タイルの非圧縮サイズを割り出します。ピクセル深度が 32 の場合、非圧縮サイズは 65,536 バイトになります。これはデフォルトの 200KB 値をはるかに下回ります。ただし、タイル サイズを 256 x 256 に増加すると、非圧縮サイズは 262,144 バイトに増えます。この場合、RASTERBUFSIZE パラメータのサイズを増加しないと、SE_RASTER_BUFFER_TOO_SMALL (-294)エラーが発生する危険性が高まります。この場合は、RASTERBUFSIZE のサイズを約 300KB に増加する必要があります。

ピクセル深度

ピクセル深度係数

1 ビット

0.125

4 ビット

0.25

8 ビット

1

16 ビット

2

32 ビット

4

64 ビット

8

ピクセル深度に対応するピクセル深度係数のリスト
RASTERBUFSIZE パラメータの設定を変更するには、ArcSDE の sdeconfig 管理コマンドを alter オプションで使用します。

sdeconfig -o alter -v RASTERBUFSIZE=10240000 -u sde -p esri

この処理により、SDE.SERVER_CONFIG テーブルの値が変更されます。新しい値は、パラメータが変更された後に接続するすべての ArcSDE セッションに影響します。

ラスタ タイルの非圧縮サイズを格納するのに必要なサイズ以上に、RASTERBUFSIZE パラメータの値を増やさないでください。このパラメータの値が大きすぎると、システムでのラスタ データセットのフローに悪影響をおよぼす可能性があります。

接続アーキテクチャ

ピラミッドの構築は、プロセッサに集約するマルチスレッド操作です。このタスクは、ArcSDE サーバ機能によって実行されます。クライアント/サーバ アーキテクチャにおいて CPU の性能が最も高いコンピュータにサーバ機能を配置すると、データベースへのラスタ データのスループットが向上します。CPU の性能は、CPU の数とそれらのプロセッサ速度の積によって決定されます。

サーバ機能は、ArcSDE サービスに接続する場合には、サーバ コンピュータ上でスタンドアロンで実行されるか、ダイレクト コネクションを使用する場合には、クライアント アプリケーション(ArcCatalog など)に埋め込むことができます。

ラスタ データセットの読み込みにダイレクト コネクションを使用するかどうかの判断は、クライアント コンピュータと ArcSDE サーバをホストしているサーバ コンピュータのどちらの CPU 性能がより高いかによって決まります。クライアント コンピュータでピラミッドを構築するほうが効果的であれば、ダイレクト コネクションを使用します。

また、サーバ コンピュータでピラミッドを構築する場合は、ArcSDE サービスをホストするサーバ コンピュータの負荷についても考慮する必要があります。クライアント コンピュータよりも高性能であったとしても、他のアプリケーションからのリクエストに対処することで、すでに限界に近づいているかもしれません。サーバ コンピュータの容量に余裕があり、クライアント コンピュータよりも高性能である場合は、ArcSDE サービスに接続します。

DBMS の格納領域のサイズを推定する

大きなラスタ データの読み込み作業を開始する前に、DBMS の格納領域を整理することが推奨されます。そのためには、ラスタ データをデータベースに格納するために必要な領域と、イメージ ファイルを読み込む前のステージングに必要な領域を推定する必要があります。必要なディスク領域を推定したら、DBMS の領域を割り当て、ArcSDE の DBTUNE パラメータを設定し、ラスタ データの読み込みを開始することができます。

ラスタ ブロック テーブルは、ラスタのテーブルとインデックスの中でも群を抜く大きさです。一般に、次に大きな DBMS オブジェクト(ラスタ ブロック テーブルのコンポジット インデックス)の 150 倍のサイズです。残りのラスタ オブジェクト テーブルとインデックスは数千分の一のサイズで、通常はラスタ ブロック テーブルのコンポジット インデックスとともに単一の DBMS 格納領域にまとめられます。ラスタ ブロック テーブルはその他すべてのオブジェクトよりもはるかに大きいため、ラスタ データのサイズを推定するタスクはラスタ ブロック テーブルに集中します。

ラスタ データセットおよびラスタ カタログの場合、ピクセル データは BLK テーブルの DBMS 内に格納されます。一方、モザイク データセットはラスタ データセットを参照し、BLK テーブルにピクセル データが格納されません。モザイク データセットの概観図が DBMS に保存されない限り、BLK テーブルは空のままになります。

ラスタ ブロック テーブルがデータベースで占める容量を見積もるための基本的な手法が 2 つあります。1 つは、いくつかのサンプル イメージを読み込み、サンプルが占める容量からラスタ ブロック テーブルがデータベースで占める合計容量を見積もる方法です。もう 1 つは、予測されるラスタ オブジェクトのプロパティを入力として受け取る式に基づいて、必要な領域を計算する方法です。通常は、1 つ目の方法のほうが 2 つ目よりもよい結果が得られますが、2 つ目の方法はデータベースの構築前にソース データがすぐに利用できない場合に役立ちます。ラスタ ブロック テーブルのサイズを正確に見積もるには、ラスタ ブロック テーブルのサイズに影響をおよぼす次の特性を事前に特定する必要があります。

ラスタ データセットの基本情報収集の詳細

サンプルに基づくラスタ ブロック テーブルの見積り

ArcCatalog で多数のサンプル ラスタ データセットを読み込み、小さなラスタ オブジェクトを作成します。このラスタ オブジェクトには、それが表す最終的なラスタ オブジェクトと同じ圧縮タイプ、圧縮品質、ピクセル深度、バンド数、およびタイル サイズを使用します。これらのラスタ プロパティは、データベース内のラスタ オブジェクトの格納サイズに影響します。

サンプル ラスタ データを ArcCatalog で読み込んだ後、ラスタ オブジェクト ブロック テーブルが占めるデータベース容量を測定します。

Oracle の場合は、USER_TABLES システム テーブルの BLOCKS 列で、オブジェクトのラスタ ブロック テーブルを検索します。そのためには、まずラスタ オブジェクトのラスタ ブロック テーブルの名前を割り出す必要があり、それには SDE.RASTER_COLUMN テーブルから rastercolumn_id を取得する必要があります。

注意注意:

このドキュメントの次の例では、サンプル ラスタ オブジェクトのビジネス テーブルが EARTH であることを前提とします。

  1. ラスタ オブジェクトの rastercolumn_id を取得します。
    SQL> select rastercolumn_id from sde.raster_columns where table_name = 'EARTH';
    
    RASTERCOLUMN_ID =--------------- 14
  2. 次のクエリを使用して、ラスタ ブロック テーブルのサイズを取得します。
    SQL> exec dbms_stats.gather_table_stats (NULL,'EARTH'); SQL> select sum(length(rasterband_id)) + sum(length(rrd_factor)) + sum(length(row_nbr)) + sum(length(col_nbr)) + sum(length(block_data)) "total size" from sde_blk_14; total size =----------- 762707968

    ラスタ ブロック テーブルの合計サイズは 762,707,968 バイト(約 727MB)になります。

  3. サンプル ラスタ データセットのサイズと、読み込みの対象となるすべてのソース ラスタ データセット ファイルの合計サイズとの比率を計算します。このサンプルのサイズは 2GB ですが、データ ベンダはラスタ データセット ファイルの合計サイズを約 3TB としています。

    まず、3TB の合計ファイル サイズをギガバイトに変換します。

    3TB * 1024 = 3072GB

    合計ラスタ データセット サイズとサンプル サイズの比率は次のように計算されます。

    (合計ラスタ データセットのサイズ)/(サンプル ラスタ データセットのサイズ)=(合計サイズとサンプル サイズの比率)

    例を次に示します。

    3072 / 2 = 1536

  4. ラスタ データセットの合計サイズとサンプル サイズの比率に、データベースに格納されているサンプルのサイズを掛けると、ラスタ オブジェクトのすべてのラスタ データセット ファイルを格納するために必要な合計ディスク容量の概算が得られます。
    727MB * 1536 = 1,116,672MB = 1090GB = 1.06TB

SQL Server でのサンプル サイズを割り出すには、まずサンプル サイズを取得して、次に上記のステップ 3 に進みます。

  1. ラスタの rastercolumn_id を取得します。
    1> select rastercolumn_id 2> from sde.sde_raster_columns 3> where table_name = 'EARTH';
    
    rastercolumn_id =-------------- 3
  2. この ID を使用して、サンプル データによって使用される容量を割り出します。
    1> exec sp_spaceused 'sde_blk_3'; 2> go name        rows   reserved   data       index_size  used =-------------------------------------------------------------- SDE_blk_3   4233   29712 KB   29632 KB   16 KB       64 KB

    この場合、元のラスタ データセットのサイズは 50MB ですが、読み込んだ後に使用される容量は約 29MB(29,632KB + 16KB = 29,648KB)となります。

式に基づくラスタ ブロック テーブルの推定

次の手法では、ラスタ ブロック テーブルのサイズの概算が得られます。ソース データが一部またはすべて利用できる場合は、サンプルに基づく推定のほうが正確なので、その方法でラスタ ブロック テーブルの推定値を取得してください。

  1. 範囲の概算をメートルまたはフィート単位で取得します。ラスタ データセットのピクセル解像度がメートル(5 メートル、15 メートル、または 150 メートルなど)の場合は、これらの単位での概算を取得します。同様に、解像度がフィートまたはインチで表される場合は、それらの単位で範囲を取得します。範囲を取得するには、ArcMap を使用して、画像範囲のポリゴン アウトラインを作成することができます。ジオデータベースは空のブロックを格納しないため、隙間をできるだけなくす必要があります。
  2. 範囲をピクセルに変換します。

    (ピクセル単位でのラスタの範囲)/(ピクセル解像度)= ピクセル数

    15 メートルの解像度と 450 平方キロの範囲を持つソース ラスタ データセットの場合、ピクセルへの変換は次のように計算されます。

    (km2 から m2 への変換係数)/(m2 で表されたピクセル解像度) = ピクセル(450 km2 * 1,000,000)/(15 x 15) = 2,000,000 ピクセル

    別の例として、1 フィート解像度の 50 平方マイルについて考えてみます。推定されるピクセル範囲はおよそ次のようになります。

    (mi2 から ft2 への変換係数)/(ft2 で表されたピクセル解像度) = ピクセル(50 mi2 * 52802)/(1 x 1) = 1,393,920,000 ピクセル
  3. バンド数を掛けます。シングルバンド グレースケールまたは白黒ラスタ データセットの場合は、この手順を省略することができます。この例では、ステップ 2 の 15 メートルのデータが 3 つのバンド(RGB を表す)を持つと想定します。
    2,000,000 ピクセル範囲 * 3 バンド = 6,000,000 ピクセル
  4. 次の表のピクセル深度係数を適用して、バイトに変換します。

    ピクセル深度

    バイト係数

    1 ビット

    0.125

    4 ビット

    0.25

    8 ビット

    1

    16 ビット

    2

    32 ビット

    4

    64 ビット

    8

    ピクセル深度に対応するピクセル バイト係数のリスト
    8 ビット データ: 6,000,000 ピクセル * 1 = 6,000,000 バイト/10242 = 5.7MB 16 ビット データ: 6,000,000 ピクセル * 2 = 12,000,000 バイト/10242 = 11.4MB
  5. ピラミッドを追加します。低解像度ピラミッドは、ラスタのサイズを 3 分の 1 増加します。このため、ステップ 4 のバイト カウントに 1.33 を掛けます。
    5.72MB * 1.33 = 7.67MB
  6. ラスタの圧縮を適用します。次の表は、特定の圧縮と品質に対して、領域の節約がどれくらい見込まれるかを示しています。正確な値は、使用されるデータに応じて異なります。

    圧縮タイプ

    圧縮係数

    LZ77

    0.5

    JPEG 75%

    0.15

    JPEG 50%

    0.1

    JPEG 2000 80/100

    0.36

    JPEG 2000 60/100

    0.15

    JPEG 2000 55/100

    0.11

    JPEG 2000 50/100

    0.07

    JPEG 2000 45/100

    0.06

    圧縮タイプと圧縮係数
  7. ステップ 5 の例を拡張して、50%の品質で JPEG 圧縮を適用するには、バイト カウントに 0.1 の圧縮係数を掛けます。
    7.67MB * 0.1 = 0.77MB
  8. DBMS のオーバーヘッドとラスタ ブロック テーブルの整数列の推定値を増加します。ステップ 7 の値は、ラスタ ブロック テーブルに格納されたピクセル データに必要な、絶対領域のサイズの推定値です。ピクセルは、ラスタ オブジェクトを作成する際に選択したタイル サイズに基づいてブロックに分割されます。これらのピクセル ブロックは、データベース データ ブロックに格納されます。ラスタ ブロックは、圧縮の可変性を考えると、完全には適合しません。常に一定量の未使用ブロック スペースが存在します。さらに、ラスタ ブロック テーブルには、ピクセル BLOB 列とともに、各ブロックを一意に識別するための 4 つの整数列も格納されます。整数列は、格納領域のオーバーヘッドを増加させます。DBMS のオーバーヘッドとラスタ ブロック テーブルの整数列を考慮して、ステップ 7 の推定値を少なくとも 10 %増やします。

DBMS の格納領域を割り当てる

DBMS の格納領域の作成方法は、その管理方法によって異なります。DBMS によっては、データベースのデータ ファイルを移動できる場合があり、すべてのラスタ テーブルとインデックスを 1 つの場所に格納することができます。データの移動に関心がない場合は、サイズに基づいて、格納領域(ブロック テーブルとそのインデックスのための大きな領域と、他のラスタ テーブルとそれらのインデックスのための小さな領域)を作成します。

DBMS によっては、格納領域を自動的に拡張できる場合がありますが、読み込み時の拡張のオーバーヘッドを避けるために、あらかじめ領域を割り当てるようにしてください。データの格納要件の推定に基づき、領域を割り当てます。

Oracle DBMS の格納領域の作成

SQL Server DBMS の格納領域の作成

DB2 DBMS の格納領域の作成

Informix DBMS の格納領域の作成

DBTUNE キーワードの構成

SDE.DBTUNE テーブルは、データベース内にテーブルとインデックスを作成するために ArcSDE によって使用される格納パラメータを保持します。格納パラメータはキーワードによって分類されます。ラスタなどのジオデータベース オブジェクトの構築時に DBTUNE キーワードを指定することにより、ジオデータベース オブジェクトのテーブルやインデックスをどのように作成し、どのデータベース格納単位で配置するかを指定します。

ラスタのテーブルとインデックスの組み合わせごとに、DBTUNE 格納パラメータが定義されています。新しいキーワードと各格納パラメータの仕様を追加することにより、SDEHOME/etc/dbtune.sde ファイルを編集します。次に、その例を示します。sdedbtune コマンドを使用して、SDE.DBTUNE テーブルを更新します。

DBMS によって格納パラメータは異なります。次に、11 種類の Oracle DBTUNE パラメータを示しますが、これらの多くは他の DBMS にも共通しています。

  • ビジネス テーブルの格納パラメータは B_STORAGE であり、ビジネス テーブルが ArcSDE に登録された RowID 列を持つ場合、そのインデックスの格納パラメータは B_INDEX_ROWID です。ラスタ データセットのビジネス テーブルの行は 1 つだけです。ラスタ カタログのビジネス テーブルは一般的に小さく、ラスタ データセットごとに行を 1 つ格納します。

    次に、B_STORAGE パラメータと B_INDEX_ROWID パラメータの例を示します。

    B_STORAGE "PCTFREE 0 INITRANS 4 TABLESPACE EARTH" B_INDEX_ROWID "PCTFREE 0 INITRANS 4 TABLESPACE EARTH"

  • ラスタ テーブルの格納領域は RAS_STORAGE パラメータによって制御され、そのテーブルの raster_id インデックスの格納領域は RAS_INDEX_ID パラメータによって制御されます。ラスタ データセットのラスタ テーブルの行は 1 つだけです。ラスタ カタログのラスタ テーブルは一般的に小さく、ラスタ データセットごとに行を 1 つ格納します。

    次に、RAS_STORAGE パラメータと RAS_INDEX_ID パラメータの例を示します。

    RAS_STORAGE "PCTFREE 0 INITRANS 4 TABLESPACE EARTH" RAS_INDEX_ID "PCTFREE 0 INITRANS 4 TABLESPACE EARTH"

  • ラスタ バンド テーブルは、BND_STORAGE パラメータに従って格納されます。BND_INDEX_ID パラメータは rasterband_id インデックスの格納領域を制御し、BND_INDEX_COMPOSITE パラメータは sequence_nbr 列と raster_id 列のコンポジット インデックスの格納領域を制御します。ラスタ バンド テーブルは、一般にラスタ オブジェクトのラスタまたはビジネス テーブルよりもわずかに大きいだけで、ラスタ バンドごとにレコードを 1 つ格納します。1,000 個の 3 バンド ラスタ データセットを格納するラスタ カタログの場合、ラスタ バンド テーブルは 3,000 個のレコードで構成されます。

    次に、BND_STORAGE、BND_INDEX_COMPOSITE、および BND_INDEX_ID パラメータの例を示します。

    BND_STORAGE "PCTFREE 0 INITRANS 4 TABLESPACE EARTH" BND_INDEX_COMPOSITE "PCTFREE 0 INITRANS 4 TABLESPACE EARTH" BND_INDEX_ID "PCTFREE 0 INITRANS 4 TABLESPACE EARTH"

  • AUX_STORAGE パラメータはラスタ補助テーブルの格納領域を制御し、AUX_INDEX_COMPOSITE パラメータはテーブルのコンポジット インデックスの格納領域を制御します。ラスタ補助テーブルのレコードの数は、オプションで格納されるラスタ バンド データによって異なります。NoData ビット マスクは、効率上の理由からラスタ バンドごとに格納されますが、それはビット マスクが 10MB 未満の場合に限られます。10MB を超えるビット マスクは格納されないため、ArcSDE がラスタ ブロック テーブルに格納されたピクセル ブロックから NoData ビット マスクを取得する必要があります。また、ラスタ統計情報が計算されている場合はそれらも格納され、カラー マップが存在する場合はそれらも格納されます。ラスタ オブジェクトによっては、ラスタ補助テーブルが空であったり、ラスタ バンド テーブルよりも多くのレコードが含まれていることがあります。通常は、ラスタ バンド テーブルと同じサイズです。

    次に、AUX_STORAGE パラメータと AUX_INDEX_COMPOSITE パラメータの例を示します。

    AUX_STORAGE "PCTFREE 0 INITRANS 4 TABLESPACE EARTH" AUX_INDEX_COMPOSITE "PCTFREE 0 INITRANS 4 TABLESPACE EARTH"

  • BLK_STORAGE パラメータは、ラスタ オブジェクトのテーブルとインデックスの中で最大のラスタ ブロック テーブルの格納領域を制御します。ラスタ ブロック テーブルは、ラスタ オブジェクトの作成時に定義されたタイル サイズに基づいて、ピクセル データを格納します。BLK_INDEX_COMPOSITE パラメータは、ラスタ ブロック テーブルのコンポジット インデックスの格納領域を制御します。このインデックスは、rasterband_id、row_nbr、col_nbr、rrd_factor の 4 つの整数列のインデックスを指定します。ラスタ ブロック テーブルは、そのインデックスの約 150 倍の大きさです。ただし、ラスタ ブロック テーブルは非常に大きくなることがあるため、実際には、ラスタ ブロック インデックスをラスタ ブロック テーブルと同じ表領域に格納します。

    次に、BLK_STORAGE パラメータと BLK_INDEX_COMPOSITE パラメータの例を示します。

    BLK_STORAGE "PCTFREE 0 INITRANS 4 TABLESPACE EARTH_BLOCKS STORAGE (INITIAL 500M MINEXTENTS 10) LOB( BLOCK_DATA) STORE AS (ENABLE STORAGE IN ROW CHUNK 8K RETENTION CACHE)" BLK_INDEX_COMPOSITE "PCTFREE 0 INITRANS 4 TABLESPACE EARTH_BLOCKS"

ラスタ データセットとラスタ カタログのフットプリントは、空間列に格納されます。空間列が ArcSDE バイナリ タイプとして作成される場合は、次の DBTUNE パラメータも設定する必要があります。

  • S_STORAGE: 空間インデックス テーブル
  • S_INDEX_ALL: すべての空間インデックス テーブル列をリストするカバレッジ インデックス
  • S_INDEX_SP_FID: 空間インデックス テーブルの fid 列のインデックス

次の例では、各 DBMS の DBTUNE ファイルで DBTUNE キーワードがどのように使用されるかを示します。二重のシャープ記号(##)は EARTH DBTUNE キーワードの始まりを表し、END はキーワードの終わりを表します。

SQL Server の DBTUNE キーワードの例

##EARTH_15M
B_CLUSTER_ROWID 0 
B_CLUSTER_SHAPE 1
B_CLUSTER_RASTER 0 
B_INDEX_ROWID "WITH FILLFACTOR = 100"
B_INDEX_SHAPE "WITH FILLFACTOR = 100"
B_INDEX_RASTER "WITH FILLFACTOR = 100"
B_STORAGE ""
B_TEXT_IN_ROW 256
RAS_STORAGE ""
RAS_CLUSTER_ID 1
RAS_INDEX_ID "WITH FILLFACTOR = 100"
BND_STORAGE "" 
BND_CLUSTER_ID 0
BND_INDEX_ID "WITH FILLFACTOR = 100"
BND_CLUSTER_COMPOSITE 0
BND_INDEX_COMPOSITE "WITH FILLFACTOR = 100"
AUX_STORAGE ""
AUX_CLUSTER_COMPOSITE 1
AUX_INDEX_COMPOSITE "WITH FILLFACTOR = 100" 
BLK_STORAGE "" 
BLK_CLUSTER_COMPOSITE 1
BLK_INDEX_COMPOSITE "WITH FILLFACTOR = 100" 
END

Oracle の DBTUNE キーワードの例

##EARTH_15M 
RAS_STORAGE "PCTFREE 0 INITRANS 4 TABLESPACE EARTH" 
RAS_INDEX_ID "PCTFREE 0 INITRANS 4 TABLESPACE EARTH"
BND_STORAGE "PCTFREE 0 INITRANS 4 TABLESPACE EARTH"
BND_INDEX_COMPOSITE "PCTFREE 0 INITRANS 4 TABLESPACE EARTH"
BND_INDEX_ID "PCTFREE 0 INITRANS 4 TABLESPACE EARTH"
AUX_STORAGE "PCTFREE 0 INITRANS 4 TABLESPACE EARTH" 
AUX_INDEX_COMPOSITE "PCTFREE 0 INITRANS 4 TABLESPACE EARTH" 
BLK_STORAGE "PCTFREE 0 INITRANS 4 TABLESPACE EARTH_BLOCKS STORAGE 
       (INITIAL 500M MINEXTENTS 10) LOB( BLOCK_DATA) STORE AS (ENABLE 
        STORAGE IN ROW CHUNK 8K RETENTION CACHE)"
BLK_INDEX_COMPOSITE "PCTFREE 0 INITRANS 4 TABLESPACE EARTH_BLOCKS" 
END

DB2 の DBTUNE キーワードの例

##EARTH_15M 
AUX_STORAGE "IN EARTH INDEX IN EARTH" 
BLK_STORAGE "IN EARTH INDEX IN EARTH LONG IN EARTH_BLOCKS" 
BND_STORAGE "IN EARTH INDEX IN EARTH" 
RAS_STORAGE "IN EARTH INDEX IN EARTH"
END

Informix DBTUNE キーワードの例

##EARTH_15M 
RAS_STORAGE "EXTENT SIZE 16 NEXT SIZE 16 LOCK MODE ROW IN EARTH" 
RAS_INDEX_ID "FILLFACTOR 90 IN EARTH"
BND_STORAGE EXTENT SIZE 16 NEXT SIZE 16 LOCK MODE ROW IN EARTH"
BND_INDEX_COMPOSITE "FILLFACTOR 90 IN EARTH" 
BND_INDEX_ID "FILLFACTOR 90 IN EARTH" 
AUX_STORAGE "EXTENT SIZE 16 NEXT SIZE 16 LOCK MODE ROW IN EARTH" 
AUX_INDEX_COMPOSITE "FILLFACTOR 90 IN EARTH" 
BLK_STORAGE "EXTENT SIZE 1000 NEXT SIZE 1000 LOCK MODE ROW IN EARTH_BLOCKS" 
BLK_INDEX_COMPOSITE "FILLFACTOR 90 IN EARTH"
END

データ ソースを準備する

ラスタ データセットのソース ファイルをディスク ドライブでステージングし、データをジオデータベースに読み込むために使用する ArcCatalog または ArcObjects スクリプトで利用できるようにします。

CD または DVD

ラスタ データセットが CD または DVD に格納されている場合は、それらを高速ハード ドライブにコピーします。ローカル ハード ドライブを使用することが、ネットワーク ハード ドライブを使用することよりも推奨されます。CD または DVD デバイスのファイルの直接読み込みは、ハード ドライブからの読み込みよりもはるかに時間がかかるため、推奨されません。

テープ サイロ

テープ サイロから読み込む場合は、ラスタ データセット ファイルの読み込みを開始する前に、オンライン キャッシュにステージングする必要があります。

データ ソースの整理

イメージ ファイルは、それらを読み込み操作で使用するための別のフォルダにまとめます。これにより、フォルダ内のファイルを個別に読み込む代わりに、読み込みツールを使用してすべてのファイルを開き、それらを一度に読み込むことができます。たとえば、複数のラスタ データセットを単一のラスタ データセットにモザイク化する、入力ラスタ データセットを単一のスタンドアロン ラスタ データセットに読み込む、ラスタ データセットをラスタ カタログにグループ化する、またはモザイク化された複数のラスタ データセットを使用してラスタ カタログを作成することができます。開いているファイルの数に関する制限は、オペレーティング システムごとに異なります。それらの制限に達した場合は、追加のフォルダを作成して、別の読み込みプロセスを開始する必要があります。

ソース データへの投影の適用

ラスタ データを投影するための基本的なワークフローが 2 つあります。ソース イメージ ファイルの別のコピーを作成して投影を適用するか、ソース イメージ ファイルをジオデータベースに挿入する際に投影を適用することができます。

テストの結果から、ほとんどの場合は、ラスタ データセットのソース ファイルのコピーに投影を適用し、投影されたラスタ データセット ソースをジオデータベースに挿入するのが最適なワークフローであることが判明しています。ラスタ データセットの読み込み時にソース ファイルを投影するほうが、投影されたソース ファイルを作成するよりも実際には少し高速かもしれませんが、複数のプロセスを使用して多くのラスタ データセット ソースを同時に挿入する場合は、ラスタ データの投影にかなり時間がかかります。このため、投影されたラスタ データセット ソース ファイルをクライアントでステージングしてから、それらをサーバに読み込むほうが効果的です。多数のプロセスで投影済みのデータセット ソース ファイルを作成し、少ないプロセスが投影済みのファイルをジオデータベースに挿入することで、アイドル状態のサーバに負荷が集中してサーバのリソースが使い果たされることがなくなり、実際にはクライアントとサーバ コンピュータのリソースが最も有効に利用されます。

ラスタ オブジェクトの作成とラスタ データの読み込み

複数のスタンドアロン ラスタ データセットを単に格納する場合を除き、読み込むラスタ データセットを格納するためのラスタ カタログまたはラスタ データセットを作成することが推奨されます。この場合、読み込みの対象となるラスタ データセットのプロパティと、読み込まれた後のそれらのプロパティについて理解する必要があります。

これらのプロパティは、格納領域の要件を見積もるときに、または格納領域を割り当てたときに確定することがあります。また、すべての格納パラメータを指定するキーワードを作成するために、dbtune を編集している場合もあります。それ以外の場合は、この時点でこれらのプロパティを決定する必要があります。

ラスタ データセットのプロパティの詳細

ピラミッド、ラスタ統計情報、圧縮、タイル サイズの、4 つのラスタ ジオデータベース設定について検討する必要があります。

ピラミッドは表示のパフォーマンスに影響をおよぼします。

ラスタ ピラミッドの詳細

ピラミッドは、ラスタ データがラスタ データセットにモザイク化されるときにラスタ データセットに基づいて構築するか、読み込みが完了したときに構築することができます。最も短時間ですむのは、モザイク処理が完了した後でピラミッドを構築する方法です。ArcGIS では部分的なピラミッドの構築が可能であり、モザイク処理の際にソース データとオーバーラップする部分のみのピラミッドを再構築します。新しいラスタ データセットが追加された場合、ピラミッドの再構築にラスタ データセット全体が必要になることはないので、この機能はモザイク化されたラスタ データセットの更新に役立ちます。ただし、ラスタ データセットの原点(ピラミッド リファレンス ポイント)でデータを更新する場合は、ラスタ データセット全体を対象にピラミッドを再構築する必要があります。

ラスタ データセットの原点は、ラスタ データセットの左上隅の座標です。ピラミッドの構築はこの座標から始まり、右下へと進みます。データをラスタ データセットの原点の左または上にモザイク化するには、ArcSDE でこのポイントをシフトして、左上隅の座標にする必要があります。既存のラスタ データセットの原点をシフトするには、ArcSDE でピラミッドを再構築する必要があります。ピラミッドの再構築は負荷の高い操作になる可能性があります。すでにモザイク化されているラスタ データセット ソース ファイル(または他のラスタ データセット)の数が多いためにラスタ データセットが拡大している場合は、特に注意が必要です。

ピラミッドの再構築は時間のかかる操作なので、ソース データの解析を通じてラスタ データセットの左上のラスタ座標を特定し、ラスタ データセットの作成時にそれを入力してください。ArcSDE では、挿入される最初のラスタ データセットの左上の座標を使用する代わりに、ラスタ オブジェクトの作成時に、明示的にピラミッド リファレンス ポイントを設定することができます。ラスタ データセットの作成時にピラミッド リファレンス ポイントを設定することにより、ラスタ データセットの原点をシフトせずに済みます。

ピラミッド リファレンス ポイント

コントラスト ストレッチの適用やデータの分類など、ラスタ データセットで何らかのジオプロセシング処理を実行したり、ArcMap または ArcCatalog で特定のタスクを実行するには、統計情報が必要です。

ラスタ統計情報の詳細

圧縮は、ラスタ データの用途と、ラスタ データの種類によって決定されます。

ラスタ圧縮の詳細

ArcSDE は、ラスタ データセットを格納するために 1 つ以上のタイルに分割します。これらのタイルは、ラスタ ストレージ テーブルにバイナリ データとして格納されます。ラスタ データセットがマルチバンドの場合、さまざまなバンドで同一個所にあるラスタ ブロックのピクセルは、テーブルの個別の行に格納されます。

ラスタ データセットをタイル分割すると、パフォーマンスが向上します。たとえば、4 つのタイルが含まれた小さなエリアを拡大表示する場合は、ArcSDE がラスタ ブロック テーブルから行を 4 つ取得するだけで済みます。ラスタをタイル分割していない場合、ArcSDE はラスタ データセット全体を取得する必要があります。

タイルのサイズは、各タイルが作成される行と列の数によって決定されます。たとえば、128 x 128 のタイル サイズは、実際に 128 ピクセル x 128 ピクセルです。タイルが大きいと BLOB フィールドも大きくなりますが、テーブルの行の数は少なくなります。タイルが小さいと BLOB フィールドも小さくなりますが、テーブルの行の数は増えます。タイル サイズは、デフォルトでは 128 x 128 に設定されます。読み込まれるデータが 3 バンド カラー イメージではない場合は、タイル サイズを変更してタイルをデータベース ブロックに適合させると、格納領域の要件を抑えることができます。最も効果的なサイズを決定するには、代表的なラスタでベンチマークを実施する必要があります。一般的には、サイズが大きいと圧縮率が高くなり、データベースに小さいタイルが格納されることになります。

ラスタ オブジェクトは、(ArcCatalog などの)ジオプロセシング ツール、sderaster コマンド、または ArcObjects を使用して作成することができます。ジオプロセシング ツールによって作成されたラスタ オブジェクトは空の状態です。プロパティはありますが、ピクセル データは一切含まれておらず、ジオデータベースに対応します。ラスタ データセットの作成については、「ArcSDE ジオデータベースでのラスタ データセットの作成」をご参照ください。ラスタ カタログの作成については、「ArcSDE ジオデータベースでのラスタ カタログの作成」をご参照ください。

sderaster コマンドによって作成されたラスタ オブジェクトには、常にピクセル データが含まれています。これらはジオデータベースに対応せず、フットプリント カラムを持ちません。また、モザイク化を実行するには、それぞれのワールド ファイルが完全に揃っている必要があります。ArcObjects でのラスタの作成については、「Esri Developer Network」をご参照ください。変更および使用できるラスタ データについては、「Code Exchange」のサンプルをご参照ください。たとえば、Create Geodatabase Raster Dataset サンプルを変更して、新しいスタンドアロン ラスタ データセットを作成することができます。Mosaic Rasters In A Directory サンプルと Subdirectories To An ArcSDE Raster サンプルは、特定のスタンドアロン ラスタ データセットに対するディレクトリまたはフォルダに、すべてのラスタ データセット ソースをモザイク化するためのサンプルです。ラスタ カタログは、Create Geodatabase Raster Catalog サンプルを使用して作成することができます。このサンプルは、ラスタ データセット ソース ファイルをラスタ カタログに挿入する Loading Raster Datasets In A Workspace To A GDB Raster Catalog サンプルと組み合わせることができます。

ArcObjects ソフトウェアを使用するには、サンプル コードを変更して実行するための能力が必要になりますが、これには次のような利点があります。

ラスタ データをジオデータベースに読み込むにはいくつかの方法があります。[インポート] → [ラスタ データセット](ジオデータベースのショートカット メニュー)を使用する方法、[ラスタのコピー(Copy Raster)] ツール(ジオプロセシング ツール)を使用する方法、または [データの読み込み](ArcCatalog データセットのショートカット メニュー)を使用する方法です。ラスタ データをジオデータベースへ読み込む方法については、「ラスタ データセットのインポート」をご参照ください。

sderaster を使用してラスタ データを読み込む方法については、「sderaster を使用した ArcSDE でのラスタの読み込み」をご参照ください。

統計情報を構築する

DBMS とラスタの統計情報を構築すると、ラスタの表示パフォーマンスと外観を改善することができます。

DBMS 統計情報を常に構築する必要はありませんが、ArcSDE がサポートしている DBMS はすべて、コストベースのオプティマイザを使用します。コストベースのオプティマイザでは、DBMS オブジェクトからこれまでに収集された統計情報に基づいて、最も効果的な実行プランが決定されます。SQL Server はデータの読み込み時に自動的に統計情報を収集しますが、その他すべての DBMS では、少なくともブロック テーブルで DBMS 統計情報を収集する必要があります。

ArcCatalog で DBMS 統計情報を構築するには、次の手順に従います。

  1. ラスタ オブジェクトを右クリックし、[分析] をクリックします。
  2. [分析コンポーネント] ダイアログ ボックスで、[ラスタ テーブル] コンポーネントがオンになっていることを確認します。
  3. [OK] をクリックします。

次の例に示すように、sdetable コマンドの update_dbms_stats 操作を使用して、統計情報を生成することができます。

c:\>sdetable -o update_dbms_stats -t earth -m estimate -u mark -p mark -i 9000

次に、Oracle でブロック テーブルの統計情報を収集する例を示します。

SQL> select rastercolumn_id from sde.raster_columns where table_name = 'EARTH';

RASTERCOLUMN_ID ----------------------- 1

SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS(NULL, 'SDE)BLK_1; NULL, 1);

ラスタ統計情報は、ラスタ データセットに基づいて生成され、ArcSDE AUX テーブルに格納されます。ラスタ統計情報には、最小、最大、平均、および標準偏差が含まれます。ベース ピラミッド レベルでラスタ統計情報を生成する場合、ラスタ データセットが非常に大きいと、かなり時間がかかる可能性があります。

ラスタにキャプチャされたオブジェクトを統計的なストレッチをしてからユーザに表示する必要がある場合は、ラスタ統計情報が必要です。

ラスタ統計情報の生成方法については、「ラスタ データセットの統計情報」をご参照ください。

ラスタ データを表示する

ラスタ データは、ArcMap、ArcCatalog、ArcGlobe、または ArcScene など、ラスタの設計に適したプロジェクトに使用されるアプリケーションを使用して表示する必要があります。ピラミッドが構築されていて、DBMS 統計情報が最新の状態である場合、ラスタはすばやく表示されるはずです。

表示に時間がかかる場合、通常は、DBMS 統計情報が最新の状態ではないか、存在しないことが原因です。ブロック テーブルの DBMS 統計情報が存在することは特に重要となります。DBMS 統計情報の構築手順については、上記の「統計情報を構築する」をご参照ください。

部分的なピラミッドを構築する機能により、大きなモザイク操作の途中でラスタ データセットを表示することが可能になりました。ただし、モザイク処理の過程でラスタ データセットを表示する場合は、低解像度で表示されたラスタ データセットが表示と非表示を繰り返すことに注意してください。この振舞いは部分的なピラミッドが構築されることによるもので、更新されたピラミッドの上位層が削除され、再度挿入されるためです。

関連項目


7/10/2012