7.22 SDO_GEOR.generatePyramid

形式

SDO_GEOR.generatePyramid(
     georaster     IN OUT SDO_GEORASTER, 
     pyramidParams IN VARCHAR2, 
     bgValues      IN SDO_NUMBER_ARRAY DEFAULT NULL, 
     parallelParam IN VARCHAR2 DEFAULT NULL);

説明

ピラミッド・データを生成して、元のデータとともに格納します。

パラメータ

georaster

ピラミッド・データを生成して格納するGeoRasterオブジェクトを指定します。

pyramidParams

ピラミッド・パラメータを含む文字列を指定します。使用可能なキーワードおよび値については、「使用上のノート」を参照してください。

bgValues

部分的に空のラスター・ブロックに入力する背景値を指定します。この値が有効なのは、ソースGeoRasterオブジェクトに空のラスター・ブロックが含まれており、現行の処理によって部分的に空のラスター・ブロック(「空のラスター・ブロック」を参照)が生成される場合のみです。SDO_NUMBER_ARRAYオブジェクト内の要素の数は、1つ(すべてのバンドに同じ入力値を使用)またはバンド次元のサイズ(各バンドにそれぞれ異なる入力値を使用)のいずれかであることが必要です。たとえば、SDO_NUMBER_ARRAY(1,5,10)では、1番目のバンドに1、2番目のバンドに5、3番目のバンドに10が入力されます。デフォルトのbgValuesは0 (ゼロ)です。

入力値は、スパース・データへの入力用としてターゲットのセル深度の背景値で指定された有効なセル値であることが必要です。

parallelParam

操作の並列度を指定します。指定する場合、parallel=nという形式である必要があります(nは1より大きい)。データベース・オプティマイザでは、このパラメータによって指定された並列度を使用します。指定しない場合、デフォルトでパラレル処理は行われません。(詳細は、「GeoRasterでのパラレル処理」を参照してください。)

並列性を指定すると、プロシージャはプロセスの実行中に内部コミットを実行します。したがって、このプロシージャの結果をロールバックできません。エラーが発生した場合(Oracle Parallel Serverが原因である場合でも)、操作をロールバックするために、出力結果のGeoRasterオブジェクトを明示的に削除する必要があります。

使用上のノート

ピラミッド・データの詳細は、「ピラミッド」を参照してください。

pyramidParamsには、次の1つ以上のキーワードにそれぞれ適切な値を指定して、それらを引用符で囲んだ文字列を指定する必要があります。

  • rLevel (rLevel=2など): 最大縮小レベルを指定します。元のオブジェクトより小さい(縮小した)サイズで作成する場合に使用するピラミッド・レベルの数値を指定します。このキーワードを指定しない場合、ピラミッド・レベルは、行または列の数の少ない方が64から128になるまで生成されます。低い解像度レベルでの各次元サイズは、その次に高い解像度レベルでの次元サイズを2で割って切り捨てた整数値と同じになります。

  • resampling (resampling=NNなど): リサンプリング・メソッドを指定します。NNBILINEARBIQUADRATICCUBICAVERAGE4AVERAGE16のいずれかを指定する必要があります。詳細は、「リサンプリングおよび内挿」を参照してください。

    このプロシージャでは、BILINEARAVERAGE4は同じ効果があることに注意してください。

  • nodata (nodata=TRUEなど): プロシージャでの処理中にNODATA値およびその値の範囲を考慮するかどうかを指定します。TRUE (NODATA値およびその値の範囲を考慮する)またはFALSE (NODATA値およびその値の範囲を考慮しない)のいずれかを指定します。デフォルト値はFALSEです。この値がTRUEで、リサンプリング・メソッドがBILINEARBIQUADRATICCUBICAVERAGE4またはAVERAGE16の場合、リサンプリングの計算に含まれるセル値がNODATA値であると、リサンプリングの結果も常にNODATA値になります。複数のNODATA値または値の範囲が存在する場合、結果のNODATA値は、現行のラスター・レイヤーに関連付けられているNODATA値の最小値になります。

georasterがNULLまたは空白のGeoRasterオブジェクトである場合、またはgeorasterのピラミッド・データは存在しているが、pyramidParamsで指定されたピラミッド・パラメータと同じパラメータで作成されている場合、このプロシージャは処理を実行しません。

georasterのピラミッド・データが存在し、pyramidParamsで指定されたものとは異なるresampling値を使用して作成されている場合、古いピラミッド・データは削除され、新しいピラミッド・データが生成されます。ただし、pyramidParamsに異なるnodataを指定しても、ピラミッド・データは再生成されません。新しいnodata値を有効にするには、古いピラミッド・データを削除してそれを再生成する必要があります。

rLevel値を指定しない場合、rLevel値はデフォルト値に設定されます。デフォルト値は次のように計算されます。

(int)(log2(a / 64))

式の各変数の意味は、次のとおりです。

  • log2: 底が2の対数関数です。

  • a: 元の次元サイズの行または列の小さい方。

デフォルトの場合、最上位レベルの全体像(最上位レベルの最小ピラミッド)では、行次元と列次元のいずれか小さい方のサイズは64から128です。rLevel値を低解像度の最大レベルより大きい値に指定した場合、rLevel値は低解像度の最大レベルに設定されます。最大レベルは次のように計算されます。

(int)(log2(a))

この場合、最上位レベルの全体像では、その行次元と列次元のいずれか小さい方のサイズは1になります。

georasterが無効な場合、例外が発生します。

次の例では、GeoRasterオブジェクトのピラミッド・データを作成します。

DECLARE
  gr sdo_georaster;
BEGIN
 
  SELECT georaster INTO gr 
    FROM georaster_table WHERE georid = 6 FOR UPDATE;
 
  -- Generate pyramids.
  sdo_geor.generatePyramid(gr, 'rLevel=5, resampling=NN');
 
  -- Update the original GeoRaster object.
  UPDATE georaster_table SET georaster = gr WHERE georid = 6;
 
  COMMIT;
END;
/