プライマリ・コンテンツに移動
Oracle® Spatial and Graph開発者ガイド
12cリリース1 (12.1)
B72470-07
目次へ移動
目次
索引へ移動
索引

前
次

29.6 SDO_TIN_PKG.TO_DEM

書式

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

TINオブジェクトを指定します。(SDO_TINデータ型の詳細は、「TINに関連するオブジェクト型」を参照してください。)

dem

DEM GeoRasterオブジェクトを指定します。(SDO_GEORASTERデータ型の詳細は、『Oracle Spatial and Graph GeoRaster開発者ガイド』を参照してください。)

blocksize

DEMのブロック・サイズをピクセル数で指定します。

crs_units_per_pixel

各ピクセルに対する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;
/