6.15 バンドのマージ
イメージ分類、時系列分析およびラスターGISモデリングでは、状況により、異なるGeoRasterオブジェクトの複数のバンドまたはレイヤーをマージして1つのGeoRasterオブジェクトにする必要があります。
この操作は、GeoRasterでバンドまたはレイヤーのマージと呼ばれ、SDO_GEOR.mergeLayersプロシージャまたはSDO_GEOR_RA.rasterMathOpプロシージャを使用して実行できます。ソースGeoRasterオブジェクトの指定したバンドをターゲットGeoRasterオブジェクトに追加するか、2つのGeoRasterオブジェクトの異なるバンドを1つの新しいGeoRasterオブジェクトにマージできます。このマージや追加を反復実行することで、無制限の数のバンドを1つのGeoRasterオブジェクトにマージできます。
例6-16 バンドのマージ
例6-16に、2つの例を示します。最初の例では、8つのGeoRasterオブジェクトがあり、そのそれぞれにGeoTIFF形式の単一バンド・ランドサットETM+イメージ・ファイルからロードされたただ1つのバンドが含まれると仮定します。各GeoRasterオブジェクトのバンドの数は、そのGeoRasterオブジェクトのGEORID列の値と同じです。例では、すべてのバンドを1つのGeoRasterオブジェクトにマージして、完全なETM+シーンを作成します。
DECLARE
gr1 sdo_georaster;
BEGIN
select georaster into gr1 from georaster_table where georid = 1 for update;
for rec in (select georaster from georaster_table
where georid >= 2 and georid <= 8
order by georid)
loop
sdo_geor.mergelayers(gr1, rec.georaster);
end loop;
update georaster_table set georaster = gr1 where georid = 1;
commit;
END;
/
2番目の例では、8つのGeoRasterオブジェクトがあり、そのそれぞれに3つのバンドが含まれると仮定します。例では、各GeoRasterオブジェクトから1つのバンドを選択し、パラレルに単一の8つのバンドのGeoRasterオブジェクトにマージします。
DECLARE geor SDO_GEORASTER; geo_array SDO_GEORASTER_ARRAY; BEGIN SELECT georaster INTO geor FROM georaster_table WHERE georid = 0 for update; geo_array:=SDO_GEORASTER_ARRAY(); for rec in (select georaster from georaster_table where georid >= 1 and georid <= 8 order by georid) loop geo_array.extend(1); geo_array(geo_array.last):=rec.georaster; end loop; sdo_geor_ra.rasterMathOp(geo_array,SDO_STRING2_ARRAY('{0,0}','{1,1}','{2,2}','{3,0}','{4,1}','{5,2}','{6,0}','{7,1}',),null,geor,'false',null,'parallel=4'); UPDATE georaster_table SET georaster = geor WHERE georid = 0; COMMIT; END; /
親トピック: イメージ処理および仮想モザイク