5.8 ラスター・データのスケール変更およびオフセット設定

ラスター・データのスケール変更およびオフセット設定の操作を実行できます。

ラスター代数には、地図的モデリング(「地図的モデリング」を参照)、植生指標計算(「植生指標計算」を参照)、タッセルド・キャップ変換(「タッセルド・キャップ変換」を参照)などの多くのアプリケーションがあります。この章および「イメージ処理および仮想モザイク」の各トピックでは、GeoRasterラスター代数のサンプル・アプリケーションについていくつか説明します。

例5-20 フィートからメートルへのDEMデータの変換

GeoRasterオブジェクトのセル値は、特定の単位によって空間オブジェクトの量的属性を表すことがあります。たとえば、DEM GeoRasterオブジェクトの標高データは、フィート単位になることがあります。アプリケーションでは、幾何補正などの操作で標高をメートルなどの別の単位に変換する必要があります。ラスター代数を使用して、DEMデータのスケールをフィートからメートルに変更(単位変換)できます(例5-20を参照)。

DECLARE 
  geor1    SDO_GEORASTER;
  geor2    SDO_GEORASTER;
BEGIN
  --Source GeoRaster object with a single DEM layer
  select georaster into geor1 from georaster_table where georid = 1;
  --To store the output DEM layer
  select georaster into geor2 from georaster_table where georid = 2 for update;
  --Scale elevation from feet to meters using the unit factor
  sdo_geor_ra.rasterMathOp(geor1,SDO_STRING2_ARRAY('{0} * 0.3048'),null,geor2);
  --Commit changes to the output georaster object
  update georaster_table set georaster = geor2 where georid = 2;
  commit;
END;
/

例5-21 ジオイド高によるDEMのオフセット

GeoRasterオブジェクトのセル・データは、状況によっては処理を続行するために定数によってオフセットする必要があります。たとえば、DEMレイヤーは、楕円体高度ではなく海抜高度を表すことがあります。RPCモデルによって地理参照されるRAWイメージをオルソ補正するには、楕円体高度が必要です。例5-21では、ジオイド高で海抜DEMをオフセットし、楕円体DEMを生成します。

DECLARE 
  geor1    SDO_GEORASTER;
  geor2    SDO_GEORASTER;
BEGIN
  --Source GeoRaster object with a single orthometric DEM layer
  select georaster into geor1 from georaster_table where georid = 1;
  --To store the output DEM layer
  select georaster into geor2 from georaster_table where georid = 2 for update;
  --Offset elevation by geoid height to get ellipsoidal elevation
  sdo_geor_ra.rasterMathOp(geor1,SDO_STRING2_ARRAY('{0} - 28.8'),null,geor2);
  --Commit changes to the output GeoRaster object
  update georaster_table set georaster = geor2 where georid = 2;
  commit;
END;
/

例5-22 変換(スケール変更)およびオフセット設定

例5-20例5-21の操作は組み合せて1つの単純なステップにできます(例5-22を参照)。

DECLARE 
  geor1    SDO_GEORASTER;
  geor2    SDO_GEORASTER;
BEGIN
  --Source GeoRaster object with a single DEM layer
  select georaster into geor1 from georaster_table where georid = 1;
  --To store the output DEM layer
  select georaster into geor2 from georaster_table where georid = 2 for update;
  --Scale elevation from feet to meters and offset elevation by geoid height
  sdo_geor_ra.rasterMathOp(geor1,SDO_STRING2_ARRAY('{0} * 0.3048 - 28.8'),null,geor2);
  --Commit changes to the output georaster object
  update georaster_table set georaster = geor2 where georid = 2;
  commit;
END;
/