1.4 GeoRasterの物理記憶域

GeoRasterは、メタデータおよびデータの物理記憶域を最適化します。

GeoRasterデータは、セルの多次元マトリックスおよびGeoRasterメタデータで構成されます(「GeoRasterデータ・モデル」を参照)。多くのメタデータは、Oracle XMLTypeデータ型を使用してXML文書として格納されます。メタデータは、GeoRasterメタデータのXMLスキーマ(「GeoRasterメタデータのXMLスキーマ」を参照)に従って定義されます。GeoRasterオブジェクトの空間エクステント(フットプリント)はメタデータの一部ですが、これはGeoRasterオブジェクトの属性として、個別に格納されます。この方法によって、GeoRasterで空間ジオメトリ型および関連機能(GeoRasterオブジェクトに対するRツリー索引付けなど)を利用できるようになります。空間エクステントの詳細は、「spatialExtent属性」を参照してください。

GeoRasterメタデータは、CLOB記憶域オプションまたはバイナリXML記憶域オプションを使用して格納されます。GeoRasterメタデータのバイナリXML記憶域オプションは、デフォルトであり、ディスク領域が節約され、パフォーマンスが向上します。記憶域オプションは、GeoRaster表を作成するときに指定または変更できます。

大規模なGeoRasterオブジェクトを格納したり、取得や処理のパフォーマンスを最適化するために、セルの多次元マトリックスを小さいサブセットにブロック化できます。各ブロックはバイナリ・ラージ・オブジェクト(BLOB)として表に格納され、(SDO_GEOMETRY型の)ジオメトリ・オブジェクトを使用してブロックの正確なエクステントが定義されます。表の各行には、1つのブロックと、そのブロックに関連するブロック化情報のみが格納されます。(このブロック化方法は、ピラミッドにも適用されます。)

次元サイズ(行次元、列次元、バンド次元)は、対応するブロック・サイズで均等に分割されない場合があります。GeoRasterでは、境界ブロックを完成するために十分な元のセルが存在しない場合、埋込みが追加されます。境界ブロックは、各次元の正の方向の終了ブロックです。埋込みセルのセル深度は他のセルと同一で、値は0 (ゼロ)です。埋込みによって、各ブロックのBLOBサイズが同一になります。埋込みは、主に行ブロックおよび列ブロックに適用されますが、マルチバンド・イメージおよびハイパースペクトル・イメージの場合、バンド次元にも適用されます。たとえば、ライン単位のバンド・インターリーブ、(64,64,3)でのブロック化、8バンド、各バンドに64行および64列という仕様について考えてみます。この場合、次のようになります:

  1. 1つ目のブロックには、バンド0、1および2がライン単位のインターリーブで格納されます。

  2. 2つ目のブロックには、バンド3、4および5がライン単位のインターリーブで格納されます。

  3. 3つ目のブロックには、バンド6のライン1、バンド7のライン1、埋め込まれた64個の列値、バンド6のライン2、バンド7のライン2、埋め込まれた64個の列値、のように、64個のすべての行が格納されるまでこの順番で格納されます。

ただし、ピラミッドの最上位レベルでは、そのピラミッド・レベルの行次元と列次元の両方のサイズがそれぞれ行ブロック・サイズと列ブロック・サイズの半分以下の場合、埋込みは行われません。ピラミッドの物理記憶域の詳細は、「ピラミッド」を参照してください。

各GeoRasterブロックのサイズは同一です。ブロックの次元サイズは2の累乗値である必要はありません。ランダムな整数値です。各GeoRasterオブジェクトで最小限の埋込みスペースのみが使用されるように、ブロック・サイズは、GeoRasterオブジェクトの次元サイズに基づいて自動的に最適化できます。詳細は、「記憶域パラメータ」表1-1を参照してください。

ラスター・ブロック(BLOB)には、ラスター・セル値のバイナリ表現が含まれます。具体的には、浮動小数点のセル値は、サポートされているプラットフォーム上でIEEE 754標準形式で表されます。セル深度が8ビットよりも大きい場合、GeoRasterのセル・データはラスター・ブロックにビッグエンディアン形式で格納されます。セル深度が8ビットよりも小さい場合、ラスター・ブロックの各バイトには2つ以上のセルが含まれるため、1バイトのすべてのビットには、セル・データが埋め込まれます。セルは、必ず左から右へとバイトに埋め込まれます。たとえばセル深度が4ビットの場合は、1つのバイトに2つのセルが含まれ、そのバイトの最初の4ビットにはセルの値が含まれ、後の4ビットには次のセルの値が含まれますが、これは、インターリーブ・タイプで決定されます。

