書式
SDO_TIN_PKG.TO_DEM( tin IN SDO_TIN, dem IN OUT SDO_GEORASTER, blocksize IN NUMBER, crs_units_per_pixel IN NUMBER);
説明
TINからDEM (数値標高モデル) GeoRasterオブジェクトを作成します。
パラメータ
TINオブジェクトを指定します。(SDO_TINデータ型の詳細は、「TINに関連するオブジェクト型」を参照してください。)
DEM GeoRasterオブジェクトを指定します。(SDO_GEORASTERデータ型の詳細は、『Oracle Spatial and Graph GeoRaster開発者ガイド』を参照してください。)
DEMのブロック・サイズをピクセル数で指定します。
各ピクセルに対するTINおよびDEMの座標参照系(SRID)の単位を指定します。たとえば、メジャーのSRID単位が10進度で、各ピクセルが1度の1/100を表す場合、crs_units_per_pixel値は0.01になります。
使用上の注意
このプロシージャは、指定したGeoRasterオブジェクト(demパラメータ) を入力TINの情報に基づいて変更します。
TINとDEMは同じ座標参照系(SRID)を使用する必要があります。
次に例を示すように、demパラメータの場合、入力SDO_GEORASTERオブジェクトの取得は、GeoRasterオブジェクトを表に挿入し、そのGeoRasterオブジェクトを変数に戻すことによって行います。
INSERT INTO raster_table VALUES (1, sdo_geor.init('raster_data_table'))
RETURNING raster_image INTO geor;
DEMの水平エクステントをピクセル数で求めるには、SRID単位での水平エクステントをcrs_units_per_pixelパラメータ値で除算します。たとえば、次のような場合を考えてみます。
TINとDEMのSRIDは4326です。
SRIDの単位は10進度です。
入力TINの水平エクステントは、10進度で7です。
crs_units_per_pixel値は0.01です。
この例では、DEMの水平エクステントは700ピクセル(7/.01 = 700)です。
SDO_TINデータ型の詳細は、「TINに関連するオブジェクト型」を参照してください。
TINを使用して表面をモデル化する方法は、「表面のモデル化」を参照してください。
例
次の例では、TINからDEMを作成します。これは、Oracle Database Examplesメディアからすでにファイルをインストールしている場合は、$ORACLE_HOME/md/demo/TIN/examples/plsql/tin.sqlから取得できます(『Oracle Database Examplesインストレーション・ガイド』を参照)。
create table raster_table (id number, raster_image sdo_georaster);
create table raster_data_table of sdo_raster
(primary key (rasterId, pyramidLevel, bandBlockNumber, rowBlockNumber, columnBlockNumber))
lob(rasterblock) store as (nocache nologging);
DECLARE
inp sdo_tin;
geor sdo_georaster;
BEGIN
select tin INTO inp from tins_hawaii_4326 where rownum=1;
insert into raster_table values (1, sdo_geor.init('raster_data_table')) returning raster_image into geor;
sdo_tin_pkg.to_dem(
tin => inp,
dem => geor,
blocksize => 128,
crs_units_per_pixel => 0.01);
update raster_table set raster_image = geor where id = 1;
END;
/