7.48 SDO_GEOR.getCellValue

形式

SDO_GEOR.getCellValue(
     georaster    IN SDO_GEORASTER, 
     pyramidLevel IN NUMBER, 
     rowNumber    IN NUMBER, 
     colNumber    IN NUMBER, 
     bandNumber   IN NUMBER 
     ) RETURN NUMBER;

または

SDO_GEOR.getCellValue(
     georaster    IN SDO_GEORASTER, 
     pyramidLevel IN NUMBER, 
     rowNumber    IN NUMBER, 
     colNumber    IN NUMBER, 
     bands        IN VARCHAR2 
     ) RETURN SDO_NUMBER_ARRAY;

または

SDO_GEOR.getCellValue(
     georaster    IN SDO_GEORASTER, 
     pyramidLevel IN NUMBER, 
     ptGeom       IN SDO_GEOMETRY, 
     layerNumber  IN NUMBER 
     ) RETURN NUMBER;

または

SDO_GEOR.getCellValue(
     georaster    IN SDO_GEORASTER, 
     pyramidLevel IN NUMBER, 
     ptGeom       IN SDO_GEOMETRY, 
     layers       IN VARCHAR2 
     ) RETURN SDO_NUMBER_ARRAY;

説明

GeoRasterオブジェクトの任意の位置にある単一のセルの値を戻します。セル座標系の行、列および1つ以上のバンド番号を指定するか、またはモデル座標系の点ジオメトリおよび1つ以上の論理レイヤー番号を指定します。

指定したセルが空のラスター・ブロックに存在する場合、このファンクションはNULL値を戻します。

GeoRasterオブジェクトの指定したウィンドウで、ラスター・データ・セルの値を変更するには、SDO_GEOR.changeCellValueプロシージャを使用します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

pyramidLevel

値を戻すセルを含むピラミッド・レベルを指定します。

rowNumber

値を戻すセルを含む行の番号を指定します。

colNumber

値を戻すセルを含む列の番号を指定します。

bandNumber

値を戻すセルを含む物理バンドの番号を指定します。

bands

処理を実行する物理バンド番号を示す文字列を指定します。カンマで値を区切り、ハイフンで範囲を指定します(たとえば、1-3はバンド1、2および3を示します)。

ptGeom

値を戻すセルを示す点ジオメトリを指定します。

layerNumber

値を戻すセルを含む論理レイヤーの番号を指定します。(「バンド、レイヤーおよびメタデータ」で説明したように、論理レイヤー番号は、物理バンドの番号に1を足した値です。)

layers

処理を実行する論理レイヤー番号を示す文字列を指定します。カンマで値を区切り、ハイフンで範囲を指定します(たとえば、2-4はレイヤー2、3および4を示します)。(「バンド、レイヤーおよびメタデータ」で説明したように、論理レイヤー番号は、物理バンドの番号に1を足した値です。)

使用上のノート

このファンクションは、ラスター・オブジェクトに格納されている元のセル値を戻します。このファンクションではセル値を使用した内挿は行われません。(内挿方法を使用して点の位置を評価するには、SDO_GEOR.evaluateDoubleファンクションを使用します。)このファンクションは、メタデータに定義されているスケール変更ファンクション(通常は、元のセル・データを希望する値または値の範囲にスケール変更するために使用)を適用しません。また、ビン・ファンクションも適用しません。スケール変更されたセル値を取得するには、次のステップを実行します。

  1. SDO_GEOR.getCellValueファンクションをコールして元のセル値を戻します。

  2. SDO_GEOR.getScalingファンクションをコールして、スケール変更ファンクションの係数(a0、a1、b0、b1)を戻します。

  3. PL/SQLまたはその他のプログラミング言語で次の式を使用して、結果を計算します。

    value = (a0 + a1 * cellvalue) / (b0 + b1 * cellvalue)

次の例では、GEORASTER_TABLE表で、GEORID列値が21である行に含まれているGeoRasterオブジェクト(GEORASTERE列)の4つのセルの値を戻します。GEORASTER_TABLE表の定義は、「記憶域パラメータ」例1-1の次に説明されています。

SELECT sdo_geor.getCellValue(georaster,0,383,47,0) V383_47,
       sdo_geor.getCellValue(georaster,0,47,383,0) V47_383,
       sdo_geor.getCellValue(georaster,0,128,192,0) V128_192,
       sdo_geor.getCellValue(georaster,0,320,256,0) V320_256
  FROM georaster_table WHERE georid=21;

   V383_47    V47_383   V128_192   V320_256
---------- ---------- ---------- ----------
        48         55         52         53

次の例では、GEORASTER_TABLE表で、GEORID列値が1である行に含まれているGeoRasterオブジェクト(GEORASTER列)の行番号10、列番号10のバンド0、1、2のセルの値を戻します(GEORASTER_TABLE表の定義は、「記憶域パラメータ」例1-1の次に説明されています)。

SELECT sdo_geor.getcellvalue(a.georaster,0,10,10,'0-2')
  FROM georaster_table a WHERE georid=1;
 
SDO_GEOR.GETCELLVALUE(A.GEORASTER,0,10,10,'0-2')
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(88, 137, 32)