GeoRasterはOracle Spatial and Graphの機能で、ラスター画像およびグリッド・データとその関連メタデータの格納、索引付け、問合せ、分析および配信を行います。GeoRasterは、Oracleの空間データ型および1つのオブジェクト・リレーショナル・スキーマを提供します。これらのデータ型およびスキーマ・オブジェクトを使用すると、地表面またはローカル座標系での位置を参照可能な多次元グリッド・レイヤーとデジタル・イメージを格納できます。データが地理参照される場合、イメージ上のセルに対する地表の場所を検索したり、地表の場所に対して、その場所に関連付けられたイメージ上のセルを検索できます。
GeoRasterは、リモート・センシング、写真測量、主題図作成などの、イメージの取得または作成を行う任意のテクノロジからのデータに対して使用できます。ロケーション・ベースのサービス、地理イメージのアーカイブ、環境の監視とアセスメント、地質工学と地質学的調査、天然資源管理、防衛、緊急時対応、遠隔通信、輸送、都市計画、自国の保安などの広範囲な応用分野に利用できます。
注意:
GeoRasterを使用するには、Oracle Spatial and Graphの主な概念、データ型、使用方法、演算子、プロシージャおよびファンクションを理解しておく必要があります。これらの詳細は、『Oracle Spatial and Graph開発者ガイド』を参照してください。
また、ラスターとイメージの概念と用語、およびラスター・データを取得、作成または処理する方法も理解しておく必要があります。
GeoRasterは、Java仮想マシン(JVM)やOracle XML DBなど、Oracle Databaseに含まれるいくつかのコンポーネントを使用します。
注意:
Oracle Spatial and Graphの最初のインストール後、デフォルトではGeoRaster機能が無効になっています。GeoRasterを有効にするには、次の手順に従います。
SYS AS SYSDBAとしてデータベースに接続します。
次の文を入力します。
EXECUTE MDSYS.enableGeoRaster;
Oracle XML DBリポジトリが適切にインストールされていること、およびCOMPATIBILITYデータベース初期化パラメータの値が10.0以上であることも確認してください。詳細は、『Oracle Spatial and Graph開発者ガイド』のインストール、互換性およびアップグレードに関する付録を参照してください。
データベースのアップグレード後に、SDO_GEOR_ADMIN.isUpgradeNeededファンクションをコールして、現在のリリースで無効なGeoRasterオブジェクトおよび無効なシステム・データを確認する必要があります。詳細は、「データベースのGeoRasterオブジェクトおよびシステム・データのメンテナンス」を参照してください。
この章では、GeoRasterの中核的な概念と機能(GeoRasterのデータ・モデルと記憶方式、地理参照モデル、メタデータのサポート、リサンプリングのアルゴリズム、ピラミッド、圧縮、パラレル処理、ロードおよびエクスポートの機能、Java APIなど)について説明します。内容は次のとおりです。
地理的な特徴は、ベクトル形式、ラスター形式、またはその両方で表現できます。ベクトル・データでは、点は明示的なx,y,z座標で表現され、線は点の連なりであり、領域は境界が線であるポリゴンとして表現されます。この種類のベクトル形式は、空間オブジェクトの場所および形状の正確な記録に使用できます。ラスター・データでは、オブジェクトを覆うセルに値を割り当てることで空間オブジェクトを表現でき、セルを配列として表現できます。この種類のラスター形式は、ベクトル形式よりも精度は低いですが、多くのタイプの空間分析に最適です。
ラスター地理情報システム(GIS)分野では、通常、この種類のラスター・データはグリッド・データと呼ばれます。イメージ処理システムでは、通常、ラスター・データ表現はグリッドではなくイメージと呼ばれます。グリッドとイメージの間に相違点はありますが、どちらの形式の空間情報も通常はマトリックス構造(セルの配列)で表現され、各セルは空間に規則的に配置されます。
ラスター・データは、リモート・センシング、航空写真測量、地図作成法およびグローバル・ポジショニング・システムなどの様々な地理情報テクノロジによって収集され、使用されています。データは、収集された後、デジタル・イメージ処理システム、コンピュータ・グラフィック・アプリケーションおよびコンピュータ画像認識テクノロジによって分析されます。これらのテクノロジでは、複数のデータ形式が使用され、様々な製品が作成されます。
この項では、アプリケーション開発時に知っておく必要のある概念および技術に焦点を当て、GeoRasterのいくつかの主要なデータ・ソースおよび使用方法について簡単に説明します。テクノロジの詳細は説明しないため、それらの情報については一般的な教本や参考資料を参照してください。
リモート・センシングでは、ある領域またはオブジェクトの情報を、その領域またはオブジェクトに物理的に接続していないデバイスを介して取得します。たとえば、センサーの例には、衛星、気球、飛行機、ボート、地上局などがあります。センサー・デバイスには、フレーム・カメラ、プッシュブルーム(走査)方式のセンサー、合成開口レーダー(SAR)、水路用ソナー、ペーパー・スキャナ、フィルム・スキャナなどの広範囲なデバイスを使用できます。リモート・センシング・アプリケーションには、環境のアセスメントや監視、地球変動の調査や監視、天然資源調査などのためのアプリケーションがあります。
リモート・センシングによって収集されたデータは、通常、地理イメージと呼ばれます。波長、バンド数およびその他の要因によって、地理イメージの放射特性が決定されます。地理イメージにはシングルバンド、マルチバンドまたはハイパースペクトルがあり、いずれもGeoRasterで管理できます。これらの地理イメージ(特に衛星で観測されたイメージ)は、地表のあらゆる領域を表現できます。気象衛星の場合などは高い時間解像度が得られるため、変更を簡単に検出できます。リモート・センシング・アプリケーションでは、多くの場合、様々なタイプの解像度(時間、空間、スペクトル、放射)が重要になります。
写真測量では、写真による測定結果から測量情報を導出します。ほとんどの写真測量アプリケーションでは、航空写真や、衛星リモート・センシングによって収集された高解像度イメージが使用されます。従来の写真測量の主なデータは、白黒写真、カラー写真、立体写真セットなどのイメージです。
写真測量によって、イメージ作成時に存在したとおりのイメージとオブジェクトの精密な地理的関係が確立され、オブジェクトに関する情報をそのイメージから導出できます。イメージとオブジェクトの関係は、いくつかの方法によって確立できますが、その方法は、アナログ(光学的、機械的および電子的な構成要素を使用)または分析的(モデリングは数学的で処理はデジタル)の2つのカテゴリに分けられます。アナログのソリューションは、ソフトコピー写真測量とも呼ばれる、分析的/デジタルのソリューションに、次第に取って代わられています。
ソフトコピー写真測量システムでは、主に、数値標高モデル(DEM)やオルソ・イメージなどが生成されます。GeoRasterでは、これらのすべてのラスター・データを地理参照情報とともに管理できます。
地理情報システム(GIS)は、地理参照情報を取得、格納および処理します。従来のGISソフトウェアはベクトルベースかラスターベースのいずれかでしたが、Oracle Spatial and Graphでは、GeoRaster機能によってラスターとベクトルの両方のデータを処理できます。
ラスターベースGISシステムは、通常、幾何補正されたグリッド・データを処理します。グリッド・データには、離散データまたは連続データがあります。離散データには行政的小区域、土地利用と土地被覆、バス路線、油井などがあり、これらは通常、整数グリッドとして格納されます。連続データには標高、アスペクト、汚染濃度、環境騒音レベル、風速などがあり、これらは通常、浮動小数点グリッドとして格納されます。GeoRasterでは、これらのすべてのデータを格納できます。
離散グリッド・レイヤーの属性は、値属性表(VAT)というリレーショナル表に格納されます。VATには、GISベンダーが指定した列が含まれており、ユーザーが定義した列を含めることもできます。VATは、単純な表としてOracle Databaseに格納できます。ラスターGISアプリケーションでそのVATを使用できるように、対応するGeoRasterオブジェクト内にVAT名を登録することができます。
地図作成法は、地図を作成するための技術で、3次元の地表を(または地表以外の空間をローカル座標系を使用して)2次元で表すものです。今日では、地図をデジタルで作成したり、スキャンしてデジタル形式にできるようになり、地図作成が大幅に自動化されています。コンピュータに格納した地図では、高速な問合せ、分析および更新が可能です。
様々な使用方法や目的に対応する、多くのタイプの地図があります。地図のタイプの例には、基本図(背景)、主題図、地形図(3次元)、方位図、地籍図(土地利用)および差込み図などがあります。通常、地図には、縮尺棒、凡例、記号(北矢印など)、ラベル(都市名、河川名など)など、複数の注釈要素が含まれています。
地図は、ラスター形式(GeoRasterで管理可能)、ベクトル形式またはハイブリッド形式で格納できます。
デジタル・イメージ処理は、標準イメージ形式(TIFF、GIF、JFIF(JPEG)など)および多くの地理イメージ形式(NITF、GeoTIFF、ERDAS IMG、PCI PIXなど)のラスター・データの処理に使用されます。イメージ処理技術は、リモート・センシング・アプリケーションおよび写真測量アプリケーションで広範囲に使用されています。これらの技術を必要に応じて使用して、解釈を容易にするためのイメージの強調、修正および復元や、ぶれ、ひずみ、その他のノイズの修正、および地理オブジェクトの自動分類とターゲット識別を行うことができます。GeoRasterでは、ソース・イメージ、中間イメージおよび結果イメージをロードして管理できます。
地質学、地球物理学および地球化学のすべての分野ではデジタル・データが使用され、GeoRasterで管理可能ななんらかのデジタル・ラスター地図が作成されます。
地質学では、このデータには地域地質図、地層図、岩盤すべりの写真などが含まれます。地質学的調査および石油地質学で広く利用されるコンピュータによる地層シミュレーション、合成鉱物の推算、3次元での油田の特徴付けでは、ラスター・データが使用されます。
地球物理学では、重力、磁界、地震波の伝達およびその他の項目に関するデータを、地理参照情報とともに記録します。
地球化学では、複数の化学元素の含有量を分析および測定できます。多くの場合、Triangulated Irregular Network (TIN)技術を使用して、さらなる分析のためのラスター地図が作成され、イメージ処理も広範囲に使用されます。
ラスター・データには、次の要素の一部またはすべてを含めることができます。
セルまたはピクセル
空間ドメイン(フットプリント)
空間参照情報、時間参照情報およびバンド参照情報
セル属性
メタデータ
処理データおよび地図サポート・データ
GeoRasterでは、論理レイヤーを含む、構成要素ベースで多次元の汎用ラスター・データ・モデルが定義されます。ラスターのコア・データは、ラスター・セルの多次元の配列またはマトリックスです。各セルはマトリックスの1つの要素であり、セルの値はセル値と呼ばれ、セルの中心でサンプリングされます。GeoRasterオブジェクトをイメージとして表現する場合、セルはピクセルとも呼ばれ、1つのピクセルは1つの値のみを持ちます。(GeoRasterでは、セルとピクセルという用語は同義で使用されます。)マトリックスには、次元数、セル深度、各次元のサイズがあります。セル深度は、各セルの値のデータ・サイズです。セル深度は、すべてのセル値の範囲を定義し、この範囲は、セルの配列ではなく、個々のセルの範囲です。このコア・ラスター・データのセットをブロック化して、格納および取得を最適化できます。
このデータ・モデルには、論理レイヤー構造が含まれます。コア・データは、1つ以上の論理レイヤーで構成されています。たとえば、マルチチャネル・リモート・センシング・イメージの場合、このレイヤーを使用してイメージのチャネルがモデル化されます。(バンドおよびレイヤーの詳細は、「バンド、レイヤーおよびメタデータ」を参照してください。)今回のリリースでは、各レイヤーは、行次元と列次元で構成されるセルの2次元マトリックスです。
GeoRasterデータにはメタデータと属性が含まれ、GeoRasterデータの各レイヤーには個別のメタデータと属性が含まれます。GeoRasterデータ・モデルでは、コア・セル・マトリックス以外のすべてのデータは、GeoRasterメタデータです。GeoRasterメタデータは、さらに様々な構成要素に分割され(このため構成要素ベースと呼ばれます)、これらの構成要素には、次の種類の情報が含まれます。
オブジェクト情報
ラスター情報
空間参照システム情報
日時(時間参照システム)情報
バンド参照システム情報
各レイヤーのレイヤー情報
GeoRasterオブジェクトは、このデータ・モデルに基づいて、GeoRasterメタデータのXMLスキーマ(「GeoRasterメタデータのXMLスキーマ」を参照)によって記述され、このXMLスキーマを使用して、メタデータが構成されます。スキーマの一部のコンポーネントおよびサブコンポーネントは必須で、それ以外はオプションです。GeoRasterのローダー、エクスポータまたはその他のアプリケーションを開発する場合、このXMLスキーマを理解しておく必要があります。今回のリリースでは、メタデータに関するいくつかの制限事項があり、詳細は、「SDO_GEORパッケージのリファレンス」の「SDO_GEOR.validateGeoRaster」ファンクションの「使用上の注意」を参照してください(SDO_GEOR.validateGeorasterは、GeoRasterオブジェクトのメタデータの妥当性をチェックします)。
GeoRasterオブジェクトのデータ型(「GeoRasterのデータ型および関連構造」を参照)は、GeoRasterデータ・モデルに基づいています。
このデータ・モデルでは、ラスター・マトリックス内の各ピクセル(セル)の座標、およびその座標が表す地表面の座標という、2つのタイプの座標を考慮する必要があります。このため、セル座標系とモデル座標系の2つのタイプの座標系(空間)が定義されています。
セル座標系(ラスター空間とも呼ばれる)は、ラスター・マトリックス内のセルおよびセルの間隔の記述に使用され、セル座標系の次元は、行、列およびバンド(この順序どおり)です。モデル座標系(地上座標系またはモデル空間とも呼ばれる)は、地表の点、またはOracle SRID値に関連付けられた任意の座標系の記述に使用されます。モデル座標系の空間次元は、XおよびY(この順序どおり)で、それぞれセル座標系の列次元と行次元に相当します。論理レイヤーは、セル空間のバンド次元に相当します。
図1-1に、ラスター・イメージとそれに関連付けられた地理(空間)エクステントの関係、およびイメージの部分とそれらに関連付けられた地理実体の関係を示します。
次に、図1-1について説明します。
左側のオブジェクトでは、中サイズの四角形はラスター・イメージを表し、その中の四角形の領域は国立公園、点は特定のレストランの位置を表しています。イメージ内の各ピクセルは、セル座標系(ラスター・イメージに関連付けられる座標系)の座標で表すことができます。中サイズの四角形の左上角は、このGeoRasterオブジェクトのセル空間のULTCoordinate値に関連付けられた座標値です。
右側のオブジェクトでは、大きい四角形は、ラスター・イメージに表される地理領域(モデル(地上)空間での)を表し、この四角形の中には、国立公園と特定のレストランを表す空間ジオメトリが存在します。地理領域全体とその中のジオメトリは、モデル(地上)座標系の座標(経度/緯度データ用のWGS 84など)を使用してそれぞれ表すことができます。
2次元の単一レイヤーGeoRasterデータの場合、下方向の行次元および右方向の列次元がセル座標系に含まれます(図1-1を参照)。セル空間の基点は常に(0,0)です。間隔は1セルまたは1ピクセルで、多くの場合、セル座標は、整数の行番号および列番号で識別されます。マルチバンド・イメージの場合、バンド方向の軸はバンド次元と呼ばれます。時系列のマルチレイヤー・イメージ(各レイヤーに異なる日付またはタイムスタンプが設定される)の場合、レイヤー方向の軸は時間次元と呼ばれます。3次元GeoRasterデータには、行次元と列次元の両方に対して垂直である、垂直次元が含まれます。
注意:
今回のリリースでは、セル座標系の行次元、列次元およびバンド次元のみがサポートされています。行次元と列次元は、2次元空間座標のモデル化に使用されます。バンド次元は、マルチチャネルのリモート・センシング・イメージまたは写真、およびその他のタイプのレイヤー(時間レイヤーや、複数のグリッドを含む主題など)のモデル化に使用できます。
ラスター・データが数値の配列として処理される場合、ほとんどのアプリケーションにおいて行番号および列番号を使用した整数のアドレスで十分です。ただし、一般的にラスター・データ配列は連続する空間の離散表現であるため、セルの値が領域の集合値または点の単一値のいずれを表しているかに関係なく、セル空間とモデル空間の間の座標の1対1マッピングが必要です。
つまり、セル空間のサブセル(サブピクセル)・アドレッシングが必要です。サブセル・アドレッシングをサポートするために、セルの基点(0,0)が定義されている場所に応じて、GeoRasterは2つのタイプのセル座標系を定義します。図1-2は、各四角形が1つのセルを表し、2つのタイプのセル座標系(中心を基準とする座標系と左上を基準とする座標系)を示します。
デフォルトのセル座標系は基点がセルの中心にあるため、中心を基準とするセル座標系と呼ばれます。もう1つのセル座標系では基点がセルの左上にあるため、左上を基準とするセル座標系と呼ばれます。どちらの座標系でも、セルは均等なサイズの四角形で、単位は1セルです。IおよびJは整数、xおよびyは浮動小数点数と想定しています。
中心を基準とするセル空間では、I-0.5 <= x < I+0.5およびJ-0.5 <= y < J+0.5である場合、座標(x, y)は(I,J)にマップされます。
左上を基準とするセル空間では、I <= x < I+1.0およびJ <= y < J+1.0である場合、座標(x, y)はセル(I,J)にマップされます。
たとえば、サブセル座標(0.3, 0.3)は両方の座標系で同じ整数セル座標(0,0)を持ちますが、(0.3,0.6)は中心を基準とするセル空間では(0,1)を意味し、左上を基準とするセル空間では(0,0)を意味します。この2つのタイプのセル座標系は、spatialReferenceInfoメタデータのmodelCoordinateLocation要素によって定義されますが、定義されていない場合、デフォルトは中心を基準とするタイプになります。GeoRasterは、Oracle Database 11gで有効な両方のセル座標系をサポートし、サブセル・アドレスは、GeoRaster PL/SQL APIでサポートされます。(サブセル・アドレスは、以前のリリースでは内部的にサポートされていました。)
GeoRasterでは、セル空間の基点は常に(0,0)ですが、ラスター・データ自体の左上角のセルには、セル空間の基点座標とは異なる、セル空間内の座標を指定できます。したがって、左上角のセルの整数(行,列)座標は、(0,0)である必要はありません。この左上角をULTCoordinateといい、その値はメタデータに登録されます。これは基本的には、セル空間内のデータの相対位置を定義します。バンド次元が存在する場合、ULTCoordinate値は常に(行,列,0)です。各セルの座標は、ULTCoordinate値ではなく、セル空間の基点を基準としています。セル座標系の基点は、ULTCoordinate値と同じである必要はありません。
モデル座標系は、空間次元およびその他の次元(存在する場合)で構成されます。空間次元はx次元、y次元、およびz次元と呼ばれ、これらの次元の値は、測地座標系、投影座標系またはローカル座標系に関連付けることができます。その他の次元には、スペクトル次元および時間次元(それぞれs次元およびt次元と呼ばれる)があります。GeoRaster SRSでは現在、モデル座標系の2つの空間次元(X,Y)および3つの空間次元(X, Y, Z)がサポートされています。(様々な座標系のタイプなどの座標系の詳細は、『Oracle Spatial and Graph開発者ガイド』を参照してください。)
GeoRasterモデル座標系は、Oracle Spatial and Graph SRIDによって定義されます。モデル座標は、指定したSRIDと同じ単位を持ち、モデル座標系で定義された値の範囲内にある必要があります。たとえば、8307などの測地座標系にGeoRasterオブジェクトを地理参照する場合、その空間参照システム(SRS)から導出されるモデル座標の単位は10進度で、経度の値は-180.0から+180.0の範囲内に、緯度の値は-90.0から+90.0の範囲内にあることが必要です。
セル座標とモデル座標の関係は、GeoRasterの参照システム(マッピング方法)によってモデル化されます。定義されているGeoRasterの参照システムを次に示します。
空間参照システム(GeoRaster SRS)では、セル座標(行,列,垂直位置)がモデル座標(X,Y,Z)にマップされます。GeoRasterデータに空間参照システムを使用することを、データを地理参照するといいます。(地理参照の詳細は、「地理参照」を参照してください。)
時間参照システム(GeoRaster TRS)では、セル座標(時間)がモデル座標(T)にマップされます。
バンド参照システム(GeoRaster BRS)では、セル座標(バンド)がモデル座標(S (スペクトル(Spectral)のS))にマップされます。
今回のリリースでは、これらの各参照システムの少なくとも一部がGeoRasterのXMLスキーマに定義されています。ただし、今回のリリースでは、空間参照システムのみがサポートされています。つまり、(行,列)座標と(X,Y)または(X, Y, Z)座標の関係のみをマップ可能です。モデル座標系が測地座標系である場合、(X,Y)は(経度,緯度)を表します。ただし、時間参照システムおよびバンド参照システムを使用して、スペクトル分解や、ラスター・データの収集タイミングなどの有効な時間情報およびスペクトル情報を格納することができます。
その他のメタデータは、「バンド、レイヤーおよびメタデータ」に示すように、GeoRaster XMLメタデータの<layerInfo>要素に格納されます。
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つ目のブロックには、バンド0、1および2がライン単位のインターリーブで格納されます。
2つ目のブロックには、バンド3、4および5がライン単位のインターリーブで格納されます。
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を一意に識別する属性の組合せ(rasterDataTableとrasterID)、およびGeoRasterオブジェクトのラスター・セル・データを格納するRDT内の行が存在します。
図1-3に、様々な都市のイメージを持つ行を含む表内の、マサチューセッツ州ボストンのイメージを例にあげて、GeoRasterオブジェクトの記憶域を示します。
次に、図1-3について説明します。
CITY_IMAGES表内の各行には、SDO_GEORASTERオブジェクトを含む、特定の都市(ボストンなど)のイメージに関する情報が含まれています。
SDO_GEORASTERオブジェクトには、イメージの全領域を占める空間エクステント・ジオメトリ、メタデータ、ラスターID、およびこのイメージに関連付けられたラスター・データ表の名前が含まれています。
ラスター・データ表内の各行には、ブロックの最小境界矩形(MBR)およびイメージ・データ(BLOBとして格納)を含む、イメージのブロック(四角形)に関する情報が含まれています。ラスター・データ表の詳細は、「ラスター・データ表」を参照してください。
SDO_GEORASTERおよびSDO_RASTERオブジェクト型の詳細は、「GeoRasterのデータ型および関連構造」を参照してください。
図1-4に、データベース内の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 and Graphメタデータ・ビューに格納されている列名に適用されます。たとえば、これらの考慮事項はジオメトリ表、GeoRaster表、ラスター・データ表、およびジオメトリとGeoRaster列に適用されます。
名前には、文字、数字、下線のみが使用できます。たとえば、名前に空白( )、アポストロフィ(')、引用符(")またはカンマ(,)を使用することはできません。
名前がジオメトリ・メタデータ・ビューまたはGeoRasterシステム・データ(xxx_SDO_GEOR_SYSDATA)ビューに格納される前、あるいは表にアクセスする前に、名前で使用されているすべての文字は大文字に変換されます。表名で指定されるすべてのスキーマ名も、同様に変換されます。
ラスター・データ表の詳細は、「ラスター・データ表」を参照してください。
GeoRaster表およびラスター・データ表におけるクロススキーマのサポートの詳細は、「GeoRasterにおけるクロススキーマのサポート」を参照してください。
一部のGeoRaster操作では、記憶域の形式を指定または変更できます。関連のサブプログラムには、storageParamというパラメータが含まれており、このパラメータでは、キーワードとその値の文字列を引用符で囲みます。storageParamパラメータのキーワードは、ラスター・データの特性を指定します(表1-1を参照)。
注意:
この項に示すキーワードは、SDO_GEOR.importFromプロシージャのstorageParamパラメータおよびSDO_GEOR.exportToプロシージャのsubsetParamパラメータには、部分的に該当するか、または該当しません。「SDO_GEORパッケージのリファレンス」に示す、これらの各プロシージャに該当するパラメータのリファレンス情報を参照してください。
注意:
GeoRasterのサブプログラムに対する文字列(VARCHAR2)パラメータの中に数値がある場合は、ロケールにかかわらず、小数点にはピリオド(.)を使用する必要があります。
表1-1 ラスター・データのstorageParamのキーワード
| キーワード | 説明 |
|---|---|
ビットマップ・マスクを考慮するかどうかを指定します。関連付けられたビットマップ・マスクを考慮する場合は |
|
ラスター・データをブロック化するかどうかを指定します。
|
|
ブロック・サイズ(ブロック当たりのセル数)を指定します。出力されるGeoRasterオブジェクトの各次元に1つの値を指定する必要があります。たとえば、 通常のブロック化のみがサポートされます(すべてのブロックは常に同一サイズで、均等に配置されますが、ピラミッドの一部の最上位レベルはこのかぎりではありません)。ただし、ブロックの次元サイズは2の累乗値である必要はありません。ランダムな整数値です。たとえば、 ラスター・ブロックの物理記憶域サイズは、4GB以下である必要があります。 |
|
ラスター・データ・セットのセル深度を指定します(このセル深度は、すべてのセルのビット数およびデータ型の符号を示します)。ただし、セル深度を変更すると、データが消失したり、精度やイメージ品質が低下する場合があることに注意してください。値は、 |
|
GeoRasterオブジェクトに適用する圧縮タイプを指定します。 ソースGeoRasterオブジェクトが空白の場合は、 |
|
インターリーブ・タイプを指定します。(インターリーブの詳細は、「バンド、レイヤーおよびメタデータ」を参照してください。)値は、 |
|
圧縮操作の並列度を指定します。(このパラメータは、サブプログラムのコールで
並列は次の圧縮操作にはサポートされません。
|
|
元のピラミッド・データを保持する場合は 記憶域パラメータを使用してピラミッド・データを生成することはできません。ピラミッド・データを生成するには、GeoRasterオブジェクトの作成後にSDO_GEOR.generatePyramidプロシージャを使用する必要があります。 |
|
JPEGの圧縮品質(圧縮によって発生する劣化の程度)を指定します。0 (最低の品質)から100 (最高の品質)までの整数値をGeoRasterオブジェクトに適用します。デフォルト値は75です。圧縮の質の詳細は、「GeoRasterオブジェクトのJPEG圧縮」を参照してください。たとえば、 |
例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 );
ラスター・データ表は、SDO_RASTER型のオブジェクト表か、または次の列定義を持つリレーショナル表である必要があります。
rasterID NUMBER, pyramidLevel NUMBER, bandBlockNumber NUMBER, rowBlockNumber NUMBER, columnBlockNumber NUMBER, blockMBR SDO_GEOMETRY, rasterBlock BLOB
ラスター・データ表は、オブジェクト表であるかリレーショナル表であるかにかかわらず、列(rasterID、pyramidLevel、bandBlockNumber、rowBlockNumber、columnBlockNumber)に主キーが定義されている必要があります。
各ラスター・データ表の名前は、引用符で囲まれていない有効な識別子と同じである必要があり、これらの名前は、スキーマ接頭辞を使用せずに、GeoRasterメタデータ・ビューおよびSDO_GEORASTERオブジェクトにすべて大文字で格納されます。(各GeoRaster列の名前は、引用符で囲まれていない有効な識別子と同じである必要があり、GeoRasterメタデータ・ビューにすべて大文字で格納されます。)また、各ラスター・データ表の名前は、データベース内で一意である必要があります。ラスター・データ表の名前の重複を解決するために、SDO_GEOR_ADMIN.maintainSysdataEntriesファンクションを使用できます(「SDO_GEOR_ADMINパッケージのリファレンス」を参照)。
ラスター・データ表を作成すると、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を表外に格納する場合のしきい値であるため、通常は適切ではありません。
オブジェクト表またはリレーショナル・ラスター・データ表の作成方法の詳細は、「ラスター・データ表の作成」を参照してください。
空白の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オブジェクトに格納されます。
GeoRasterは、容量の大きいモザイク・オブジェクトで記憶領域を節約したり、ラスター処理速度を向上させるために、空のラスター・ブロックをサポートしています。空のラスター・ブロックは、容量の大きいGeoRasterオブジェクトの特定のラスター・ブロックに対して使用可能なラスター・データがない場合に使用します。このようなGeoRasterデータは、特別なスパース・データ型のデータです。空の各ラスター・ブロックのラスター・データ表内にはエントリが存在していますが、BLOBの長さは(空であることを示す)0 (ゼロ)になります。
GeoRaster操作(SDO_GEOR.changeCellValue、SDO_GEOR.changeFormatCopy、SDO_GEOR.generatePyramid、SDO_GEOR.getRasterData、SDO_GEOR.getRasterSubset、SDO_GEOR.mergeLayers、SDO_GEOR.mosaic、SDO_GEOR.scaleCopy、SDO_GEOR.subset、SDO_GEOR.updateRasterなど)が、空のラスター・ブロックを持つソースGeoRasterオブジェクトに適用されると、空のまたは部分的に空の結果のラスター・ブロックが生成される可能性があります。
結果のラスター・ブロックは、そのブロック内のすべてのセルが空のソース・ラスター・ブロックから導出される場合に、空になります。結果のラスター・ブロックは、そのブロック内の一部のセルが空のソース・ラスター・ブロックから導出される場合にのみ、部分的に空になります。空のソース・ラスター・ブロックから導出された部分的に空の結果のラスター・ブロック内のセルは、特定の背景値(bgValuesパラメータで指定されている場合)または0 (ゼロ)(bgValuesパラメータが指定されていない場合)に設定されます。この設定が行われると、部分的に空のラスター・ブロックは通常の空ではないラスター・ブロックと同様になり、操作を終了した後に、結果のGeoRasterオブジェクト内の各ラスター・ブロックは、空または空ではない状態になります。
部分的に空のラスター・ブロックにデータを入力するとラスター・データが永続的に変更されてしまうため、GeoRasterオブジェクトの操作を行う際には一貫性のある背景値を適切に選択する必要があります。背景値としては、GeoRasterメタデータに格納されているNODATA値(存在する場合)を選択することをお薦めしますが、一貫して使用されている値であれば、他の背景値も選択できます。
GeoRasterオブジェクトに空のラスター・ブロックが含まれている場合、SDO_GEOR.generatePyramidの操作中に、部分的に空のラスター・ブロックに背景値または0 (ゼロ)が入力されるため、GeoRasterオブジェクトのピラミッド・データに空のラスター・ブロックが格納されないことがあります。このファンクションをコールしてピラミッドを生成するときは、この項の説明のように一貫性のある背景値を選択するように注意してください。
ビットマップ・マスク(「ビットマップ・マスク」を参照)にも空のラスター・ブロックが含まれる場合があり、欠落しているセルの値は0(ゼロ)を示します。データの入力が必要な場合、欠落しているセルは必ず0 (ゼロ)の値で充填されます。
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では、バンドとレイヤーの概念は異なります。バンドは、多次元ラスター・データ・セットの物理次元で、セル空間内の座標の1つです。たとえば、セル空間には行、列およびバンドという座標が存在する場合があります。バンドには、0からn-1の番号が付けられ、nは、最上位のレイヤー番号です。レイヤーは、GeoRasterデータ・モデル内の論理概念です。レイヤーは、バンドにマップされます。通常、1つのレイヤーは1つのバンドに対応し、rowDimensionSizeとcolumnDimensionSizeのサイズの2次元マトリックスで構成されます。レイヤーには、1からnの番号が付けられ、この番号は、layerNumber = bandNumber + 1として算出されます。
GeoRasterオブジェクトは、複数のバンド(複数のレイヤー)を含むことができます。たとえば、リモート・センシング・デバイスからの電磁波データは、特定の数のチャネルにグループ化されます(使用可能なチャネル数は、センシング・デバイスの性能によって異なります)。マルチスペクトル・イメージは複数のチャネルを含み、ハイパースペクトル・イメージは非常に多く(50以上)のチャネルを含みます。すべてのチャネルは、それぞれGeoRasterバンドにマップされ、これらのバンドはレイヤーに関連付けられます。
ラスターGISアプリケーションでは、データ・セットは複数のラスター・レイヤーを含むことができ、各レイヤーは、主題と呼ばれます。たとえば、ラスターに人口密度レイヤーを含めることができ、1平方マイルまたは1平方km当たりの平均住民数に応じて異なるセル値を使用します。その他の主題の例には、平均所得水準、土地利用(農地、宅地、工場用地など)、海抜標高などがあります。ラスターGISの複数の主題は、個別のGeoRasterオブジェクトまたは1つのGeoRasterオブジェクトに格納でき、各主題は、1つのレイヤーとしてモデル化されます。ラスターの主題およびマルチスペクトル・イメージ・チャネルも、それらが同じ次元を持つ場合は、1つのGeoRasterオブジェクトの個別のレイヤーとして格納できます。
図1-5に、複数のレイヤーおよび1つのラスター・データ表を持つイメージを示します。各レイヤーには複数のブロックが含まれ、各ブロックには通常多くのセルが含まれます。各ブロックに対応するエントリが、ラスター・データ表に含まれます。図1-5に示すとおり、GeoRasterではレイヤー番号は1から始まり、バンド番号は0 (ゼロ)から始まることに注意してください。
GeoRaster XMLメタデータは、オブジェクト・レイヤーおよび複数のレイヤーを参照します。オブジェクト・レイヤーは、GeoRasterオブジェクトが複数のレイヤーを含むか含まないかにかかわらず、そのオブジェクト全体を参照します。GeoRasterオブジェクトが複数のレイヤーを含む場合、各レイヤーはオブジェクト・レイヤーのサブレイヤーであり、1つのバンドを参照します。
各レイヤーには、オプションのメタデータ・セットを関連付けることができます。レイヤーのメタデータ項目は、ユーザー定義のレイヤーID、説明、ビットマップ・マスク、NODATA値および値範囲、スケール変更ファンクション、ビン・ファンクション、統計データ・セット(ヒストグラムなど)、グレースケール参照表、カラーマップ(疑似カラー参照表(PCT))などです。メタデータ項目は、GeoRasterメタデータのXMLスキーマで定義されます(GeoRasterメタデータのXMLスキーマの詳細は、「GeoRasterメタデータのXMLスキーマ」、「SDO_GEOR_HISTOGRAMオブジェクト型」のSDO_GEOR_HISTOGRAMオブジェクト型、「SDO_GEOR_COLORMAPオブジェクト型」のSDO_GEOR_COLORMAPオブジェクト型、「SDO_GEOR_GRAYSCALEオブジェクト型」のSDO_GEOR_GRAYSCALEオブジェクト型および「SDO_GEOR_SRSオブジェクト型」のSDO_GEOR_SRSオブジェクト型を参照してください)。
オブジェクト・レイヤーに関連付けられたメタデータは、GeoRasterオブジェクト全体に適用されます。1つのレイヤーに関連付けられたメタデータは、そのレイヤーのみに適用されます。たとえば、オブジェクト・レイヤーの統計データ・セットは、オブジェクトに含まれるレイヤーの数に関係なく、GeoRasterオブジェクトのすべてのセルに基づいて計算されますが、1つのレイヤーの統計データは、そのレイヤー内のセルのみに基づいて計算されます。
オブジェクト・レイヤーおよび他のレイヤーのメタデータは、<layerInfo>要素を使用してGeoRaster XMLメタデータに格納されますが、カラーマップ表やヒストグラム表など、個別の表に格納される場合もあります。GeoRaster XMLメタデータに格納されたメタデータは、GeoRasterによって管理され、ユーザーはGeoRaster APIを使用して、このメタデータを取得および変更できます。個別の表に格納されたメタデータの場合は、その表の名前をGeoRaster XMLスキーマに登録できます(この場合、アプリケーションで表の名前を取得できます)。ただし、GeoRasterでは、その表の存在または妥当性についてはチェックされず、その表に対して操作を行うこともできません。
インターリーブは、BSQ (順次バンド)、BIL (ライン単位のバンド・インターリーブ)およびBIP (ピクセル単位のバンド・インターリーブ)の3つのタイプがサポートされています。インターリーブは、バンド間またはレイヤー間のみに適用されます。また、GeoRasterオブジェクトの各ブロック内のセルのインターリーブのみに制限されています。これは、GeoRasterが常に、最初にGeoRasterオブジェクトのブロック化を実行し、次にブロックごとにインターリーブを実行することを意味します。ただし、同じGeoRasterオブジェクト内の各ブロックのインターリーブは、同じタイプになります。データをより効率的に処理および使用するために、SDO_GEOR.changeFormatCopyプロシージャをコールしてGeoRasterオブジェクトのコピーのインターリーブ・タイプを変更できます。
GeoRaster空間参照システム(SRS)は、GeoRasterオブジェクトのメタデータ構成要素であり、地理参照に関連する情報が含まれます。地理参照によって、GeoRasterデータのセル座標と実際の地上座標(またはいくつかのローカル座標)が関連付けられます。地理参照を実行すると、地上座標がセル座標に割り当てられ、セル座標が地上座標に割り当てられます。
GeoRasterでは、地理参照は、地理補正、幾何補正またはオルソ補正とは異なります。後者の3つの処理では、ラスター・データのセルのリサンプリングが頻繁に行われ、結果のGeoRasterデータのモデル座標系および次元サイズが異なる場合があります。地理参照を実行すると、セル座標と実際の座標(またはいくつかのローカル座標)が関連付けられます。地理参照を実行するには、適切な数式、十分な数の地上基準点(GCP)座標、またはリモート・センシング・システムからの精密なモデル・データを提供する必要があります。地理参照では、セル座標系とモデル座標系間での座標変換を容易にするために必要な場合を除き、GeoRasterセル・データまたはその他のメタデータは変更されません。
GeoRasterは、地理参照のために関数フィッティング・モデル(「関数フィッティング地理参照モデル」を参照)およびストアド・ファンクション・モデル(「地上基準点(GCP)地理参照モデル」を参照)の両方をサポートします。精密なモデルはサポートされていません。GeoRasterオブジェクトが関数フィッティング・モデルを使用して地理参照される場合は、SRSメタデータのisReferenced値がTRUEになり、参照されない場合、この値はFALSEです。
幾何補正は、水平座標に対して実行でき、これによって、GeoRasterデータ・セットのセルを投影図座標系にマップすることが可能になります。幾何補正後の各セルは、図で使用される単位の均等なサイズになり、モデル座標系(東西次元および南北次元)で配置されます。標高データ(DEM)を使用した幾何補正はオルソ補正と呼ばれ、これは、地形偏移を修正する特別な形式の幾何補正です。GeoRasterオブジェクトが幾何補正されており、関数フィッティング・モデルを使用して地理参照される場合は、そのメタデータのisRectified値がTRUEになり、それ以外の場合、この値はFALSEです。GeoRasterオブジェクトがオルソ補正されており、関数フィッティング・モデルを使用して地理参照される場合は、そのメタデータのisOrthoRectified値がTRUEになり、それ以外の場合、この値はFALSEです。
GeoRasterオブジェクトの地理参照の詳細は、「GeoRasterオブジェクトの地理参照」および「高度な地理参照」を参照してください。GeoRasterオブジェクトを幾何補正およびオルソ補正するには、「イメージの幾何補正」および「イメージのオルソ補正」を参照してください。
GeoRasterは、GeoRasterメタデータに格納される汎用関数フィッティング地理参照モデルを定義します。これには、広範囲に使用される複数のジオメトリ・モデルが含まれ、このモデルを使用すると、幾何補正されていないGeoRasterオブジェクトを地理参照できるようになります。
このモデルでは、2次元または3次元の地上座標と2次元のセル座標との間の変換、または2次元のセル座標と2次元または3次元の地上座標との間の変換をサポートします。モデルを説明する等式を次に示します。
rn = p(Xn,Yn,Zn) / q(Xn,Yn,Zn)
cn = r(Xn,Yn,Zn) / s(Xn,Yn,Zn)
等式の各変数の意味は、次のとおりです。
rnは、ラスター内のセルの正規化された行索引です。
cnは、ラスター内のセルの正規化された列索引です。
Xn , Yn , Znは、正規化された地上座標値です。
多項式p(Xn , Yn , Zn)、q(Xn , Yn , Zn)、r(Xn , Yn , Zn)およびs(Xn , Yn , Zn)は、図1-6に示す形式で指定されます。
図1-6に示す多項式の形式では、ijkは多項式の係数です。
4つの多項式はそれぞれ異なることがあります。また、各多項式は次の変数によって個別に説明されます。
pTypeは、多項式のタイプ(1または2)です。
nVarsは、変数の合計数(地上座標の次元0、2または3)です。
orderは、各変数の累乗の最大次数または多項式の各項の累乗の最大合計次数(最大で5)です。
nCoefficientsは、係数の合計数です(前の3つの数値から導出する必要があります)。
pTypeは、多項式の最大合計次数を意味し、多項式の項の合計数に影響を与えます。pType = 1は、最大次数が、多項式の各項に含まれるすべての変数の最大合計次数であることを示します。pType = 2は、最大次数が、多項式のすべての項に含まれる各変数の最大次数であることを示します。nVarsは、地上座標系が2D (X, Y)または3D (X,Y,Z)のいずれかであるかを示します。セル座標系は常に2Dです。たとえば、これは2次元座標間のアフィン変換と、3次元から2次元座標へのDLTモデルおよびRPCモデルをサポートしています。
多項式の項およびその係数の合計数および順番は、次のループ疑似コードの論理によって決定されます。
n = 0;
For (k = 0; k <= order; k++)
For (j = 0; j <= order; j++)
For (i = 0; i <= order; i++)
{
if (pType == 1 & (i+j+k) > order )
break;
polynomialCoefficients[n]=COEF[ijk];
n++;
}
前述の疑似コードでは、iの次数、jの次数、およびkはZの次数と想定し、また、nはGeoRasterメタデータ要素<polynomialCoefficients>内の係数の指数と想定します。したがって、COEF[ijk]は分子pまたは分母qの項x(i)y(j)z(k)の係数であり、polynomialCoefficients[n]はXMLメタデータ内の<polynomialCoefficients>要素(倍精度のリスト型)のn番目の倍精度数であり、COEF[ijk]はpolynomialCoefficients[n]と1対1で一致します。
実際の値ではない正規化された値は、計算時のエラーの発生を最小限にするために、そのデータ自体によって、格納および使用される場合とされない場合があります。行値と列値(row,column)および正規化された行値と列値(rn, cn)の間の変換、およびモデル座標(x,y,z)と正規化されたモデル座標(Xn , Yn , Zn)の間の変換は、次の変換(オフセット)とスケールを正規化したセットにより定義されます。
rn = (row - rowOff) / rowScale
cn = (column - columnOff) / columnScale
Xn = (x - xOff) / xScale
Yn = (y - yOff) / yScale
Zn = (z - zOff) / zScale
係数、スケールおよびオフセットはGeoRaster SRSメタデータに格納されます(「SDO_GEOR_SRSオブジェクト型」を参照)。
この関数フィッティング・モデルは汎用モデルです。これには、アフィン変換、二次多項式、三次多項式、DLT(Direct Linear Transformation)、二次有理、RPC(Rational Polynomial CoefficientsまたはRapid Positioning Coefficients)などの特定のジオメトリ・モデルが含まれます。これらの標準モデルの係数は、GeoRasterに格納するために、この項で説明する順序に変換されます。
SDO_GEOR.setSRSプロシージャを使用すると、GeoRasterオブジェクトの空間参照情報を直接設定でき、SDO_GEOR.getGeoreferenceTypeファンクションを使用すると、GeoRasterオブジェクトの特定の地理参照モデル・タイプを検出できます。
最も単純な地理参照モデル・タイプは、次に示す特別なアフィン変換です。
row = a + c * y column = d - c * x
前述の計算式では、cが0 (ゼロ)以外の値である場合、ラスター・データは幾何補正されているとみなされ、そのメタデータ内のisRectified値がTRUEになります。
アフィン変換では、pTypeは1または2のいずれかです。pおよびr多項式の場合、nVarsは2、orderは1、nCoefficientsは3で、qおよびs多項式の場合、nVarsは0、orderは0、nCoefficientsは1です。
二次多項式モデルでは、pTypeは1です。pおよびr多項式の場合、nVarsは2、orderは2、nCoefficientsは6で、qおよびs多項式の場合、nVarsは0、orderは0、nCoefficientsは1です。
三次多項式モデルでは、pTypeは1です。pおよびr多項式の場合、nVarsは2、orderは3、nCoefficientsは10で、qおよびs多項式の場合、nVarsは0、orderは0、nCoefficientsは1です。
DLTモデルでは、pTypeは1または2のいずれかです。すべての多項式について、nVarsは3、orderは1、nCoefficientsは4です。また、qおよびs多項式は同一である必要があります。
二次有理モデルでは、pTypeは1です。すべての多項式について、nVarsは3、orderは2、nCoefficientsは10です。
RPCモデルでは、pTypeは1です。すべての多項式について、nVarsは3、orderは3、nCoefficientsは20です。
DLT、RPCおよびその他のジオメトリ・モデルの詳細は、サード・パーティの関連するドキュメントを参照してください。
GeoRasterは、地上基準点(GCP)記憶域および地理参照をサポートしています。地上基準点(GCP)または単なる基準点は、一部の参照座標系のその座標(X,YまたはX,Y,Z)とGeoRasterオブジェクトのセル空間内の対応する位置(行,列)がわかる点です。参照座標系には、座標系が不明な場合のSRID 999999など、任意の有効なOracle Spatial and Graph座標系を指定できます。GCPのコレクションおよびそれに関連するジオメトリ・モデル(関数フィッティング・メソッド)は、GeoRasterではストアド・ファンクション地理参照モデルとも呼ばれます。
GeoRaster SRSに格納されているか、パラメータで指定されているGCPを使用して、関数フィッティング・モデルを生成することができます。詳細は、SDO_GEOR.georeferenceファンクションを参照してください。
GCPを選択するためのガイドラインは、次のとおりです。
点は、GeoRasterオブジェクトと参照座標系の両方で簡単に識別できる必要があります。
点は、結果が非対称にならないようにするために、GeoRasterオブジェクトの対象となっている領域内で均等に分散される必要があります。
結果が安定するように、点は一列に配置することはできません。
GCPまたはストアド・ファンクションは、SDO_GEOR_GCPオブジェクト型(「SDO_GEOR_GCPオブジェクト型」を参照)、SDO_GEOR_GCP_ COLLECTIONコレクション型(「SDO_GEOR_GCP_ COLLECTIONコレクション型」を参照)およびSDO_GEOR_GCPGEOREFTYPEオブジェクト型(「SDO_GEOR_GCPGEOREFTYPEオブジェクト型」を参照)を使用して指定されます。
GCPを使用して地理参照するには、ジオメトリ・モデル(つまり、GeoRasterオブジェクトのセル空間と参照座標系間の関係を数学的にモデル化する方法)も選択する必要があります。GeoRasterでは、GCP地理参照で次のジオメトリ・モデルがサポートされています: アフィン(デフォルト・モデル)、二次多項式、三次多項式、DLT、二次有理およびRPC。アフィン、二次多項式および三次多項式は、多項式の順番がそれぞれ1、2、3である2次元の多項式モデルであるのに対し、DLT、二次有理およびRPCは、多項式の順番がそれぞれ1、2、3である3次元の有理多項式モデルです。すべての多項式は多項式のタイプpType=1を持ちます。(地理参照モデル・タイプの詳細は、「関数フィッティング地理参照モデル」を参照してください。)
GCPを使用した地理参照では、GCPのセル座標およびモデル座標が多項式または有理多項式モデルの計算式で使用され、連立一次方程式が形成されます。計算式に加重は使用されません(つまり、すべての点で加重は同一の1.0です)。連立一次方程式は、指定した基準点に最適なモデルの係数を生成する最小2乗法によって解かれます。基準点のタイプを使用したGCPのみがソリューションの計算に含まれますが、チェック・ポイントのタイプを使用したGCPは解決されたモデルの位置精度の確認に使用されます。ソリューションの精度は、ソリューションに含まれるそれらの基準点のセル座標の残差に基づいて評価されます。
異なるジオメトリ・モデルには、異なるモデル座標の次元および異なるGCPの最小数が必要です。2次元のジオメトリ・モデルでは、モデル座標は2D (X,Y)、3次元のジオメトリ・モデルでは、モデル座標は3D (X, Y, Z)である必要があります。ジオメトリ・モデルに必要なGCPの最小数は、アフィン: 3、二次多項式: 6、三次多項式: 10、DLT: 7、二次有理: 19、RPC: 39です。ただし、地理参照を行うには、通常、GCPの最小数より大きい値を使用する必要があります。
詳細は、「高度な地理参照」を参照してください。
GeoRasterは、関数フィッティング地理参照モデルを使用して、地上座標をセル座標に割り当て、セル座標を地上座標に割り当てます。特殊なケースとして、セルの整数座標(セル・マトリックス内のセルの配列索引)がモデル座標に変換されます(これにより、モデル空間内の点の正確な場所を特定します)。この点(モデル座標)は、セルによって表されるモデル空間内の領域の左上角または中心のいずれかになります。
同様に、モデル座標は地理参照を通してセル座標に変換できます。ただし、関数フィッティング地理参照モデルを直接変換した結果のセル座標は、ほとんどが浮動小数点数です。(modelCoordinateLocation要素で指定される)セル空間座標系のタイプは、浮動小数点座標が参照するセルを決定します(「GeoRasterデータ・モデル」を参照)。GeoRasterは、浮動小数点(サブセル)セル座標および整数セル座標の両方を、そのAPIのすべての部分においてサポートします。
セル座標およびモデル座標の変換は、GeoRasterの空間参照システム(SRS)の関数フィッティング・モデルに基づいて行われます。GeoRaster SRSを使用する変換の前後では、セルの座標の値(行,列)はGeoRasterのセル空間を基準としており、ラスター・データ自体の左上角を必ずしも基準としません。ULTCoordinateでは、セル空間の基点座標とは異なる任意の座標(行および列の値)を指定できます。つまり、左上角の(行,列)座標は、(0,0)である必要はありません。
多くのイメージ・ファイル形式と同様に、ラスター・データの左上角を独自のセル空間の基点(0, 0)として定義するアプリケーションでは、GeoRaster ULTCoordinate (row0, column0)が(0, 0)ではない場合、GeoRaster SRSから導出される(行,列)を、この基点が基準となるように変換する必要があります。この変換では、次の計算式に示すように、GeoRaster ULTCoordinateを考慮する必要があります。
row = row0 + m column = column0 + n
計算式の各変数の意味は、次のとおりです。
rowは、GeoRasterセル空間の基点を基準としたセルの行索引です。
columnは、GeoRasterセル空間の基点を基準としたセルの列索引です。
row0は、GeoRasterセル空間の基点を基準としたULTCoordinateの行索引です。
column0は、GeoRasterセル空間の基点を基準としたULTCoordinateの列索引です。
mは、ULTCoordinateを基準としたセルの行索引です。つまり、先頭行を0から開始した場合のm番目の行です。
nは、ULTCoordinateを基準としたセルの列索引です。つまり、先頭列を0から開始した場合のn番目の列です。
ほとんどのアプリケーションでは、ULTCoordinateと、セル空間の基点は同じ(つまりrow0 = 0およびcolumn0 = 0)になります。この場合、m = rowおよびn = columnとなります。
イメージおよびラスターの様々な変換と操作には、ピクセルまたはセルのリサンプリングと内挿が伴います。GeoRasterでは、次の標準的なリサンプリング・メソッドと内挿方法がサポートされます。
OTHER
これらのリサンプリング・タイプのキーワードは、GeoRaster XMLメタデータ・スキーマのresamplingType要素定義で定義されます(「GeoRasterメタデータのXMLスキーマ」を参照)。OTHER以外のキーワードは、次のような複数のサブプログラムで使用できます。
リサンプリング・タイプのOTHERは、GeoRasterオブジェクトのピラミッドがファイルなどの外部ソースから生成またはインポートされる場合に、不明な(または外部の)リサンプリング・タイプを示すためにのみ使用されます。
ラスター・データでは、空間全体で連続的に変化する現実の現象が処理されます。このデータは、通常、グリッド内挿(セル間またはセル内の空間位置に値を内挿する方法)に関連付けられます。GeoRasterでは、SDO_GEOR.evaluateDoubleがグリッド内挿ファンクションです。これは、内挿方法としてリサンプリングのキーワードと同じキーワードを使用します。
ピラミッドは、ラスター・イメージまたはラスター・データを様々なサイズおよび解像度で表す、GeoRasterオブジェクトのサブオブジェクトです。サイズは、通常、アプリケーションでのイメージの取得および表示(特にWebを経由する場合)にかかる時間に影響します。つまり、イメージ・サイズが小さいほど表示速度が速くなり、詳細な解像度が必要ない場合は(ユーザーが十分にズーム・アウトしている場合など)、小さいイメージの表示品質で十分です。
ピラミッド・レベルは、必要な記憶域が小さくなる低解像度イメージ、または必要な記憶域が大きくなる高解像度イメージを表します。(GeoRasterでは、低解像度のピラミッドのみがサポートされています。)値が0 (ゼロ)のピラミッド・レベルは、元のラスター・データを示します(この場合、イメージの解像度は低下せず、必要な記憶域は変化しません)。値が0 (ゼロ)より大きくなるほど、イメージの解像度のレベルが低くなり、必要な記憶域が小さくなります。
ピラミッド・タイプは、ピラミッドのタイプを表します。次のいずれかの値を指定できます。
DECREASE: ピラミッド・レベルが高くなるほどピラミッド・サイズが小さくなります。
NONE: GeoRasterオブジェクトに関連付けられたピラミッドが存在しません。
図1-7に、ピラミッド・タイプをDECREASEに指定した場合のピラミッド・レベルの概要を示します。この図では、ピラミッド・レベル番号が大きくなるほどファイル・サイズが小さくなり、イメージの表現に使用されるピクセルが減少するために解像度も低くなることを示しています。
各レベルのピラミッド・イメージのサイズは、次の計算式によって、元のイメージ・サイズとピラミッド・レベルに基づいて決定されます。
r(n) = (int)(r(0) / 2^n) c(n) = (int)(c(0) / 2^n)
計算式の各変数の意味は、次のとおりです。
r(0)およびc(0): 元の行次元および列次元のサイズです。
r(n)およびc(n): ピラミッド・レベルn の行次元および列次元のサイズです。
int: 任意の数値を、その数値未満の最も近い整数値に丸めます。
2^n: 2のn乗を表します。
最上位レベルの全体像(最上位レベルの最小ピラミッド)では、行次元と列次元のいずれか小さい方のサイズは1になります。最も低い解像度のピラミッド・レベルは、このサイズによって決まり、(int)(log2(a))という式で求められます。
式の各変数の意味は、次のとおりです。
log2: 底が2の対数関数です。
a: 元の次元サイズの行または列の小さい方です。
ピラミッド内のセル・アドレッシングでは、元のラスター・データに定義されているセル・アドレッシングと同じタイプを使用します(「GeoRasterデータ・モデル」を参照)。各ピラミッド・レベルには独自のセル空間がありますが、ピラミッド・レベルのすべてのセル空間には、元のレベル(レベル・ゼロ)のセル座標系と同じタイプのセル座標系(中心または左上を基準とするセル座標系)があります。セルは均等なサイズの四角形で、単位は1セルです。各ピラミッド・レベルの左上角のセルにあるULTCoordinateは、メタデータに登録されている、元のラスター・データのULTCoordinateと同じです。このセル空間の定義とピラミッド・レベルに基づいて、1つのピラミッド・レベルのセル座標を別の座標に変換できます。
GeoRasterメタデータにはピラミッド・レベルごとに定義されている個々のSRSはありません。ピラミッド内のセルのモデル座標を導出するには、最初に別のピラミッド・レベルのセル座標をピラミッド・レベル・ゼロのセル座標に変換してから、GeoRaster SRSを適用します。逆に、ピラミッドの地上点のセル座標を導出するには、ピラミッド・レベル・ゼロのこれらの地上点のセル座標をGeoRaster SRSを使用して最初に取得してから、特定のピラミッド・レベルに変換します。GeoRasterがピラミッドのサブセル・アドレッシングを、そのAPIのすべての部分においてサポートします。
ピラミッドは、GeoRasterオブジェクトと同じラスター・データ表に格納されます。ラスター・データ表内のpyramidLevel属性は、特定のピラミッド・レベルに関連付けられたすべてのブロックを示します。通常、各ピラミッド・レベルでのブロック化方法は、(GeoRasterオブジェクト・メタデータに定義されている)元のレベルのブロック化方法と同じですが、次の例外があります。
元のGeoRasterオブジェクトがブロック化されておらず、元のセル・データがオブジェクトと同じサイズの1つのブロック(BLOB)に格納されている場合、各ピラミッド・レベルのセル・データは1つのブロックに格納され、各ピラミッド・レベルの実際のイメージと同じサイズになります。
元のGeoRasterオブジェクトがブロック化されている場合(1つのブロックとしてブロック化されている場合も)、各ピラミッド・レベルのセル・データは元のレベルのデータと同じ方法でブロック化され、各ブロックは、ピラミッド・レベルの実際のイメージの最大次元サイズがブロック・サイズより大きい場合、個別のBLOBオブジェクトに格納されます。ただし、生成されるピラミッド・レベルの解像度がより低くなる場合(ピラミッド・レベルの行次元と列次元の両方のサイズが、それぞれ行ブロック・サイズと列ブロック・サイズの半分以下である場合)、そのようなピラミッド・レベルのセル・データは1つのBLOBオブジェクトに格納され、そのピラミッド・レベルの実際のイメージと同じサイズになります。
GeoRasterオブジェクトのピラミッドを生成するか、またはGeoRasterオブジェクトをスケール変更する際は、セル・データのリサンプリングが必要になります。GeoRasterは、標準のリサンプリング・メソッド(「リサンプリングおよび内挿」を参照)を提供します。
GeoRasterでのピラミッドのサポートに関連するサブプログラム(「SDO_GEORパッケージのリファレンス」を参照)を次に示します。
SDO_GEOR.generatePyramid: GeoRasterオブジェクトのピラミッド・データを生成します。
SDO_GEOR.deletePyramid: GeoRasterオブジェクトのピラミッド・データを削除します。
SDO_GEOR.getPyramidMaxLevel: GeoRasterオブジェクトの最上位のピラミッド・レベルを戻します。
SDO_GEOR.getPyramidType: GeoRasterオブジェクトのピラミッド・タイプを戻します。
ビットマップ・マスクとは、深度が1ビットの特別な矩形ラスター・グリッドであり、各ピクセルの値は0または1です。ビットマップ・マスクは、別のイメージ内にある変則的な形をした領域を定義するために使用します。1ビットは領域の内部を定義し、0ビットは領域の外部を定義します。
ビットマップ・マスクは、空白ではないGeoRasterオブジェクトにアタッチしたり、空白ではないGeoRasterオブジェクトから削除することができます。空白ではないGeoRasterオブジェクトの各バンドまたは各レイヤーでも、それぞれに関連付けられた個別のビットマップ・マスクを持つことができます。したがって、空白ではないGeoRasterオブジェクトに関連付けられたビットマップ・マスクは、最大でn+1個存在します(この場合のnは、GeoRasterオブジェクトのサブレイヤーの合計数です)。ビットマップ・マスクは、個別に編集または更新できます。
ビットマップ・マスクがオブジェクト・レイヤーに関連付けられている場合は、そのビットマップ・マスクがすべてのサブレイヤーのデフォルトのビットマップ・マスクになります。サブレイヤーに関連付けられたビットマップ・マスクは、オブジェクト・レイヤーに関連付けられたデフォルトのビットマップ・マスクをオーバーライドします。
ラスター・レイヤーにアタッチされたビットマップ・マスクは、イメージ内の他のラスター・レイヤーと同じ行および列の番号を持つ必要があり、また、正確に同じ領域を覆っている必要があります。このようなビットマップ・マスクでは、GeoRasterオブジェクト自体のULTCoordinateおよびSRSと同じULTCoordinateおよびSRSを使用します。論理的には、これはラスター・イメージ自体の必須情報ではなく補足情報ですが、物理的には、GeoRasterオブジェクト内に格納されます。
ビットマップ・マスクの物理記憶域は、GeoRasterオブジェクトのラスター・データの物理記憶域と似ています。ビットマップ・マスクは、関連付けられたGeoRasterオブジェクトのラスター・データ表に、同じブロック属性を使用して格納されます。ただし、ビットマップ・マスク・エントリのbandBlockNumberは常に、ビットマップ・マスクが関連付けられているレイヤー番号に設定されます。バンドとレイヤーの間の関係の詳細は、「バンド、レイヤーおよびメタデータ」を参照してください。
pyramidLevel値は、0ではなく-99999の値から開始され、ピラミッド・レベルが1つ上がるごとに1ずつ増えます。ピラミッドは、通常のラスター・データのピラミッドとともにビットマップ・マスク上に作成され、ビットマップ・マスクは、SDO_GEOR.scaleCopyプロシージャを使用して、関連付けられたGeoRasterオブジェクトとともにスケール変更できますが、ビットマップ・マスクに使用するリサンプリング・メソッドは常にNN (Nearest Neighbor)となります。ビットマップ・マスクは、関連付けられたGeoRasterオブジェクトが圧縮または解凍されると圧縮または解凍され、また、ビットマップ・マスクは常にDEFLATEメソッド(可逆圧縮)で圧縮されます。ビットマップ・マスクはスパースとなる場合があり、その場合は空のブロックが格納され、欠落しているセルの値は0 (ゼロ)を示します。
アプリケーションでは、通常、ビットマップ・マスクを次のいずれか、または両方の方法で使用します。
透過マスクとして使用すると、ビットマップ・マスクは、表示アプリケーションによってイメージの表示部分を決定するために使用されます。たとえば、ビットマップ・マスクの1ビットに対応するメイン・イメージ・ピクセルは画面またはプリンタに出力されますが、ビットマップ・マスクの0ビットに対応するメイン・イメージ・ピクセルは表示および印刷されません。また、イメージのアルファ・チャネルとして使用できるため、0および1の値は様々な透明度値にマップされ表示されます。
GISアプリケーションでNODATAマスクとして使用すると、ビットマップ・マスクは、マスクの外部(0ビット)に対応するピクセルをNODATAとして処理することをGISアプリケーションに認識させることができます。そのために、ビットマップ・マスクを特別なタイプのNODATAとしてGeoRasterメタデータに登録できます(「NODATA値および値の範囲」を参照)。
PL/SQLサブプログラムには、ビットマップ・マスクに対する操作を実行するものがあります。操作には、ビットマップ・マスクのGeoRasterオブジェクトへのアタッチ、既存のビットマップ・マスクの置換、ビットマップ・マスクの削除、GeoRasterオブジェクトが特定のビットマップ・マスクを持つかどうかのチェック、ビットマップ・マスク全体、ビットマップ・マスクのサブセットまたはビットマップ・マスクの単一のセル値の抽出などがあります。SDO_GEOR.maskプロシージャを使用して、データベース内でマスキング操作を適用することもできます。イメージ・マスキングの詳細は、「イメージのマスキング」を参照してください。
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には、GeoRasterオブジェクトに必要な記憶領域を縮小するために、JPEG (JPEG-F)およびDEFLATEの2つのネイティブの圧縮タイプがあります。どちらのタイプも、それぞれのブロックは明確なラスター表現として個別に圧縮されます。圧縮されたGeoRasterオブジェクトを解凍すると、各ブロックは個別に解凍されます。
解凍された(圧縮されていない)GeoRasterオブジェクトで実行できるすべてのGeoRaster操作は、圧縮されたGeoRasterオブジェクトでも実行できます。GeoRasterでなんらかの操作が行われる場合、ソースGeoRasterオブジェクトが圧縮されていれば、必要に応じてそのソース・オブジェクトのブロックが内部的に解凍されてから、指定された操作が実行され、次に、その操作によって得られたオブジェクトがcompressionキーワードで指定された形式で圧縮されるか、または、compressionキーワードが指定されていない場合は、ソース・オブジェクトの圧縮形式で圧縮されます。このため、特定の操作では、その実行前に圧縮されているGeoRasterオブジェクトを解凍する必要はありませんが、実行前にオブジェクトを解凍しておくと、全体のパフォーマンスが向上する操作もあります。
データベース・ユーザーがGeoRasterオブジェクトを圧縮または解凍する前には、データベースがデフォルトの一時表領域で作成されていること、あるいはユーザーが一時表領域または表領域グループに割り当てられていることを確認してください。これ以外の場合、デフォルトでは、一時表領域としてSYSTEM表領域が使用され、GeoRasterの操作で生成された大容量の一時LOBデータがSYSTEM表領域に格納されるため、データベース全体のパフォーマンスに影響を与える可能性があります。一時表領域の管理については、『Oracle Database管理者ガイド』を参照してください。
GeoRasterオブジェクトの圧縮または解凍を指定するには、storageParamパラメータのcompressionキーワードを使用します(「記憶域パラメータ」を参照)。compressionキーワードは、SDO_GEOR.changeFormatCopy、SDO_GEOR.getRasterData、SDO_GEOR.getRasterSubset、SDO_GEOR.importFrom、SDO_GEOR.mosaic、SDO_GEOR.scaleCopy、SDO_GEOR.subsetなど、様々なGeoRasterプロシージャのstorageParamパラメータで使用できます。(GeoRasterオブジェクトを圧縮および解凍するための個別のプロシージャはありません。)
ソースGeoRasterオブジェクトが空白の場合は、SDO_GEOR.getRasterSubsetファンクションおよびSDO_GEOR.getRasterDataファンクションを除き、compressionキーワードは無視されます。つまり、空白のGeoRasterオブジェクトが圧縮されることはなく、メタデータの圧縮タイプは常にNONEになります。(空白のGeoRasterオブジェクトの詳細は、「空白のGeoRasterオブジェクトと空のGeoRasterオブジェクト」を参照してください。)
この項では、次の内容について説明します。
GeoRasterオブジェクトのJPEG圧縮(「GeoRasterオブジェクトのJPEG圧縮」)
GeoRasterオブジェクトのDEFLATE圧縮(「GeoRasterオブジェクトのDEFLATE圧縮」)
GeoRasterオブジェクトの解凍(「GeoRasterオブジェクトの解凍」)
GeoRasterオブジェクトの圧縮に使用するサード・パーティのプラグイン(「圧縮に使用するサード・パーティのプラグイン」)
拡張LOB圧縮(拡張LOB圧縮)
JPEG圧縮がサポートされているのは、cellDepth値が8BIT_Uで、ブロック当たりのバンド数が4以下(ただし、各ブロックでのバンド数が1、3または4であること)のGeoRasterオブジェクトのみです。(ブロック当たりのバンド数が2は、JPEG圧縮ではサポートされません。)バンド数が4より大きいGeoRasterオブジェクトの場合は、GeoRasterオブジェクトを1、3または4バンドのバンド・ブロック・サイズで再ブロック化するとJPEG圧縮できます。JPEG圧縮は、カラーマップを含むGeoRasterオブジェクトではサポートされていません。
JPEG圧縮は、あらゆるサイズのGeoRasterオブジェクトに対してサポートされていますが、GeoRasterオブジェクトの各ブロックの合計サイズ(columnsPerBlock * rowsPerBlock * bandsPerBlock * cellDepth / 8)は、50MB以下である必要があります。容量の大きいGeoRasterオブジェクトに対しては、SDO_GEOR.changeFormatCopyプロシージャをコールし、50MB未満のブロックになるようにGeoRasterオブジェクトをブロック化してからGeoRasterオブジェクトを圧縮するか、またはSDO_GEOR.changeFormatCopyプロシージャへの同じコールの中で、ブロック化および圧縮を実行できます。
GeoRasterでは、フルフォーマット基準のJPEG形式でオブジェクトを圧縮するJPEG-F圧縮モードがサポートされます。
JPEG-F圧縮については、CCITT Rec.T.81 JPEG Specification (またはICO/IEC IS 10918-1)を参照してください。GeoRasterは、CCITT Rec.T.81 JPEG Specificationの表K.2の量子化表と、(ハフマン表として)この仕様の表K.4およびK.6の標準クロミナンス表を使用します。量子化表は、圧縮プロセスでこの表がデータに適用される前に、圧縮品質によってスケール変更されます。
JPEG-Fは、不可逆圧縮形式です。storageParamパラメータにqualityキーワードを指定して、劣化の程度を制御できます。qualityキーワードには、0から100の整数値を指定できます。値に0 (ゼロ)を指定すると圧縮率は最高になりますが、データの消失が大きくなります。値に75 (GeoRasterのデフォルト)を指定すると、高圧縮率ではありますが、ほとんどの人が品質には劣化がないと感じる程度の画像になります。値に100を指定すると、圧縮率は最低になりますが品質は最高になります。
DEFLATE圧縮は、Deflate Compressed Data Format Specification (Network Working Group RFC 1951)に従ってオブジェクトを圧縮し、圧縮したデータをZLIB形式で格納します。詳細は、ZLIB Compressed Data Format Specification (Network Working Group RFC 1950)を参照してください。ZLIBのヘッダーおよびチェックサムのフィールドは、圧縮されたGeoRasterオブジェクトに含まれます。
DEFLATE圧縮は、あらゆるサイズのGeoRasterオブジェクトに対してサポートされていますが、GeoRasterオブジェクトの各ブロックの合計サイズ(columnsPerBlock * rowsPerBlock * bandsPerBlock * cellDepth / 8)は、1GB以下である必要があります。容量の大きいGeoRasterオブジェクトに対しては、SDO_GEOR.changeFormatCopyプロシージャをコールし、1GB未満のブロックになるようにGeoRasterオブジェクトをブロック化してからGeoRasterオブジェクトを圧縮するか、またはSDO_GEOR.changeFormatCopyプロシージャへの同じコールの中で、ブロック化および圧縮を実行できます。
DEFLATE圧縮は可逆圧縮であるため、圧縮品質は適用されません。圧縮品質を指定しても無視されます。
storageParamパラメータでcompression=NONEを指定すると、圧縮されたGeoRasterオブジェクトを解凍できます。JPEG-F圧縮の場合、記憶域パラメータとして圧縮品質を指定しないでください。
PL/SQL、Oracle Call Interface (OCI)などの既存のApplication Programming Interface (API)を使用すると、圧縮されたGeoRasterオブジェクトを、データベースの外(つまりクライアント側)で解凍して、GeoRasterオブジェクトのブロックに対応するBLOBオブジェクトを取得し、該当する圧縮形式の仕様に従って、圧縮されたそれぞれのブロックを個別にデコードできます。たとえば、GeoRasterオブジェクトがJPEG-Fモードで圧縮されている場合、デコーディング・プロセスでは最初にJPEGヘッダーが解析され、表およびブロック次元が取得されます。次に、ハフマンのデコーディングが適用され、イメージ・データが量子化されます。
JPEGの解凍をすべてユーザー自身で実装するのは、複雑で、細部まで気を配る必要のあるプロセスです。アプリケーションによっては、既存の実装を使用する方が適切な場合があります。Cのjpeglibなどのライブラリ、およびJavaのいくつかのイメージングAPI (Oracle J2SE、JAIなど)では、すでにJPEGの解凍を実装しており、それらを使用して、JPEGで圧縮されたGeoRasterオブジェクトに対しデコーディング・プロセスを実行することができます。DEFLATE圧縮に対しては、ZLIB CライブラリまたはJava APIを使用して、基本的に同様の方法を適用できます。
GeoRasterは、サード・パーティの圧縮ソリューションのプラグイン・アーキテクチャを提供します。LizardTech社は、MrSIDおよびJPEG 2000の圧縮タイプで、ラスター・イメージをネイティブでOracle Spatial and Graph GeoRasterに圧縮して格納できるプラグインを提供しています。
LizardTechプラグインをインストールする前に、次の手順に従う必要があります。
$ORACLE_HOME/md/adminディレクトリに移動します。
SYS AS SYSDBAとしてデータベースに接続します。
次のSQL文を入力します。
SQL> @prvtgrlt.plb
LizardTechプラグインとその関連情報の入手については、LizardTech Corporationに問い合せてください。
Oracle Database Advanced LOB Compression (概要は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照)を使用して、GeoRasterラスター・データ表(RDT)の可逆圧縮を実現し、GeoRasterオブジェクトを圧縮することができます。表の作成時に、LOB記憶域(RDTのrasterBlock列など)に拡張LOB圧縮を指定すると、その表のすべての行のSecureFiles LOBが拡張LOB圧縮を使用して圧縮されます。圧縮はGeoRasterに対して透過的になるため、アプリケーションの変更は必要ありません。ただし、RDTラスター・ブロック上で任意のGeoRaster固有の圧縮タイプ(JPEG、DEFLATEまたはサード・パーティのプラグインなど)も使用している場合は、これらのブロック上で拡張LOB圧縮を使用しないようにする必要があります。
拡張LOB圧縮を使用するには、Oracle Database Advanced Compression Optionのライセンス(『Oracle Databaseライセンス情報』を参照)が必要です。ただし、拡張LOB圧縮を使用しないGeoRaster圧縮操作には、Oracle Database Advanced Compression Optionは必要ありません。
GeoRasterでは、データベース管理タスクを実行できます。また、多くの管理タスクを自動的に実行し、自動管理操作を容易にするための複数のガイドラインが強化されています。
GeoRasterは、特別な管理タスクを実行する必要のあるユーザーに複数のサブプログラムを提供します。
SDO_GEOR_ADMIN.isRDTNameUniqueはRDT名の一意性をチェックし、SDO_GEOR_UTL.renameRDTはデータの移行中に発生する可能性のある競合を解決するために、データベース内のRDTの名前を変更します。
SDO_GEOR_ADMIN.checkSysdataEntriesおよびSDO_GEOR_ADMIN.maintainSysdataEntriesは、データベース接続に関連付けられた権限に応じて、現行のスキーマまたはデータベース内の破損したSYSDATAエントリをチェックして修正します。
次のサブプログラムは、データベース接続に関連付けられた権限に応じて、現行のスキーマまたはデータベース内の既存のGeoRasterオブジェクトおよび関連オブジェクトの状態をチェックします。SDO_GEOR_ADMIN.listGeoRasterObjects、SDO_GEOR_ADMIN.listGeoRasterColumns、SDO_GEOR_ADMIN.listGeoRasterTables、SDO_GEOR_ADMIN.listRDT、SDO_GEOR_ADMIN.listRegisteredRDTおよびSDO_GEOR_ADMIN.listUnregisteredRDT。
次のサブプログラムは、データベース接続に関連付けられた権限に応じて、現行のスキーマまたはデータベース内の既存のGeoRasterオブジェクトを登録できます。SDO_GEOR_ADMIN.registerGeoRasterObjectsおよびSDO_GEOR_ADMIN.registerGeoRasterColumns。
SDO_GEOR_ADMIN.upgradeGeoRasterは、データベースのアップグレード後にエラーをチェックして修正します。
GeoRasterのデータおよびメタデータの信頼性を保証するために、次の処理が実行され、次のガイドラインが強化されます。
GeoRasterトリガーはGeoRasterによって管理され、ユーザーが直接発行するSQL文では削除および変更できません。
名前のパターンGRDMLTR_*は、GeoRasterトリガーで使用するために予約されています。ユーザーは、GRDMLTR_で始まる名前を持つトリガーを作成できません。
関連付けられたGeoRasterメタデータ・エントリが自動的に更新されるのは、GeoRaster表の削除、切捨て、名前の変更、または変更が行われた場合、GeoRaster列が削除された場合またはスキーマが削除された場合です。(ただし、ALTER TABLE文を使用して1つ以上のGeoRaster列を追加する場合は、SDO_GEOR_UTL.createDMLTriggerプロシージャをコールして、追加された各GeoRaster列にDMLトリガーを作成する必要があります。)
ラスター・データ表(RDT)は、GeoRasterオブジェクトがそのRDTを参照している場合、標準のSQL文を使用して削除したり直接名前を変更することはできません。RDTの名前を変更するには、SDO_GEOR_UTL.renameRDTプロシージャをコールします。
GeoRasterには、次の2つのタイプのパラレル処理があります。
SQL文のパラレル実行
パラレル化されたGeoRasterプロシージャ
SQL文のパラレル実行では、ほとんどのSQL文(問合せとDMLの両方)をパラレルに実行できます。SQL文は、実行されると、個々のステップまたは行ソースに分解され、実行計画で個別の行として識別されます。
パラレル問合せでは、メタデータ関連の問合せ操作(すべてのGeoRasterメタデータgetファンクションおよびSDO_GEOR.validateGeoRaster)などのすべてのGeoRaster読取り専用ファンクションおよびすべての単一ラスター・セル問合せ(SDO_GEOR.getCellValueおよびSDO_GEOR.evaluateDouble)を有効化する必要があります。つまり、マルチCPU環境では、これらのファンクションを使用して1つ以上のGeoRaster表で多くのGeoRasterオブジェクトを問い合せる場合、およびSQL文をパラレルに実行する場合、GeoRaster行は自動的に複数のサブセットに分割され、複数のOracleサーバー・プロセスが同時に動作して各サブセットを処理し、応答時間全体を短縮します。複数のプロセス全体でGeoRaster SQL文を実行するように作業を分割することで、空間索引を迅速に管理し、場所、様々なメタデータおよび属性に基づいてGeoRasterオブジェクトを検出できます。パイプライン・テーブル・ファンクションおよびパラレル・テーブル・ファンクションを使用して、より高度なプロシージャを実装することもできます(単一のGeoRasterオブジェクトに対するいくつかの操作のパラレル化など)。
パラレル化されたGeoRasterプロシージャでは、GeoRasterオブジェクトの同時処理用に複数のサブプロセスを指定できます。個々のラスターおよびイメージ処理プロシージャの一部は、特にこのタイプのパラレル化をサポートするために実装されます。これらのプロシージャでは、単に入力パラメータとして並列度(DOP)の整数値を指定することで、操作がその数のサブプロセスに分割され、単一のGeoRasterオブジェクトのサブセットが同時に処理されます。これらの各サブプロセスは、相互に独立して実行されます。すべてのサブプロセスが終了すると、プロセス全体も終了します。次のプロシージャでは、この種類のパラレル処理が直接サポートされます。
SDO_GEOR_AGGR.mosaicSubsetプロシージャを通して、他のタイプのパラレル処理もサポートされます。これに含まれるものとしては、パラレル圧縮と解凍、パラレル・コピーまたは形式変更コピー、パラレル・サブセット化、パラレル再投影、およびパラレル幾何補正があります。詳細は、「パラレル圧縮、コピー、サブセット化、再投影および幾何補正」を参照してください。
イメージおよびラスター・データは、通常、非常に大きいため、前述の操作に時間がかかる可能性があります。そのため、マルチCPUまたはマルチコア・サーバーを使用する場合、パフォーマンスを向上するためにパラレル処理を使用することを常に検討してください。
一部のリソース処理集中型の操作では、GeoRasterによってその実行の進行状況を監視およびレポートできます。この機能は、次のサブプログラムの実行に適用されます。
実行の進行状況を監視およびレポートするには、次のサブプログラムを使用できます。
GeoRaster操作の進行状況の監視およびレポートの詳細は、「GeoRaster操作の進行状況の監視およびレポート」を参照してください。
GeoRasterは、SDO_GEOR、SDO_GEOR_ADMIN、SDO_GEOR_AGGR、SDO_GEOR_RAおよびSDO_GEOR_UTLというPL/SQLパッケージを提供します。これらのパッケージには、GeoRasterのデータおよびメタデータを処理するサブプログラム(ファンクションとプロシージャ)が含まれています。これらのサブプログラムのほとんどは、次の論理カテゴリのいずれかに適合し、サブプログラムの目的を反映します。
GeoRasterデータの作成、ロードおよびエクスポート
地理参照およびGeoRasterオブジェクトの検証
GeoRasterメタデータの問合せおよび更新
GeoRasterセル・データの問合せおよび更新
GeoRasterオブジェクトのフォーマット、変換、処理および分析
GeoRaster管理機能の実行
GeoRasterは、setプロシージャまたはprocessプロシージャの完了後に、GeoRasterオブジェクトを自動的に検証します。
SDO_GEOR (「SDO_GEORパッケージのリファレンス」)、SDO_GEOR_ADMIN (「SDO_GEOR_ADMINパッケージのリファレンス」)、SDO_GEOR_AGGR (「SDO_GEOR_AGGRパッケージのリファレンス」)、SDO_GEOR_RA (「SDO_GEOR_RAパッケージのリファレンス」)およびSDO_GEOR_UTL (「SDO_GEOR_UTLパッケージのリファレンス」)の各PL/SQLパッケージのサブプログラムの詳細なリファレンス情報は、それぞれの章を参照してください。これらの章では、サブプログラムをアルファベット順に記載しています。「基本的なGeoRaster操作」、「ラスター代数および分析」および「イメージ処理および仮想モザイク」では、サブプログラムをコールする一般的な手順など、これらの多くのサブプログラムの使用方法を含む操作について説明します。
GeoRasterでは、空間索引付け機能および関連操作を使用します(『Oracle Spatial and Graph開発者ガイド』を参照)。
GeoRasterのJavaクライアント・インタフェースは、次のクラスで構成されます。
JGeoRaster: SQL型SDO_GEORASTERをマップするクラス(データベースのラスター・イメージの読取りおよび書込み用の主なメソッドはload(STRUCT)およびstore()です。)
JGeoRasterMeta: GeoRasterメタデータ用のクラス
JGeoRasterMeta.BandInfo: GeoRasterバンド・メタデータ用のクラス
JGeoRasterSRS: GeoRaster SRS情報用のクラス
JRaster: SQL型SDO_RASTERをマップするクラス(データベースのラスター・イメージの読取りおよび書込み用の主なメソッドはload(STRUCT)およびstore()です。)
JPEGWriter: JPEGイメージの書込み用のクラス
PNGWriter: PNGイメージの書込み用のクラス
TIFFWriter: TIFFイメージの書込み用のクラス
BMPWriter: BMPイメージの書込み用のクラス
GeoRasterAdapter: GeoRasterオブジェクトのロード、インポートおよびエクスポート用のクラス
GeoRasterException: GeoRaster例外用のクラス
GeoRasterクラスの詳細なリファレンス情報、およびJava APIの使用方法については、Javadoc生成のAPIドキュメントを参照してください。このドキュメントを参照するには、パスsdogr/doc/javadocを含むディレクトリ内のindex.htmlを開きます。
Oracle Spatial and Graph GeoRasterのJava APIは、Oracle Spatial and GraphのGeoRaster機能で使用可能な機能をサポートするインタフェースおよびクラスで構成されます。このAPIは、SDO_GEORASTERオブジェクト型およびそのメタデータのJavaオブジェクトへのマッピングを完了し、GeoRasterオブジェクトを操作するJavaメソッドを提供します。
このAPIには次のパッケージが含まれています。
oracle.spatial.georasterパッケージはこのAPIのコアです。これは、SDO_GEORASTERオブジェクト型およびそのメタデータのJavaオブジェクトへのマッピングを完了し、GeoRasterオブジェクトを操作するJavaメソッドを提供します。これはPure Javaであり、JAIに依存しません。
oracle.spatial.georaster.sqlパッケージは、oracle.spatial.georasterパッケージに含まれるサポートが提供されない一部のGeoRaster PL/SQLサブプログラムのラップのサポートを提供します。
oracle.spatial.georaster.imageパッケージは、GeoRasterオブジェクトまたはGeoRasterオブジェクトのサブセットからJavaイメージを生成し、イメージを処理するためのサポートを提供します。このパッケージはJAIに依存し、JAIを利用します。
これらのパッケージの詳細は、『Oracle Spatial and Graph Java API Reference』(Javadoc)を参照してください。
Spatial and Graph Javaクラス・ライブラリは、<ORACLE_HOME>/md/jlib/ディレクトリの下の.jarファイルにあります。GeoRaster Java API .jarファイルは$ORACLE_HOME/md/jlib/georasterapi.jarです。
Oracle MapViewerでのGeoRasterの主題のサポートは、GeoRasterのJava APIに基づきます。MapViewer JavaおよびXML APIを使用して、GeoRasterデータにアクセスできます。MapViewerについては、『Oracle Fusion Middleware Oracle MapViewerユーザーズ・ガイド』を参照してください。
Oracleはサード・パーティと密接に連携して、各種ラスター・データ形式をロードおよびエクスポートする包括的なETL (抽出、変換、ロード)ツールと、GeoRasterオブジェクトを表示する視覚化クライアントを提供します。Spatial and Graphのパートナ・ソリューションの情報については、http://www.oracle.com/technetwork/database-options/spatialandgraph/learnmore/を、Spatial and Graphのオープン・ソース・コンポーネントについては、http://www.oracle.com/technetwork/database-options/spatialandgraph/documentation/を参照し、また$ORACLE_HOME/md/demo/georaster/java/READMEファイルも参照してください(制限を含む)
GeoRasterには、次のクライアント側ツールも含まれています。
JAIベースのGeoRasterビューア、ローダーおよびエクスポータ(「JAIベースのビューア、ローダーおよびエクスポータ」を参照)
多数のイメージ・ファイルおよびラスター・ファイルの同時バッチ・ロードおよびエクスポートのためのGDALベースのETLウィザード(「同時バッチ・ロードおよびエクスポートのためのGDALベースのETLウィザード」を参照)
これらのクライアント側ツールを使用するには、Oracle Database Examplesメディアからデモ・ファイルをインストールする必要があります(『Oracle Database Examplesインストレーション・ガイド』を参照)。インストール後、これらのツールは次の2つの.jarファイルに配置されます(Spatial and Graphのデフォルトのインストール・ディレクトリが$ORACLE_HOME/mdであるとします)。
$ORACLE_HOME/md/demo/georaster/java/georaster_tools.jar $ORACLE_HOME/md/demo/georaster/etl/georaster_etl.jar
GeoRaster JAIベースのツールには、ビューア、ローダーおよびエクスポータが含まれます。これらのツールは、DBAおよびアプリケーション開発者向けです。ビューアは、GeoRasterオブジェクトのすべての型とそのメタデータを調査する場合に特に便利です。これによって、GeoRaster表またはビューのいずれか1つまたはリストとして定義された仮想モザイクも表示されます。ローダーおよびエクスポータは、限られた数のイメージ・ファイルおよびラスター・ファイルを1つずつ簡単にロードおよびエクスポートするための軽量ツールです。$ORACLE_HOME/md/demo/georaster/java/READMEファイルには、次のツールに役立つ使用情報や使用手順が記載されています。
GeoRasterビューア: このツールは、GeoRasterオブジェクトとメタデータ、および仮想モザイクを表示します。複数のデータベースに同時に接続して、左側のペインに示される各データベースからGeoRasterオブジェクトを表示できます。元のイメージ(ピラミッド・レベル0)から概要的なイメージ(最高のピラミッド・レベル)まで、様々な解像度のビューを簡単に切り替えることができます。線形ストレッチ(自動、手動、またはピース単位)、正規化、均等化、および明るさ、コントラスト、しきい値の制御など、イメージを向上させるための操作を実行できます。(GeoRasterオブジェクトの表示方法の詳細は、「GeoRasterオブジェクトの表示」を参照してください。)
ビューアからは、GeoRasterローダーおよびエクスポータ・ツールをコールできます。これにより、1つのツールを、すべてのGeoRasterツールの機能へのインタフェースとして使用できます。ローダーおよびエクスポータ・ツールについては、この項およびREADMEファイルで説明しています。
GeoRasterローダー: このツールは、ラスター・データをGeoRasterオブジェクトにロードします。TIFF、GeoTIFF、JPEG、BMP、GIF、PNGおよびJP2イメージ形式をロードできます。地理参照情報は、ESRIワールド・ファイル、GeoTIFFファイルおよびDigital Globe RPCテキスト・ファイルからのロードが可能です。
GeoRasterローダーは、SDO_GEOR.importFromプロシージャ(「SDO_GEORパッケージのリファレンス」を参照)のかわりに使用できます。ただし、Windows以外のシステムでは、このローダー・ツールはBMPまたはGIFイメージ形式をサポートしないため、Windows以外のシステムでこれらの形式を使用するには、SDO_GEOR.importFromプロシージャを使用する必要があります。このツールは、セル深度値が2BITのラスター・データ、またはBILまたはBSQインターリーブ・タイプのソース・マルチバンド・ラスター・データをサポートしていません。インポートされたGeoRasterオブジェクトは、BIPインターリーブ・タイプになります。このツールでのロード操作はロールバックできません。
JPEGファイル形式でイメージをロードする場合、操作に必要なメモリーの容量は、圧縮されていないイメージのサイズによって異なります。これは、-Xmxオプション(java -Xmx256M oracle.spatial.georaster.tools.GeoRasterLoader ...など)を使用してコマンドライン・パラメータとして指定できます。
GeoRasterエクスポータ: このツールは、GeoRasterオブジェクトをイメージ・ファイルにエクスポートします。GeoRasterエクスポータ・ツールは、宛先イメージ・ファイル形式としてTIFF、GeoTIFF、JPEG、BMP、GIF、PNGおよびJP2をサポートします。地理参照情報は、ESRIワールド・ファイル、GeoTIFFファイルおよびDigital Globe RPCテキスト・ファイルへのエクスポートが可能です。
このツールは、SDO_GEOR.exportToプロシージャ(「SDO_GEORパッケージのリファレンス」を参照)のかわりに使用できます。ただし、GeoRasterエクスポータ・ツールは、GIFを宛先ファイル形式としてサポートせず、SDO_GEOR.exportToプロシージャは、GIF、JPEGまたはJP2を宛先ファイル形式としてサポートしていません。GeoRasterエクスポータ・ツールは、cellDepth値が2BITのGeoRasterオブジェクトをサポートしていません。BSQまたはBILインターリーブ形式で8ビット以上のセル深度を持つGeoRasterオブジェクトは、BIPインターリーブ形式でエクスポートされます。
1回の操作でエクスポートできるGeoRasterデータの容量の制限については、SDO_GEOR.exportToプロシージャの「使用上の注意」を参照してください。
イメージのサイズおよびタイプに関して、ロード操作とエクスポート操作に制限事項が適用される場合があります。詳細は、GeoRasterツールのREADMEファイルを参照してください。
これらのツールはJavaで開発されているため、Oracle Databaseとネットワーク接続できるかぎり、イントラネットまたはインターネットを介して任意の場所で実行できます。
GeoRasterのクライアント側ツールでGeoTIFFイメージをロードまたはエクスポートするには、次のライブラリを現在のCLASSPATH定義に追加します。
xtiff-jai.jar (SourceForge Extensible-TIFF-JAIグループから入手可能)
geotiff-jai.jar (SourceForge GeoTIFF-JAIグループから入手可能)
JP2イメージのロードまたはエクスポートを行うには、CLASSPATH定義にライブラリjai-imageio.jar (Oracle Java Advanced Imaging Image I/O Toolsのダウンロード・ページから入手可能)を追加します。
ラスター・ファイルまたはイメージ・ファイルがGeoRasterオブジェクトにロードされた後、データ全体がGeoRasterオブジェクトのネイティブ・データ型で格納され、他の特定のファイル形式との関連性がなくなります。
独自のGeoRasterローダー・ツールおよびGeoRasterエクスポータ・ツールは、OCI、Oracle C++ Call Interface (OCCI)またはJavaを使用して開発できます。開発したツールは、クライアント側のコマンドまたはサーバー側のSQLプロシージャまたはファンクションとして実装できます。
GeoRasterには、GDALを使用して様々なイメージ・ファイルとラスター・ファイルの同時バッチ・ロードおよびエクスポートを自動化して有効化するためのETLウィザード・ツールが付属しています。この強力なツールによって、多数のラスター・ファイルとイメージ・ファイルを一括して同時にロードおよびエクスポートできます。
これは、XMLスキーマを定義し、XMLでロードおよびエクスポート記述ファイルを作成するためのGraphical User Interfaceを提供します。各記述ファイルには、GeoRasterを対象に一括して一連のラスター・ファイルをロードまたはエクスポートする方法が記述されています。XML記述ファイルが作成されると、同じウィザード・ツールを使用して複数の記述ファイルを呼び出し、ラスター・ファイルを一括して同時にロードおよびエクスポートできます。実行時障害は、発生すると捕捉されて記録されますが、バッチ・ロードまたはエクスポート・プロセスは停止しません。このツールは、GDALでサポートされるすべてのラスター形式に対応しています。
このウィザードを使用するには、Oracle Database Examplesメディアからデモ・ファイルをインストールする必要があります(『Oracle Database Examplesインストレーション・ガイド』を参照)。インストール後、このウィザードは次の.jarファイルに配置されます(Spatial and Graphのデフォルトのインストール・ディレクトリが$ORACLE_HOME/mdであるとします)。
$ORACLE_HOME/md/demo/georaster/etl/georaster_etl.jar
$ORACLE_HOME/md/demo/georaster/etl/READMEファイルには、GDALの設定方法とウィザードの起動方法が記述されています。
$ORACLE_HOME/md/demo/georaster/etl/georaster_etl_user_guide.pdfファイルには、使用方法の詳細が記述されています。
GeoRasterには、一般的な操作を示す、いくつかのPL/SQLおよびJavaデモ・ファイルが含まれています。Oracle Database Examplesメディアからデモ・ファイルをインストールした場合(『Oracle Database Examplesインストレーション・ガイド』を参照)、これらのファイルはSpatial and Graphのインストール・ディレクトリ(デフォルトでは$ORACLE_HOME/md)の下の次のディレクトリにあります。
/demo/georaster/plsql /demo/georaster/java
PL/SQLの例では、GeoRaster PL/SQL APIを使用して、GeoRasterオブジェクトの初期化、インポート、挿入、削除、問合せ、処理、更新およびエクスポートを行う基本操作を示しています。
Javaの例では、GeoRaster Java APIを使用して、GeoRaster ETL(抽出、変換、ロード)ツールおよびアプリケーションを開発する方法を示しています。
README.txtファイルは、『Oracle Spatial and Graph開発者ガイド』、『Oracle Spatial and Graph GeoRaster開発者ガイド』(このマニュアル)および『Oracle Spatial and Graphトポロジ・データ・モデルおよびネットワーク・データ・モデル・グラフ開発者ガイド』のマニュアルの情報を補足します。このファイルは次のディレクトリにあります。
$ORACLE_HOME/md/doc/README.txt
GeoRasterについては、$ORACLE_HOME/md/demo/georaster/java/READMEファイルも参照してください。