4.12 クロススキーマ操作の実行
すべてのGeoRaster操作は、現行の接続スキーマ以外のスキーマに定義されているGeoRasterオブジェクトに対して機能できます。つまり、GeoRasterは、クロススキーマのアクセス、更新および処理を完全にサポートします。
詳細は、「GeoRasterにおけるクロススキーマのサポート」を参照してください。
例4-2 クロススキーマ・コピー操作
次の例では、USER2は、USER1からイメージのコピーを作成し、USER2スキーマに格納します。USER1がGEORASTER_TABLE表を所有し、USER2がG_TABLE表を所有していると仮定します。
--connect to user1 and grant permissons to user2
--assume user1 stores the image in georaster_table and the image’s RDT table is rdt_1
conn user1/pswd1
grant select on georaster_table to user2;
grant select on rdt_1 to user2;
--connect to user2 and make a copy of a georaster from user1
conn user2/pswd2
SQL> DECLARE
gr1 sdo_georaster;
gr2 sdo_georaster;
BEGIN
--select the image from georaster_table in user1
select georaster into gr1 from user1.georaster_table where georid = 100;
-- the copy is to be stored in g_table in user2, assuming the georaster object is already initiated
select geor into gr2 from g_table where id = 1 for update;
sdo_geor.changeFormatCopy(gr1, 'blocking=OPTIMALPADDING blocksize=(512,512,3) interleaving=BIP', gr2);
update g_table set geor=gr2 where id=1;
commit;
END;
/
例4-3 クロススキーマ・ラスター代数およびコピー操作
次の例では、USER2は、USER1スキーマのイメージのラスター代数操作を実行し、USER1に結果を格納します。USER1がGEORASTER_TABLEおよびG_TABLE表の両方を所有していると仮定します。既存のイメージはGEORASTER_TABLEに存在し、イメージのラスター・データ表はRDT_1です。結果のイメージはG_TABLEに格納され、そのラスター・データ表はRDT_2です。
--connect to user1 and grant permissons to user2
conn user1/pswd1
grant select on georaster_table to user2;
grant select on rdt_1 to user2;
grant select, update, insert, delete on g_table to user2;
grant select, update, insert, delete on rdt_2 to user2;
--connect to user2 and run a raster algebra operation on an image in user1
conn user2/pswd2
DECLARE
gr1 sdo_georaster;
gr2 sdo_georaster;
BEGIN
--select the image from georaster_table in user1
select georaster into gr1 from user1.georaster_table where georid = 100;
-- the result is to be stored in g_table in user1, assuming the georaster object is already initiated
select geor into gr2 from user1.g_table where id = 1 for update;
sdo_geor_ra.rasterMathOp(gr1,sdo_string2_array('{0}','{1}','{2}'), 'blocking=OPTIMALPADDING blocksize=(512,512,3) interleaving=BIP',gr2);
update user1.g_table set geor=gr2 where id=1;
commit;
END;
/
親トピック: GeoRasterのデータ問合せおよび操作