この物理記憶域モデルに基づいて、ラスター・データ・セットと関連メタデータ用のSDO_GEORASTER、およびラスター・イメージ内の各ブロック用のSDO_RASTERという2つのオブジェクト型が提供されています。

  • SDO_GEORASTERオブジェクトには、空間エクステント・ジオメトリ(フットプリントまたは範囲のエクステント)および関連メタデータが含まれます。このオブジェクト型の列を1つ以上含む表を、GeoRaster表といいます。

  • SDO_RASTERオブジェクトには、GeoRasterオブジェクトのブロック(タイル)に関する情報が含まれ、BLOBオブジェクトを使用して、ブロックのラスター・セル・データが格納されます。このオブジェクト型のオブジェクト表、または、このオブジェクト型の属性と同じ列を含むリレーショナル表を、ラスター・データ表(RDT)といいます。

SDO_GEORASTERオブジェクトには、イメージまたはラスター・データ・セットが格納され、参照されます。SDO_RASTERオブジェクトは、GeoRasterの内部オブジェクトです。SDO_GEORASTERオブジェクトは、ラスター・データ・セットのメタデータおよびラスター・セル・データ(SDO_RASTERオブジェクトのコレクション)を完全にカプセル化します。SDO_GEORASTERオブジェクトとそのSDO_RASTERオブジェクト間の関係は、GeoRasterによって自動的に管理されます。GeoRasterのファンクションおよびプロシージャのすべてのインタフェースでは、SDO_GEORASTERオブジェクトのみが処理され、SDO_GEORASTERオブジェクトのSDO_RASTERオブジェクトは、内部で自動的に処理されます。SDO_GEORASTERオブジェクトは、ユーザーがGeoRasterデータベースを構築して管理するための主要インタフェースであり、SDO_RASTERオブジェクトを使用するだけでラスター・データ表(RDT)を作成できます。

各SDO_GEORASTERオブジェクトには、RDTを一意に識別する属性の組合せ(rasterDataTablerasterID)、およびGeoRasterオブジェクトのラスター・セル・データを格納するRDT内の行が存在します。

図1-3に、様々な都市のイメージを持つ行を含む表内の、マサチューセッツ州ボストンのイメージを例にあげて、GeoRasterオブジェクトの記憶域を示します。

図1-3 GeoRasterデータの物理記憶域

図1-3の説明が続きます
「図1-3 GeoRasterデータの物理記憶域」の説明

次に、図1-3について説明します。

  • CITY_IMAGES表内の各行には、SDO_GEORASTERオブジェクトを含む、特定の都市(ボストンなど)のイメージに関する情報が含まれています。

  • SDO_GEORASTERオブジェクトには、イメージの全領域を占める空間エクステント・ジオメトリ、メタデータ、ラスターID、およびこのイメージに関連付けられたラスター・データ表の名前が含まれています。

  • ラスター・データ表内の各行には、ブロックの最小境界矩形(MBR)およびイメージ・データ(BLOBとして格納)を含む、イメージのブロック(四角形)に関する情報が含まれています。ラスター・データ表の詳細は、「ラスター・データ表」を参照してください。

SDO_GEORASTERおよびSDO_RASTERオブジェクト型の詳細は、「GeoRasterのデータ型および関連構造」を参照してください。

図1-4に、データベース内のGeoRasterデータ、およびいくつかの関連オブジェクトの物理記憶域を示します。

図1-4 Oracle Database内のGeoRasterデータ

図1-4の説明が続きます
「図1-4 Oracle Database内のGeoRasterデータ」の説明

