書式
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; /