11.6 SDO_GEOR_IP.piecewiseStretch
形式
SDO_GEOR_IP.piecewiseStretch( inGeoRaster IN SDO_GEORASTER, pyramidLevel IN NUMBER DEFAULT 0, cropArea IN SDO_NUMBER_ARRAY DEFAULT NULL, bandNumbers IN VARCHAR2, inValues IN SDO_NUMBER_ARRAYSET, outValues IN SDO_NUMBER_ARRAYSET, storageParam IN VARCHAR2 DEFAULT NULL, outGeoraster IN OUT SDO_GEORASTER, parallelParam IN VARCHAR2 DEFAULT NULL);
または
SDO_GEOR_IP.piecewiseStretch( inGeoRaster IN SDO_GEORASTER, pyramidLevel IN NUMBER DEFAULT 0, cropArea IN SDO_GEOMETRY DEFAULT NULL, layerNumbers IN VARCHAR2, inValues IN SDO_NUMBER_ARRAYSET, outValues IN SDO_NUMBER_ARRAYSET, storageParam IN VARCHAR2 DEFAULT NULL, outGeoraster IN OUT SDO_GEORASTER, parallelParam IN VARCHAR2 DEFAULT NULL);
または
SDO_GEOR_IP.piecewiseStretch( inGeoRaster IN SDO_GEORASTER, pyramidLevel IN NUMBER DEFAULT 0, cropArea IN SDO_NUMBER_ARRAY DEFAULT NULL, bandNumbers IN VARCHAR2, inValues IN SDO_NUMBER_ARRAYSET, outValues IN SDO_NUMBER_ARRAYSET, storageParam IN VARCHAR2 DEFAULT NULL, rasterBlob IN OUT BLOB, outArea OUT SDO_GEOMETRY, outWindow OUT SDO_NUMBER_ARRAY);
または
SDO_GEOR_IP.piecewiseStretch( inGeoRaster IN SDO_GEORASTER, pyramidLevel IN NUMBER DEFAULT 0, cropArea IN SDO_GEOMETRY DEFAULT NULL, layerNumbers IN VARCHAR2, inValues IN SDO_NUMBER_ARRAYSET, outValues IN SDO_NUMBER_ARRAYSET, storageParam IN VARCHAR2 DEFAULT NULL, rasterBlob IN OUT BLOB, outArea OUT SDO_GEOMETRY, outWindow OUT SDO_NUMBER_ARRAY);
説明
最小値および最大値を使用して、入力GeoRasterオブジェクトの線形ストレッチを実行します。処理されたイメージは、出力GeoRasterオブジェクトまたはBLOBに格納されます。
パラメータ
- inGeoRaster
-
ストレッチするSDO_GEORASTERオブジェクトを指定します。
- pyramidLevel
-
ソースGeoRasterオブジェクトのストレッチするピラミッド・レベルを示す番号を指定します。NULLの場合、デフォルトは0です。
- cropArea
-
クロッピング領域を定義します。
cropAreaがSDO_GEOMETRY型の場合は、layerNumbersパラメータを使用して1つ以上のレイヤー番号を指定します。cropAreaがSDO_NUMBER_ARRAY型の場合は、bandNumbersパラメータを使用して、1つ以上のバンド番号を指定します。データ型がSDO_NUMBER_ARRAYの場合、このパラメータで矩形ウィンドウの左上の座標(行,列)と右下の座標(行,列)を指定することによって、ラスター空間が想定されます。データ型がSDO_GEOMETRYの場合、ジオメトリ・オブジェクトの最小境界矩形(MBR)がクロッピング領域として使用されます(SDO_SRID要件の「使用上のノート」も参照してください)。
- bandNumbers
-
処理を実行する物理バンド番号を示す文字列を指定します。カンマで値を区切り、ハイフンで範囲を指定します(たとえば、
1-3はバンド1、2および3を示します)。 - layerNumbers
-
処理を実行する論理レイヤー番号を示す文字列を指定します。カンマで値を区切り、ハイフンで範囲を指定します(たとえば、
2-4はレイヤー2、3および4を示します)。 - inValues
-
各入力バンドに対応するSDO_NUMBER_ARRAYオブジェクトの配列。1つの要素のみが指定される場合、すべての出力バンドが同じようにストレッチされます。各SDO_NUMBER_ARRAYでは、ストレッチで使用される入力GeoRasterオブジェクトのセル値範囲を指定します。たとえば、sdo_number_array(0, 50, 255)は、0から50および50から255の2つの値範囲を指定します。
- outValues
-
各出力バンドに対応するSDO_NUMBER_ARRAYオブジェクトの配列。1つの要素のみが指定される場合、すべての出力バンドが同じようにストレッチされます。各SDO_NUMBER_ARRAYでは、
inValuesパラメータの値範囲に対応するターゲット値範囲を指定します。たとえば、sdo_number_array(0, 200, 255)は、0から200および200から255の2つの値範囲を指定します。 - storageParam
-
記憶域パラメータを示す文字列を指定します(「記憶域パラメータ」を参照)。
- outGeoRaster
-
操作の結果を反映させる出力SDO_GEORASTERオブジェクトを指定します。既存の有効なGeoRasterオブジェクトまたは空のGeoRasterオブジェクトのいずれかであることが必要です。(空のGeoRasterオブジェクトの詳細は、「空白のGeoRasterオブジェクトと空のGeoRasterオブジェクト」を参照してください)。
inGeoRasterと同じGeoRasterオブジェクトは指定できません。 - parallelParam
-
操作の並列度を指定します。指定する場合、
parallel=nという形式である必要があります(nは1より大きい)。データベース・オプティマイザでは、このパラメータによって指定された並列度を使用します。指定しない場合、デフォルトでパラレル処理は行われません。(詳細は、「GeoRasterでのパラレル処理」を参照してください。)並列性を指定すると、プロシージャはプロセスの実行中に内部コミットを実行します。したがって、このプロシージャの結果をロールバックできません。エラーが発生した場合(Oracle Parallel Serverが原因である場合でも)、操作をロールバックするために、出力結果のGeoRasterオブジェクトを明示的に削除する必要があります。
- rasterBlob
-
処理結果の出力を保持するBLOB。処理の前に、存在しているか、または初期化されている必要があります。
- outArea
-
結果のオブジェクトのモデル座標系の最小境界矩形(MBR)を含むSDO_GEOMETRYオブジェクトを指定します。
- outWindow
-
セル空間内で出力ウィンドウの左上角および右下角の座標を指定するSDO_NUMBER_ARRAYオブジェクトを指定します。
使用上のノート
inValuesおよびoutValuesパラメータは、同じ数の値を含める必要があります。inValuesパラメータで指定される範囲は昇順である必要があります。inValuesパラメータの値は、inGeoRasterオブジェクトのセル深度の範囲である必要があります。outValuesパラメータの値は、outGeoRasterオブジェクトのセル深度の範囲である必要があります。
cropAreaパラメータのデータ型がSDO_GEOMETRYの場合、SDO_SRID値は次のいずれかの値である必要があります。
-
NULL(ラスター空間を指定)
-
MDSYS.CS_SRS表のSRID列の値
cropAreaパラメータ・ジオメトリとモデル空間のSDO_SRID値が異なる場合は、処理が実行される前に、cropAreaパラメータ・ジオメトリは自動的にモデル空間の座標系に変換されます。(ラスター空間およびモデル空間の詳細は、「GeoRasterデータ・モデル」を参照してください。)
入力GeoRasterオブジェクトに格納されるカラー・マップはサポートされていません。
出力GeoRasterオブジェクトにはピラミッドまたはマスクが含まれません。
例
次の例では、入力GeoRasterオブジェクトのすべてのバンドを異なるセル深度に区分ストレッチを実行するGeoRasterオブジェクトを作成します(0から255よび0から2000の範囲の入力値の線形ストレッチ)。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。)
DECLARE
gr1 sdo_georaster;
gr2 sdo_georaster;
cropArea sdo_number_array := null;
inValues sdo_number_arrayset;
outValues sdo_number_arrayset;
BEGIN
INSERT INTO georaster_table (georid, georaster)
VALUES (41, sdo_geor.init('RDT_1'))
RETURNING georaster INTO gr2;
SELECT georaster INTO gr1 FROM georaster_table WHERE georid=4;
-- define the input and output value ranges
inValues := sdo_number_arrayset(sdo_number_array(0, 255));
outValues := sdo_number_arrayset(sdo_number_array(0, 2000));
sdo_geor_ip.piecewisestretch(gr1, 0, cropArea, null,
inValues, outValues, 'celldepth=16bit_u', gr2);
UPDATE georaster_table SET georaster=gr2 WHERE georid=41;
COMMIT;
END;
/
次の例では、異なる範囲に対して各バンドの区分ストレッチを実行します。出力は一時BLOBにあります。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。)
DECLARE
gr1 sdo_georaster;
cropArea sdo_number_array := null;
inValues sdo_number_arrayset;
outValues sdo_number_arrayset;
out_lob BLOB;
outArea sdo_geometry := null;
outWindow sdo_geometry := null;
BEGIN
dbms_lob.create_temporary(out_lob, TRUE);
SELECT georaster INTO gr1 FROM georaster_table WHERE georid=4;
-- define the input and output values ranges
inValues := sdo_number_arrayset(sdo_number_array(0, 30, 80, 255),
sdo_number_array(0, 10, 50, 255),
sdo_number_array(0, 50, 150, 255));
outValues := sdo_number_arrayset(
sdo_number_array(0, 80, 200, 255),
sdo_number_array(0, 60, 150, 255),
sdo_number_array(0, 100, 250,255) );
sdo_geor_ip.piecewisestretch(gr1, 0, cropArea, null, inValues, outValues,
null, out_lob, outArea, outWindow);
if outWindow is not null then
dbms_output.put_line('output window: (' || outWindow(1) || ',' ||
outWindow(2) || ',' || outWindow(3) || ',' || outWindow(4) || ')');
end if;
dbms_lob.freeTemporary(out_lob);
END;
/
親トピック: SDO_GEOR_IPパッケージのリファレンス