次に、図1-4について説明します:

  • GeoRaster表内の各GeoRasterオブジェクトには、1つのラスター・データ表が関連付けられています。この表には、ラスター・イメージの各ブロックに対応するエントリが含まれています。

  • 各ラスター・イメージ・ブロックに対応するイメージ・データを含むBLOBは、ラスター表データとは別に格納されます。BLOBには、記憶域パラメータ(「記憶域パラメータ」を参照)を指定できます。

  • 各GeoRasterオブジェクトには、1つのラスター・データ表が関連付けられます。ただし、1つのラスター・データ表には複数のGeoRasterオブジェクトのブロックを格納できるため、GeoRaster表内の複数のGeoRasterオブジェクトは、1つのラスター・データ表に関連付けられる場合と、複数のラスター・データ表に関連付けられる場合があります。

  • GeoRaster表とラスター・データ表の関係は、GeoRasterシステム・データ(「GeoRasterシステム・データ・ビュー(xxx_SDO_GEOR_SYSDATA)」を参照)に保持されます。

  • GeoRaster表およびラスター・データ表には、索引(標準および空間)を作成できます。GeoRasterデータの索引付けの詳細は、「GeoRasterオブジェクトの索引付け」を参照してください。

  • 地上基準点(GCP)や値属性表(VAT)などの追加情報を、GeoRasterオブジェクトに関連付けることができます。

GeoRaster表と、それに関連するラスター・データ表の間では、多対多関係を保持できる場合であっても、通常は1対多関係を保持します。つまり、ラスター・データ表には、同じGeoRaster表に属するGeoRasterオブジェクトのセル・データのみが含まれます。GeoRaster表は、多数の(潜在的に無制限の) GeoRasterオブジェクトを保持できます。ラスターのサイズによっては、RDTを使用して限られた数のGeoRasterオブジェクトのラスター・ブロックを保持する必要があります。

