1.10 NODATA値および値の範囲
NODATA値は、不明または無効な値を持つセルで使用されます。
個別のラスター・レイヤーごとに、ラスター・レイヤーに関連付けられた複数のNODATA値またはNODATA値の範囲、あるいはその両方を持つことができます。GeoRasterメタデータ・スキーマには、各ラスター・レイヤーのNODATA情報が格納されます。具体的には、オブジェクト・レイヤーに関連付けられたNODATA値および値の範囲が他のサブレイヤーに適用されます。サブレイヤーのNODATA値および値の範囲は、オブジェクト・レイヤーのNODATA値および値の範囲と、サブレイヤーに存在するNODATAメタデータを結合したものです。サブレイヤーからNODATA値または値の範囲を削除しても、オブジェクト・レイヤーに存在する値または値の範囲は削除できません。
NODATA値および値の範囲は、リサンプリング中(スケール変更によるピラミッドの生成時、イメージの生成時など)に考慮されます。デフォルトで、NODATAセルは、拡大や縮小を回避するために通常のセルとして処理されます。ただし、NODATA値または値の範囲が考慮対象として選択され、リサンプリング・メソッドがBILINEAR
、BIQUADRATIC
、CUBIC
、AVERAGE4
またはAVERAGE16
の場合は、リサンプリングの計算に含まれるセル値がNODATA値であると、リサンプリングの結果もNODATA値となります。結果のNODATA値は、各リサンプリング・ウィンドウ内の最初のNODATA値です(セル値は左上角から右下角に向かって行ごとに順序付けされます)。
リリース11gより前からのGeoRasterオブジェクトがNODATAメタデータをラスターの記述に格納している場合、そのメタデータは下位互換性を確保するため現在のリリースでも有効です。古いNODATA値はオブジェクト全体の値とみなされます。この値は、オブジェクト・レイヤーに対してSDO_GEOR.addNODATAプロシージャをコールするとオブジェクト・レイヤーに移動され、SDO_GEOR.deleteNODATAプロシージャをコールすると古いNODATA値を削除せずにオブジェクト・レイヤーに移動されます。
NODATA値または値の範囲はSDO_RANGE_ARRAY型を使用して記述され、VARRAY(1048576) OF SDO_RANGE
として定義されます。SDO_RANGE型は、下限値と上限値を指定し、(LB NUMBER, UB NUMBER)
として定義されます。
-
SDO_RANGE定義で単一の数値を指定するには、LBに数値を、UBにNULLを指定します。次の例では、NODATA値として2を指定します。
SDO_RANGE_ARRAY(SDO_RANGE(2,NULL))
-
SDO_RANGE(LB, UB)。ここで、LB=UBは、SDO_RANGE(LB, NULL)と同じであるとみなされます。
-
実際のNODATA値の範囲(UBがNULL以外の値で、LBがUBより小さい値)には、下限が含まれ、上限は含まれません。
-
複数のNODATA値の範囲および個別のNODATA値を指定できます。次の例では、1つの単一のNODATA値(5)と、2つのNODATA値の範囲(1,3)および(7,8)を指定します。
SDO_RANGE_ARRAY(SDO_RANGE(1,3), SDO_RANGE(5,NULL), SDO_RANGE(7,8))
いくつかのPL/SQLサブプログラムは、GeoRasterレイヤーに関連付けられたNODATA値および値の範囲に対して追加、削除、問合せなどの操作を実行します。
GeoRasterでは、ビットマップ・マスクは特別なタイプのNODATAとして処理されます(1つ以上の不規則な領域を指定するNODATAマスクはNODATA領域として処理されます)。この場合、ビットマップ・マスクはlayerInfo
メタデータのbitmapMask
要素で識別されるだけではなく、layerInfo
メタデータのNODATA
要素に登録されます。ただし、ビットマップ・マスクのNODATA値は、リサンプリング処理および統計分析中は考慮されません。
親トピック: GeoRasterの概要および概念