次の注意事項は、Oracle Spatialのメタデータ・ビューに格納される表名および列名に適用されます。たとえば、これらの考慮事項はジオメトリ表、GeoRaster表、ラスター・データ表、およびジオメトリとGeoRaster列に適用されます。

  • 名前には、文字、数字、下線のみが使用できます。たとえば、名前に空白( )、アポストロフィ(')、引用符(")またはカンマ(,)を使用することはできません。

  • 名前がジオメトリ・メタデータ・ビューまたはGeoRasterシステム・データ(xxx_SDO_GEOR_SYSDATA)ビューに格納される前、あるいは表にアクセスする前に、名前で使用されているすべての文字は大文字に変換されます。

ノート:

スキーマ名には、いくつか異なる考慮事項が適用されます。スキーマ名には、大/小文字および空白( )やアポストロフィ(')などの特殊文字を使用できます。スキーマおよびその他のオブジェクトのネーミング規則の詳細は、データベースSQL言語リファレンスの「データベース・オブジェクトのネーミング規則」を参照してください。

ラスター・データ表の詳細は、「ラスター・データ表」を参照してください。

1.4.1 記憶域パラメータ

一部のGeoRaster操作では、記憶域の形式を指定または変更できます。関連のサブプログラムには、storageParamというパラメータが含まれており、このパラメータでは、キーワードとその値の文字列を引用符で囲みます。storageParamパラメータのキーワードは、ラスター・データの特性を指定します(表1-1を参照)。

ノート:

GeoRasterのサブプログラムに対する文字列(VARCHAR2)パラメータの中に数値がある場合は、ロケールにかかわらず、小数点にはピリオド(.)を使用する必要があります。

表1-1 ラスター・データのstorageParamのキーワード

キーワード 説明

bitmapmask

ビットマップ・マスクを考慮するかどうかを指定します。関連付けられたビットマップ・マスクを考慮する場合はTRUE、ビットマップ・マスクを考慮しない場合はFALSEを指定します。SDO_GEOR.copySDO_GEOR.changeFormatCopySDO_GEOR.mergeLayersSDO_GEOR.scaleCopyおよびSDO_GEOR.subsetの場合はデフォルトがTRUESDO_GEOR.mosaicの場合はデフォルトがFALSEです(SDO_GEOR.mosaicでは、TRUEは無効であり、無視されます)。

blocking

ラスター・データをブロック化するかどうかを指定します。TRUEを指定すると、指定したまたはデフォルトのblockSize値のブロックで、ラスター・データがブロック化されます。OPTIMALPADDINGは、指定したblockSize値が埋込みスペースを縮小するために最適値に調整されること以外、TRUEと同じです。FALSEを指定すると、ラスター・データはブロック化されません(イメージ全体に1つのブロックのみが使用されます)。OPTIMALPADDINGを指定すると、GeoRasterでSDO_GEOR_UTL.calcOptimizedBlockSizeプロシージャが内部的にコールされます。

blockingのデフォルト値は、blockSizeキーワードを指定した場合はTRUEです。blocking=TRUEを指定し、blockSizeキーワードを指定しない場合、デフォルトのblockSizeが(512,512,B)になります(Bは出力されるGeoRasterオブジェクトのバンド数です)。blockingblockSizeのいずれも指定しない場合、ソースGeoRasterオブジェクトからデフォルト値が導出されます(元のデータがブロック化されていない場合、デフォルトでは、出力されるGeoRasterオブジェクトのデータはブロック化されず、元のデータがブロック化されている場合、出力されるGeoRasterオブジェクトのデータは、同じブロック化方法でブロック化されます)。

blockSize

ブロック・サイズ(ブロック当たりのセル数)を指定します。出力されるGeoRasterオブジェクトの各次元に1つの値を指定する必要があります。たとえば、blocksize=(512,512,3)の場合、行次元に512、列次元に512、およびバンド次元に3が指定され、blocksize=(512,512)の場合、バンド次元を含まないGeoRasterオブジェクトの行および列のブロック・サイズに512が指定されます。値は負以外の整数である必要があります。値が0 (ゼロ)である場合は、ブロック・サイズが対応する次元のサイズであることを意味します。値が対応する次元のサイズより大きい場合は、埋込みが適用されます。この表のblockingキーワードの説明およびSDO_GEOR_UTL.calcOptimizedBlockSizeプロシージャの説明も参照してください。

通常のブロック化のみがサポートされます(すべてのブロックは常に同一サイズで、均等に配置されますが、ピラミッドの一部の最上位レベルはこのかぎりではありません)。ただし、ブロックの次元サイズは2の累乗値である必要はありません。ランダムな整数値です。たとえば、blockSize値として(589,1236,7)を指定できます。

ラスター・ブロックの物理記憶域サイズは、4GB以下である必要があります。

cellDepth

ラスター・データ・セットのセル深度を指定します(このセル深度は、すべてのセルのビット数およびデータ型の符号を示します)。ただし、セル深度を変更すると、データが消失したり、精度やイメージ品質が低下する場合があることに注意してください。値は、1BIT2BIT4BIT8BIT_U8BIT_S16BIT_U16BIT_S32BIT_U32BIT_S32BIT_REALまたは64BIT_REAL(_Uは符号なし、_Sは符号付き)のいずれかである必要があります。(複合cellDepth型はサポートされません。)cellDepthを指定しない場合、デフォルトでは、ソースGeoRasterオブジェクトの値が使用されます。たとえば、celldepth=16BIT_Uのように指定します。

compression

GeoRasterオブジェクトに適用する圧縮タイプを指定します。JPEG-FDEFLATEまたはNONEのいずれかの値を指定する必要があります。(NONEを使用して、圧縮されたGeoRasterオブジェクトを解凍することができます。)compressionを指定しない場合、デフォルトでは、ソースGeoRasterオブジェクトの圧縮タイプが使用されます。圧縮および解凍の詳細は、「圧縮と解凍」を参照してください。たとえば、compression=JPEG-Fのように指定します。

ソースGeoRasterオブジェクトが空白の場合は、SDO_GEOR.getRasterSubsetファンクションおよびSDO_GEOR.getRasterDataファンクションを除き、compressionキーワードは無視されます。(空白のGeoRasterオブジェクトの詳細は、「空白のGeoRasterオブジェクトと空のGeoRasterオブジェクト」を参照してください)。

interleaving

インターリーブ・タイプを指定します。(インターリーブについては、「バンド、レイヤーおよびメタデータ」を参照してください。)値は、BSQ(順次バンド)、BIL(ライン単位のバンド・インターリーブ)またはBIP (ピクセル単位のバンド・インターリーブ)のいずれかである必要があります。たとえば、interleaving=BSQのように指定します。

parallel

圧縮操作の並列度を指定します。(サブプログラム・コールでparallelParamパラメータを指定する場合、このパラメータは無視されます。)指定する場合、parallel=nという形式である必要があります(nは1より大きい)。compression記憶域パラメータとともに使用する必要があります。並列性は、次の圧縮操作でサポートされます。

  • NONEからJPEG-F

  • NONEからDEFLATE

  • JPEG-FからNONE

  • DEFLATEからNONE

並列性は、次の圧縮操作でサポートされていません

  • JPEG-FからDEFLATE

  • DEFLATEからJPEG-F

pyramid

元のピラミッド・データを保持する場合はTRUE、元のピラミッド・データを保持しない場合はFALSEを指定します。デフォルト値は、プロシージャによって異なり、SDO_GEOR.copyおよびSDO_GEOR.changeFormatCopyの場合はTRUESDO_GEOR.scaleCopySDO_GEOR.mosaicおよびSDO_GEOR.subsetの場合はFALSEです。(SDO_GEOR.scaleCopyまたはSDO_GEOR.subsetではTRUEは無効であり、無視されます。)

記憶域パラメータを使用してピラミッド・データを生成することはできません。ピラミッド・データを生成するには、GeoRasterオブジェクトの作成後にSDO_GEOR.generatePyramidプロシージャを使用する必要があります。

quality

JPEGの圧縮品質(圧縮によって発生する劣化の程度)を指定します。0 (最低の品質)から100 (最高の品質)までの整数値をGeoRasterオブジェクトに適用します。デフォルト値は75です。圧縮品質の詳細は、「GeoRasterオブジェクトのJPEG圧縮」を参照してください。たとえば、quality=80のように指定します。

例1-1では、ブロック・サイズを変更し、元のオブジェクトのピラミッド・データをコピーせずに、GeoRasterオブジェクトをコピーします。

例1-1 storageParamキーワードの使用

DECLARE
   gr1 sdo_georaster;
   gr2 sdo_georaster;
BEGIN
INSERT INTO georaster_table (georid, georaster) VALUES (2, sdo_geor.init('RDT_1'))
       RETURNING georaster INTO gr2;
SELECT georaster INTO gr1 FROM georaster_table WHERE georid=1;
sdo_geor.changeFormatCopy(gr1, 'blocking=OPTIMALPADDING
   blocksize=(512,512) pyramid=FALSE', gr2);
UPDATE georaster_table SET georaster=gr2 WHERE georid=2;
COMMIT;
END;
/

例1-1では、GeoRasterオブジェクトgr2のラスター・データ表はRDT_1です。ラスター・データを表RDT_1に書き込む場合、PL/SQLブロックの実行前にこの表が存在する必要があります。存在しない場合、SDO_GEOR.changeFormatCopyプロシージャでエラーが発生します。

ノート:

GeoRasterのセル・データまたはメタデータを挿入、更新または削除する場合は、例1-1および「コミット前のGeoRasterオブジェクトの更新」に示すように、トランザクションをコミットする前にGeoRasterオブジェクトを更新します。

例1-1および「SDO_GEORパッケージのリファレンス」の複数の例では、次のように定義されているGEORASTER_TABLEという表を使用しています。

CREATE TABLE georaster_table
( georid    NUMBER PRIMARY KEY,
  name      VARCHAR2(32),
  georaster SDO_GEORASTER );

1.4.2 ラスター・データ表

ラスター・データ表(RDT)は、SDO_RASTER型のオブジェクト表か、または次の列定義を持つリレーショナル表である必要があります。

  rasterID          NUMBER,
  pyramidLevel      NUMBER,
  bandBlockNumber   NUMBER,
  rowBlockNumber    NUMBER,
  columnBlockNumber NUMBER,
  blockMBR          SDO_GEOMETRY,
  rasterBlock       BLOB

RDTは、オブジェクト表であるかリレーショナル表であるかにかかわらず、列(rasterID、pyramidLevel、bandBlockNumber、rowBlockNumber、columnBlockNumber)に主キーが定義されている必要があります。

各RDTの名前は、引用符で囲まれていない有効な識別子と同じである必要があり、これらの名前は、スキーマ接頭辞を使用せずに、GeoRaster sysdataビューおよびSDO_GEORASTERオブジェクトにすべて大文字で格納されます。(各GeoRaster列の名前は、引用符で囲まれていない有効な識別子と同じである必要があり、GeoRaster sysdataビューにすべて大文字で格納されます。)

GeoRaster表内のGeoRasterオブジェクトで使用または参照されるRDTは、そのGeoRaster表のスキーマと同じスキーマにある必要があります。スキーマ間操作をサポートするためとGeoRasterオブジェクトのデータの整合性を確保するために、各RDTの名前は一意である必要があり、GeoRasterオブジェクトの(rasterDataTablerasterID)のペアはデータベース内で一意である必要があります。RDT名とRID番号を指定せずにSDO_GEOR.initおよびSDO_GEOR.createBlankファンクションを使用してGeoRasterオブジェクトを起動した場合、これらのファンクションは、一意性要件に従って新しいGeoRasterオブジェクトのrasterDataTable名とrasterID番号を自動的に生成します。SDO_GEOR_ADMIN.isRDTNameUniqueファンクションを使用すると、RDT名がGeoRasterですでに使用されているかどうかを確認してからそれを作成できます。SDO_GEOR_UTL.renameRDTプロシージャを使用すると、GeoRasterですでに使用されている既存のRDTを別の名前に変更できます。ラスター・データ表の名前の重複を解決するために、SDO_GEOR_ADMIN.maintainSysdataEntriesファンクションを使用できます。データベース間でGeoRasterデータを転送する場合の、競合の解決方法については、「データベース間でのGeoRasterデータの転送」を参照してください。

ラスター・データ表を作成すると、RDTの配置および記憶域特性を制御できます(たとえば、パフォーマンスの向上のために表をパーティション化するなど)。大規模なGeoRasterオブジェクトの場合、ラスター・データを別のラスター・データ表に格納し、そのラスター・データ表をピラミッド・レベルまたはブロック番号(あるいはその両方)でパーティション化することをお薦めします(ただし、一定数の小規模なGeoRasterオブジェクトの場合、あまり多くのRDTを作成することのないように、RDTを共有することを常に検討してください)。GeoRaster表およびラスター・データ表の格納には、SYSTEM表領域を使用しないでください。かわりに、GeoRaster表用の個別のローカル管理(デフォルト)表領域を作成してください。

ラスター・データ表の行を直接挿入または削除しないでください。該当するRDT内の行は、GeoRasterオブジェクトがラスター・データを使用して作成されたときやGeoRasterの表から削除されたときに、自動的に挿入または削除されます。

ラスター・データのブロック・サイズを選択する際は、次のことを考慮します。

  • ラスター・ブロックの最大長は4GBです。4GBを超えるブロック・サイズを指定しないでください。

  • 必要なラスター・ブロック・サイズを計算する際は、GeoRasterオブジェクトのcellDepth値を考慮します。

  • 適切なブロック・サイズを選択するには、ラスター・ブロック・サイズと、GeoRasterオブジェクトに必要なブロック数のバランスを取ります。サイズの大きいラスター・データの場合、行および列の次元サイズとして最低でも(512,512)をお薦めします。ラスター・ブロックが4 KB (64,64など)に近くなるようなブロック化サイズ値は、4 KBがOracleのBLOBを表外に格納する場合のしきい値であるため、通常は適切ではありません。

オブジェクト表またはリレーショナル・ラスター・データ表の作成方法の詳細は、「ラスター・データ表の作成」を参照してください。

1.4.3 空白のGeoRasterオブジェクトと空のGeoRasterオブジェクト

空白のGeoRasterオブジェクトは、すべてのセルが同じ値を持つ、特別なタイプのGeoRasterオブジェクトです。このオブジェクトのセルは、SDO_RASTERブロックに格納する必要はなく、かわりに、このセル値はメタデータのblankCellValue要素に登録されます。それ以外の点では、空白のGeoRasterオブジェクトは他のGeoRasterオブジェクトと同様に処理されます。空白のGeoRasterオブジェクトを作成するにはSDO_GEOR.createBlankファンクションを使用し、GeoRasterオブジェクトが空白のGeoRasterオブジェクトかどうかを確認するには、SDO_GEOR.isBlankファンクションを使用し、また、空白のGeoRasterオブジェクト内のセルの値を戻すには、SDO_GEOR.getBlankCellValueファンクションを使用します。

空のGeoRasterオブジェクトには、rasterDataTable名およびrasterIDのみが含まれます。空のGeoRasterオブジェクトを作成するには、SDO_GEOR.initファンクションを使用します。新しいGeoRasterオブジェクトを出力する操作の前に、空のGeoRasterオブジェクトを作成する必要があり、これによって、新しいGeoRasterオブジェクトの出力が、初期化済の空のGeoRasterオブジェクトに格納されます。

1.4.4 空のラスター・ブロック

GeoRasterは、容量の大きいモザイク・オブジェクトで記憶領域を節約したり、ラスター処理速度を向上させるために、空のラスター・ブロックをサポートしています。空のラスター・ブロックは、容量の大きいGeoRasterオブジェクトの特定のラスター・ブロックに対して使用可能なラスター・データがない場合に使用します。このようなGeoRasterデータは、特別なスパース・データ型のデータです。空の各ラスター・ブロックのラスター・データ表内にはエントリが存在していますが、BLOBの長さは(空であることを示す)0(ゼロ)になります。

GeoRaster操作(SDO_GEOR.changeCellValueSDO_GEOR.changeFormatCopySDO_GEOR.generatePyramidSDO_GEOR.getRasterDataSDO_GEOR.getRasterSubsetSDO_GEOR.mergeLayersSDO_GEOR.mosaicSDO_GEOR.scaleCopySDO_GEOR.subsetSDO_GEOR.updateRasterなど)が、空のラスター・ブロックを持つソースGeoRasterオブジェクトに適用されると、空のまたは部分的に空の結果のラスター・ブロックが生成される可能性があります。

結果のラスター・ブロックは、そのブロック内のすべてのセルが空のソース・ラスター・ブロックから導出される場合に、空になります。結果のラスター・ブロックは、そのブロック内の一部のセルが空のソース・ラスター・ブロックから導出される場合にのみ、部分的に空になります。空のソース・ラスター・ブロックから導出された部分的に空の結果のラスター・ブロック内のセルは、特定の背景値(bgValuesパラメータで指定されている場合)または0 (ゼロ)(bgValuesパラメータが指定されていない場合)に設定されます。この設定が行われると、部分的に空のラスター・ブロックは通常の空ではないラスター・ブロックと同様になり、操作を終了した後に、結果のGeoRasterオブジェクト内の各ラスター・ブロックは、空または空ではない状態になります。

部分的に空のラスター・ブロックにデータを入力するとラスター・データが永続的に変更されてしまうため、GeoRasterオブジェクトの操作を行う際には一貫性のある背景値を適切に選択する必要があります。背景値としては、GeoRasterメタデータに格納されているNODATA値(存在する場合)を選択することをお薦めしますが、一貫して使用されている値であれば、他の背景値も選択できます。

GeoRasterオブジェクトに空のラスター・ブロックが含まれている場合、SDO_GEOR.generatePyramidの操作中に、部分的に空のラスター・ブロックに背景値または0 (ゼロ)が入力されるため、GeoRasterオブジェクトのピラミッド・データに空のラスター・ブロックが格納されないことがあります。このファンクションをコールしてピラミッドを生成するときは、この項の説明のように一貫性のある背景値を選択するように注意してください。

ビットマップ・マスク(「ビットマップ・マスク」を参照)にも空のラスター・ブロックが含まれる場合があり、欠落しているセルの値は0(ゼロ)を示します。データの入力が必要な場合、欠落しているセルは必ず0(ゼロ)の値で充填されます。

1.4.5 GeoRasterにおけるクロススキーマのサポート

GeoRaster表と、それに関連するラスター・データ表では、所有者が同じである必要があります。ただし、適切な権限を持つユーザーは、他のスキーマが所有するGeoRaster表と、それに関連するラスター・データ表を作成でき、他のスキーマが所有しているGeoRasterオブジェクトを作成、問合せ、更新および削除することもできます。GeoRasterオブジェクトのクロススキーマ問合せでは、GeoRaster表と、それに関連するラスター・データ表についてSELECTまたはREAD権限を持っている必要があります。GeoRasterオブジェクトのクロススキーマ更新では、GeoRaster表と、それに関連するラスター・データ表についてSELECTまたはREAD権限と、INSERT、UPDATEおよびDELETE権限を持っている必要があります。

「GeoRasterシステム・データ・ビュー(xxx_SDO_GEOR_SYSDATA)」で説明するALL_SDO_GEOR_SYSDATAビューには、現行ユーザーがアクセス可能なすべてのGeoRasterオブジェクトに関する情報が含まれています。リストされている各オブジェクトについて、現行ユーザーはGeoRaster表にアクセスできる必要があります。現行ユーザーがラスター・データにアクセスすることも必要な場合、そのユーザーは、関連するラスター・データ表に対する適切な権限も持っている必要があります。

すべてのSDO_GEORサブプログラムは、現行の接続スキーマ以外のスキーマに定義されているGeoRasterオブジェクトに対して機能できます。

クロススキーマGeoRaster操作の例は、「クロススキーマ操作の実行」を参照してください。