GeoRasterは、Oracle Spatialの機能の1つです。GeoRasterを使用すると、ラスター・イメージ・データとグリッド・データおよびそれらに関連するメタデータの格納、索引付け、問合せ、分析および配信を行うことができます。GeoRasterは、Oracle Spatialのデータ型および1つのオブジェクト・リレーショナル・スキーマを提供します。これらのデータ型およびスキーマ・オブジェクトを使用すると、地表面またはローカル座標系での位置を参照可能な多次元グリッド・レイヤーとデジタル・イメージを格納できます。地理参照データの場合、イメージ内のセルに対応する地表の位置を検索できます。または、地表の任意の位置を指定して、その位置に関連付けられたイメージ内のセルを検索できます。
GeoRasterは、リモート・センシング、写真測量、主題図作成などの、イメージの取得または作成を行う任意のテクノロジからのデータに対して使用できます。ロケーション・ベースのサービス、地理イメージのアーカイブ、環境の監視とアセスメント、地質工学と地質学的調査、天然資源管理、防衛、緊急時対応、遠隔通信、輸送、都市計画、自国の保安などの広範囲な応用分野に利用できます。
注意: GeoRasterを使用するには、Oracle Spatialの主な概念、データ型、使用方法、演算子、プロシージャおよびファンクションを理解しておく必要があります。これらの詳細は、『Oracle Spatial開発者ガイド』を参照してください。 また、ラスターとイメージの概念と用語、およびラスター・データを取得、作成または処理する方法も理解しておく必要があります。 |
GeoRasterは、Java仮想マシン(JVM)やOracle XML DBなど、Oracle Databaseに含まれるいくつかのコンポーネントを使用します。
インストールおよびアップグレードに関する注意: Oracle XML DBリポジトリが適切にインストールされていること、および データベースのアップグレード後に、SDO_GEOR_ADMIN.isUpgradeNeededファンクションをコールして、現在のリリースで無効なGeoRasterオブジェクトおよび無効なシステム・データを確認する必要があります。 詳細は、3.20項を参照してください。 |
この章の内容は次のとおりです。
地理フィーチャは、ベクトル形式またはラスター形式(あるいはその両方)で表現できます。ベクトル・データでは、点は明示的なxyzの座標、線は一連の点、領域は境界が線であるポリゴンとして表現されます。この種類のベクトル形式を使用すると、空間オブジェクトの位置および形を高い精度で記録できます。ラスター・データでは、空間オブジェクトの範囲に相当するセルに値を割り当てて、そのオブジェクトを表現できます。また、セルを配列として表現できます。この種類のラスター形式は、ベクトル形式ほど精度は高くありませんが、様々な空間分析での使用に最適です。
ラスター地理情報システム(GIS)分野では、通常、この種類のラスター・データはグリッド・データと呼ばれます。イメージ処理システムでは、通常、ラスター・データ表現はグリッドではなくイメージと呼ばれます。グリッドとイメージの間に相違点はありますが、どちらの形式の空間情報も通常はマトリックス構造(セルの配列)で表現され、各セルは空間に規則的に配置されます。
ラスター・データは、リモート・センシング、航空写真測量、地図作成法、全地球測位システムなどの様々な地理情報テクノロジによって収集および使用されます。収集されたデータは、デジタル・イメージ処理システム、コンピュータ・グラフィックス・アプリケーションおよびコンピュータ・ビジョン・テクノロジによって分析されます。これらのテクノロジでは複数のデータ形式が使用されます。また、これらのテクノロジを利用して様々な製品が開発されています。
この項では、GeoRasterで使用するいくつかの主なデータ・ソースおよび用途の概要を、アプリケーション開発に必要な概念と技術を中心に説明します。テクノロジの詳細は説明しません。それらの詳細は、市販の専門書やリファレンス・ドキュメントを参照してください。
リモート・センシングでは、ある領域またはオブジェクトの情報を、その領域またはオブジェクトに物理的に接続していないデバイスを介して取得します。たとえば、センサーの例には、衛星、気球、飛行機、ボート、地上局などがあります。センサー・デバイスには、フレーム・カメラ、プッシュブルーム(走査)方式のセンサー、合成開口レーダー(SAR)、水路用ソナー、ペーパー・スキャナ、フィルム・スキャナなどの広範囲なデバイスを使用できます。リモート・センシング・アプリケーションには、環境のアセスメントや監視、地球変動の調査や監視、天然資源調査などのためのアプリケーションがあります。
リモート・センシングによって収集されたデータは、通常、地理イメージと呼ばれます。波長、バンド数およびその他の要因によって、地理イメージの放射特性が決定されます。地理イメージにはシングルバンド、マルチバンドまたはハイパースペクトルがあり、いずれもGeoRasterで管理できます。これらの地理イメージ(特に衛星で観測されたイメージ)は、地表のあらゆる領域を表現できます。気象衛星の場合などは高い時間解像度が得られるため、変更を簡単に検出できます。リモート・センシング・アプリケーションでは、多くの場合、様々なタイプの解像度(時間、空間、スペクトル、放射)が重要になります。
写真測量では、写真による測定結果から測量情報を導出します。ほとんどの写真測量アプリケーションでは、航空写真や、衛星リモート・センシングによって収集された高解像度イメージが使用されます。従来の写真測量の主なデータは、白黒写真、カラー写真、立体写真セットなどのイメージです。
写真測量では、イメージと、撮影時の状態のオブジェクトの幾何的関係が厳密に確立されるため、オブジェクトのイメージからそのオブジェクトに関する情報を導出することができます。イメージとオブジェクトは、複数の方法によって関連付けることができます。これらの方法は、アナログ方式(光学、機械、電子コンポーネントを使用)または解析方式(数学的モデリングおよびデジタル処理)の2種類に分類できます。アナログ方式は、次第に解析(デジタル)方式に置き換わりつつあります。後者はソフトコピー写真測量とも呼ばれます。
ソフトコピー写真測量システムでは、主に、数値標高モデル(DEM)やオルソ・イメージなどが生成されます。GeoRasterでは、これらのすべてのラスター・データを地理参照情報とともに管理できます。
地理情報システム(GIS)は、地理参照情報を取得、格納および処理します。従来のGISソフトウェアはベクトルベースかラスターベースのいずれかでしたが、Oracle Spatialでは、GeoRaster機能によってラスターとベクトルの両方のデータを処理できます。
ラスターベースGISシステムは、通常、幾何補正されたグリッド・データを処理します。グリッド・データには、離散データまたは連続データがあります。離散データには行政的小区域、土地利用と土地被覆、バス路線、油井などがあり、これらは通常、整数グリッドとして格納されます。連続データには標高、アスペクト、汚染濃度、環境騒音レベル、風速などがあり、これらは通常、浮動小数点グリッドとして格納されます。GeoRasterでは、これらのすべてのデータを格納できます。
離散グリッド・レイヤーの属性は、値属性表(VAT)というリレーショナル表に格納されます。VATには、GISベンダーが指定した列が含まれており、ユーザーが定義した列を含めることもできます。VATは、単純な表としてOracle Databaseに格納できます。ラスターGISアプリケーションでそのVATを使用できるように、対応するGeoRasterオブジェクト内にVAT名を登録することができます。
地図作成法は、地図を作成するための技術で、3次元の地表を(または地表以外の空間をローカル座標系を使用して)2次元で表すものです。今日では、地図をデジタルで作成したり、スキャンしてデジタル形式にできるようになり、地図作成が大幅に自動化されています。コンピュータに格納した地図では、高速な問合せ、分析および更新が可能です。
地図には、用途や目的に応じて様々な種類があります。たとえば、基本図(背景)、主題図、地形図(3次元)、方位図、地籍図(土地利用)、差込み図などの種類の地図があります。地図には、通常、説明のための複数の注釈要素が含まれています。これには、スケール・バー、凡例、記号(北矢印など)、ラベル(都市名、河川名など)などがあります。
地図は、ラスター形式(GeoRasterで管理可能)、ベクトル形式またはハイブリッド形式で格納できます。
デジタル・イメージ処理は、標準イメージ形式(TIFF、GIF、JFIF(JPEG)など)とSunラスター形式、および多くの地理イメージ形式(NITF、GeoTIFF、ERDAS IMG、PCI PIXなど)のラスター・データの処理に使用されます。イメージ処理技術は、リモート・センシング・アプリケーションおよび写真測量アプリケーションで広範囲に使用されています。これらの技術を必要に応じて使用して、解釈を容易にするためのイメージの強調、修正および復元や、ぶれ、ひずみ、その他のノイズの修正、および地理オブジェクトの自動分類とターゲット識別を行うことができます。GeoRasterでは、ソース・イメージ、中間イメージおよび結果イメージをロードして管理できます。
地質学、地球物理学および地球化学のすべての分野ではデジタル・データが使用され、GeoRasterで管理可能ななんらかのデジタル・ラスター地図が作成されます。
地質学では、このデータには地域地質図、地層図、岩盤すべりの写真などが含まれます。地質学的調査および石油地質学で広く利用されるコンピュータによる地層シミュレーション、合成鉱物の推算、3次元での油田の特徴付けでは、ラスター・データが使用されます。
地球物理学では、重力、磁界、地震波の伝達およびその他の項目に関するデータを、地理参照情報とともに記録します。
地球化学では、複数の化学元素の含有量を分析および測定します。多くの場合、Triangulated Irregular Network(TIN)技術を使用して、さらなる分析のためのラスター地図を作成します。イメージ処理も広範囲に使用します。
ラスター・データには、次の要素の一部またはすべてを含めることができます。
セルまたはピクセル
空間ドメイン(フットプリント)
空間参照情報、時間参照情報およびバンド参照情報
セル属性
メタデータ
処理データおよび地図サポート・データ
GeoRasterでは、論理レイヤーを含む、構成要素ベースで多次元の汎用ラスター・データ・モデルが使用されます。ラスターのコア・データは、ラスター・セルの多次元マトリックスです。各セルはマトリックスの1つの要素であり、セルの値はセル値と呼ばれます。GeoRasterオブジェクトをイメージとして表現する場合、セルはピクセルとも呼ばれます。1つのピクセルは1つの値のみを持ちます。(GeoRasterでは、セルとピクセルという用語は同義で使用されます。)マトリックスには、次元数、セル深度、各次元のサイズという属性があります。セル深度は、各セルの値のデータ・サイズです。セル深度は、すべてのセル値の範囲を定義します。この範囲は、セルの配列ではなく、個々のセルの範囲です。このコア・ラスター・データのセットをブロック化して、格納および取得のパフォーマンスを最適化することができます。
このデータ・モデルには、論理レイヤー構造が含まれます。コア・データは、1つ以上の論理レイヤーで構成されています。たとえば、マルチチャネル・リモート・センシング・イメージの場合、このレイヤーを使用してイメージのチャネルがモデル化されます。(バンドおよびレイヤーの詳細は、1.5項を参照してください。)今回のリリースでは、各レイヤーは、行次元と列次元で構成されるセルの2次元マトリックスです。
GeoRasterデータにはメタデータと属性が含まれ、GeoRasterデータの各レイヤーには個別のメタデータと属性が含まれます。GeoRasterデータ・モデルでは、コア・セル・マトリックス以外のすべてのデータは、GeoRasterメタデータです。GeoRasterメタデータは、さらに様々な構成要素に分割されています(このため構成要素ベースと呼ばれます)。これらの構成要素には、次のタイプの情報が含まれます。
オブジェクト情報
ラスター情報
空間参照システム情報
日時(時間参照システム)情報
バンド参照システム情報
各レイヤーのレイヤー情報
GeoRasterオブジェクトは、このデータ・モデルに基づいて、GeoRasterメタデータのXMLスキーマ(「付録A」を参照)によって記述されます。このXMLスキーマを使用して、メタデータが構成されます。このXMLスキーマの一部の要素および子要素は必須で、それ以外はオプションです。GeoRasterのローダー、エクスポータまたはその他のアプリケーションを開発する場合、このXMLスキーマを理解しておく必要があります。このXMLスキーマは、含まれていない任意の種類のラスター・メタデータを含めるように拡張することもできます。今回のリリースでは、メタデータに関するいくつかの制限事項があります。この制限事項の詳細は、第4章の「SDO_GEOR.validateGeoRaster」の「使用上の注意」を参照してください。SDO_GEOR.validateGeorasterは、GeoRasterオブジェクトのメタデータを検証するファンクションです。
GeoRasterオブジェクトのデータ型(第2章を参照)は、GeoRasterデータ・モデルに基づいています。
このデータ・モデルでは、ラスター・マトリックス内の各ピクセル(セル)の座標、およびその座標が表す地表面の座標という、2つのタイプの座標を考慮する必要があります。このため、セル座標系とモデル座標系の2つのタイプの座標系(空間)が定義されています。
セル座標系(ラスター空間ともいう)は、ラスター・マトリックス内のセルおよびセルの間隔の記述に使用されます。セル座標系の次元は、行、列およびバンド(この順序どおり)です。モデル座標系(地上座標系またはモデル空間ともいう)は、地表の点、またはOracle SRID値に関連付けられた任意の座標系の記述に使用されます。モデル座標系の空間次元は、XおよびY(この順序どおり)です。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では、モデル座標系の2つの空間次元(XおよびY)のみがサポートされています。(様々な座標系のタイプなどの、座標系の詳細は、『Oracle Spatial開発者ガイド』を参照してください。)
GeoRasterモデル座標系は、Oracle Spatial SRIDによって定義されます。モデル座標の単位は、指定されたSRIDと同じです。また、そのモデル座標系で定義された値の範囲内にある必要があります。たとえば、8307などの測地座標系にGeoRasterオブジェクトを地理参照する場合、その空間参照システム(SRS)から導出されるモデル座標の単位は10進度で、経度の値は-180.0から+180.0の範囲内に、緯度の値は-90.0から+90.0の範囲内にあることが必要です。
セル座標とモデル座標の関係は、GeoRasterの参照システム(マッピング方法)によってモデル化されます。定義されているGeoRasterの参照システムを次に示します。
空間参照システム(GeoRaster SRS)では、セル座標(行,列,垂直位置)がモデル座標(X,Y,Z)にマップされます。GeoRasterデータに空間参照システムを使用することを、データを地理参照するといいます。(地理参照の詳細は、1.6項を参照してください。)
バンド参照システム(GeoRaster BRS)では、セル座標(バンド)がモデル座標(S(スペクトル(Spectral)のS))にマップされます。
今回のリリースでは、これらの各参照システムの少なくとも一部がGeoRasterのXMLスキーマに定義されています。ただし、今回のリリースでは、2次元空間参照システムのみがサポートされています。つまり、(行,列)座標と(X,Y)座標の関係のみをマップ可能です。モデル座標系が測地座標系である場合、(X,Y)は(経度,緯度)を表します。ただし、時間参照システムおよびバンド参照システムを使用して、スペクトル分解や、ラスター・データの収集タイミングなどの有効な時間情報およびスペクトル情報を格納することができます。
その他のメタデータは、1.5項に示すように、GeoRaster XMLメタデータの<layerInfo>
要素に格納されます。
GeoRasterデータは、セルの多次元マトリックスおよびGeoRasterメタデータで構成されます(1.3項を参照)。多くのメタデータは、Oracle XMLTypeデータ型を使用してXML文書として格納されます。メタデータは、GeoRasterメタデータのXMLスキーマ(付録Aを参照)に従って定義されます。GeoRasterオブジェクトの空間エクステント(フットプリント)はメタデータの一部ですが、これはGeoRasterオブジェクトの属性として、個別に格納されます。この方法によって、GeoRasterで空間ジオメトリ型および関連機能(GeoRasterオブジェクトに対するRツリー索引付けなど)を利用できるようになります。空間エクステントの詳細は、2.1.2項を参照してください。
大規模な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個のすべての行が格納されるまでこの順番で格納されます。
ただし、ピラミッドの最上位レベルでは、そのピラミッド・レベルの行次元と列次元の両方のサイズがそれぞれ行ブロック・サイズと列ブロック・サイズの半分以下の場合、埋込みは行われません。ピラミッドの物理記憶域の詳細は、1.7項を参照してください。
ラスター・ブロック(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オブジェクトには、RDTを一意に識別する属性の組合せ(rasterDataTable
とrasterID
)、およびGeoRasterオブジェクトのラスター・セル・データを格納するRDT内の行が存在します。
図1-3に、様々な都市のイメージを持つ行を含む表内の、マサチューセッツ州ボストンのイメージを例にあげて、GeoRasterオブジェクトの記憶域を示します。
次に、図1-3について説明します。
CITY_IMAGES表内の各行には、SDO_GEORASTERオブジェクトを含む、特定の都市(ボストンなど)のイメージに関する情報が含まれています。
SDO_GEORASTERオブジェクトには、イメージの全領域を占める空間エクステント・ジオメトリ、メタデータ、ラスターID、およびこのイメージに関連付けられたラスター・データ表の名前が含まれています。
ラスター・データ表内の各行には、ブロックの最小境界矩形(MBR)およびイメージ・データ(BLOBとして格納)を含む、イメージのブロック(四角形)に関する情報が含まれています。ラスター・データ表の詳細は、1.4.2項を参照してください。
SDO_GEORASTERおよびSDO_RASTERオブジェクト型の詳細は、第2章を参照してください。
図1-4に、データベース内のGeoRasterデータ、およびいくつかの関連オブジェクトの物理記憶域を示します。
次に、図1-4について説明します。
GeoRaster表内の各GeoRasterオブジェクトには、1つのラスター・データ表が関連付けられています。この表には、ラスター・イメージの各ブロックに対応するエントリが含まれています。
各ラスター・イメージ・ブロックに対応するイメージ・データを含むBLOBは、ラスター表データとは別に格納されます。BLOBには、記憶域パラメータ(1.4.1項を参照)を指定できます。
各GeoRasterオブジェクトには、1つのラスター・データ表が関連付けられます。ただし、1つのラスター・データ表には複数のGeoRasterオブジェクトのブロックを格納できるため、GeoRaster表内の複数のGeoRasterオブジェクトは、1つのラスター・データ表に関連付けられる場合と、複数のラスター・データ表に関連付けられる場合があります。
GeoRaster表とラスター・データ表の関係は、GeoRasterシステム・データ(2.4項を参照)に保持されます。
GeoRaster表およびラスター・データ表には、索引(標準および空間)を作成できます。GeoRasterデータの索引付けの詳細は、3.7項を参照してください。
地上基準点(GCP)表や値属性表(VAT)などの追加の表を、GeoRasterオブジェクトに関連付けることができます。
GeoRaster表と、それに関連するラスター・データ表の間では、1対多関係を保持する必要があります。つまり、ラスター・データ表には、同じGeoRaster表に属するGeoRasterオブジェクトのセル・データのみを含める必要があります。
次の考慮事項は、スキーマ、表、および任意のOracle Spatialメタデータ・ビューに格納されている列名に適用されます。たとえば、これらの考慮事項はジオメトリ表、GeoRaster表、ラスター・データ表、およびジオメトリとGeoRaster列に適用されます。
名前には、文字、数字、下線のみが使用できます。たとえば、名前に空白( )、アポストロフィ('
)、引用符("
)またはカンマ(,
)を使用することはできません。
名前がジオメトリ・メタデータ・ビューまたはGeoRasterシステム・データ(xxx_SDO_GEOR_SYSDATA)ビューに格納される前、あるいは表にアクセスする前に、名前で使用されているすべての文字は大文字に変換されます。表名で指定されるすべてのスキーマ名も、同様に変換されます。
ラスター・データ表の詳細は、1.4.2項を参照してください。
GeoRaster表およびラスター・データ表におけるクロススキーマのサポートの詳細は、1.4.5項を参照してください。
一部のGeoRaster操作では、記憶域の形式を指定または変更できます。関連のサブプログラムには、storageParam
というパラメータが含まれています。このパラメータでは、キーワードとその値の文字列を引用符で囲みます。storageParam
パラメータのキーワードは、ラスター・データの特性を指定します(表1-1を参照)。
注意: この項に示すキーワードは、SDO_GEOR.importFromプロシージャの |
表1-1 ラスター・データのstorageParamのキーワード
キーワード | 説明 |
---|---|
ビットマップ・マスクを考慮するかどうかを指定します。関連付けられたビットマップ・マスクを考慮する場合は |
|
ラスター・データをブロック化するかどうかを指定します。
|
|
ブロック・サイズ(ブロック当たりのセル数)を指定します。出力されるGeoRasterオブジェクトの各次元に1つの値を指定する必要があります。たとえば、 通常のブロック化のみがサポートされます。つまり、すべてのブロックは常に同一サイズで、均等に配置されます。ただし、ピラミッドの一部の最上位レベルはこのかぎりではありません。ただし、ブロックの次元サイズは2の累乗値である必要はありません。ランダムな整数値です。たとえば、 ラスター・ブロックの物理記憶域サイズは、4GB以下である必要があります。 |
|
ラスター・データ・セットのセル深度を指定します。このセル深度は、すべてのセルのビット数およびデータ型の符号を示します。ただし、セル深度を変更すると、データが消失したり、精度やイメージ品質が低下する場合があることに注意してください。値は、 |
|
GeoRasterオブジェクトに適用する圧縮タイプを指定します。値は、 ソースGeoRasterオブジェクトが空白の場合は、SDO_GEOR.getRasterSubsetファンクションおよびSDO_GEOR.getRasterDataファンクションを除き、 |
|
インターリーブ・タイプを指定します。(インターリーブの詳細は、1.5項を参照してください。)値は、 |
|
元のピラミッド・データを保持する場合は 記憶域パラメータを使用してピラミッド・データを生成することはできません。ピラミッド・データを生成するには、GeoRasterオブジェクトの作成後にSDO_GEOR.generatePyramidプロシージャを使用する必要があります。 |
|
JPEGの圧縮品質を指定します。これは、圧縮によって発生する劣化の程度です。0(最低の品質)から100(最高の品質)までの整数値をGeoRasterオブジェクトに適用します。デフォルト値は75です。圧縮品質の詳細は、1.10.1項を参照してください。たとえば、 |
例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, 'blocksize=(128,128) 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プロシージャでエラーが発生します。
例1-1および第4章の複数の例では、次のように定義されているGEORASTER_TABLEという表を使用しています。
CREATE TABLE georaster_table ( georid NUMBER, name VARCHAR2(32), georaster SDO_GEORASTER );
ラスター・データ表は、SDO_RASTER型のオブジェクト表である必要があり、列(rasterID、pyramidLevel、bandBlockNumber、rowBlockNumber、columnBlockNumber)
に主キーが定義されている必要があります。
各ラスター・データ表の名前は、引用符で囲まれていない有効な識別子と同じである必要があります。これらの名前は、スキーマ接頭辞を使用せずに、GeoRasterメタデータ・ビューおよびSDO_GEORASTERオブジェクトにすべて大文字で格納されます。(各GeoRaster列の名前は、引用符で囲まれていない有効な識別子と同じである必要があります。これらの名前は、GeoRasterメタデータ・ビューにすべて大文字で格納されます。)また、各ラスター・データ表の名前は、データベース内で一意である必要があります。SDO_GEOR_ADMIN.maintainSysdataEntriesファンクションを使用すると、ラスター・データ表の名前の重複を解決できます。このファンクションについては、第5章で説明します。
ラスター・データ表の配置および記憶域特性は、ユーザーが制御できます(たとえば、パフォーマンスの向上のために表をパーティション化するなど)。大規模なGeoRasterオブジェクトの場合、ラスター・データを別のラスター・データ表に格納し、そのラスター・データ表をピラミッド・レベルまたはブロック番号(あるいはその両方)でパーティション化することをお薦めします。GeoRaster表およびラスター・データ表の格納には、SYSTEM表領域を使用しないでください。かわりに、GeoRaster表用の個別のローカル管理(デフォルト)表領域を作成してください。
ラスター・データのブロック・サイズを選択する際は、次のことを考慮します。
ラスター・ブロックの最大長は4GBです。4GBを超えるブロック・サイズを指定しないでください。
必要なラスター・ブロック・サイズを計算する際は、GeoRasterオブジェクトのcellDepth
値を考慮します。
適切なブロック・サイズを選択するには、ラスター・ブロック・サイズと、GeoRasterオブジェクトに必要なブロック数のバランスを取ります。サイズの大きなラスター・データの場合、行および列の次元サイズとして最低でも(512,512)をお薦めします。ラスター・ブロックが4KBに近くなるようなブロック化サイズ値は、通常は適切ではありません。4KBは、OracleのBLOBを表外に格納する場合のしきい値であるためです。
BasicFile LOB(BasicFiles)およびSecureFile LOB(SecureFiles)を使用した例を含む、ラスター・データ表の作成の詳細は、3.1.2項を参照してください。
空白の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(ゼロ)が入力されるためです。このファンクションをコールしてピラミッドを生成するときは、この項の説明のように一貫性のある背景値を選択するように注意してください。
ビットマップ・マスク(1.8項を参照)にも空のラスター・ブロックが含まれる場合があり、欠落しているセルの値は0(ゼロ)を示します。データの入力が必要な場合、欠落しているセルは必ず0(ゼロ)の値で充填されます。
GeoRaster表と、それに関連するラスター・データ表では、所有者が同じである必要があります。ただし、適切な権限を持つユーザーは、他のスキーマが所有するGeoRaster表と、それに関連するラスター・データ表を作成できます。また、他のスキーマが所有しているGeoRasterオブジェクトを作成、問合せ、更新および削除することもできます。GeoRasterオブジェクトのクロススキーマ問合せでは、GeoRaster表と、それに関連するラスター・データ表についてSELECT権限を持っている必要があります。GeoRasterオブジェクトのクロススキーマ更新では、GeoRaster表と、それに関連するラスター・データ表についてSELECT、INSERT、UPDATEおよびDELETE権限を持っている必要があります。
2.4項で説明する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スキーマについては、付録A、2.3.1項「SDO_GEOR_HISTOGRAMオブジェクト型」、2.3.2項「SDO_GEOR_COLORMAPオブジェクト型」、2.3.3項「SDO_GEOR_GRAYSCALEオブジェクト型」および2.3.5項「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オブジェクトが地理参照される場合は、SRSメタデータのisReferenced
値がTRUE
になります。参照されない場合、この値はFALSE
です。
幾何補正は、水平座標に対して実行できます。これによって、GeoRasterデータ・セットのセルを投影図座標系にマップすることが可能になります。幾何補正後の各セルは、図で使用される単位の均等なサイズになり、モデル座標系(東西次元および南北次元)で配置されます。標高データ(DEM)を使用した幾何補正はオルソ補正と呼ばれます。これは、地形偏移を修正する特別な形式の幾何補正です。GeoRasterオブジェクトを幾何補正すると、そのオブジェクトのメタデータのisRectified
値がTRUE
になります。幾何補正していない場合、この値はFALSE
です。GeoRasterオブジェクトをオルソ補正すると、そのオブジェクトのメタデータのisOrthoRectified
値がTRUE
になります。オルソ補正していない場合、この値はFALSE
です。
GeoRasterオブジェクトの地理参照の詳細は、3.5項を参照してください。
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
はXの次数、j
はYの次数、および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メタデータに格納されます(2.3.5項を参照)。 RMSの数値(rowRMS
、columnRMS
およびtotalRMS
)は、格納することはできますが、今回のリリースのGeoRasterの内部計算では考慮されません。
この関数フィッティング・モデルは汎用モデルです。このモデルは、アフィン変換、DLT(Direct Linear Transformation)、RPC(Rational Polynomial CoefficientsまたはRapid Positioning Coefficients)などの特定のモデルをサポートします。これらの標準モデルの係数は、GeoRasterに格納するために、この項で説明する順序に変換されます。SDO_GEOR.setSRSプロシージャを使用すると、GeoRasterオブジェクトの空間参照情報を設定でき、SDO_GEOR.getGeoreferenceTypeファンクションを使用するとGeoRasterオブジェクトの特定の地理参照モデル・タイプを検出できます。DLTおよびRPCの詳細は、サード・パーティの関連するドキュメントを参照してください。最も単純な地理参照モデルは、次に示す特別なアフィン変換です。
row = a + c * y column = d - c * x
前述の計算式では、c
が0(ゼロ)以外の値である場合、ラスター・データは幾何補正されているとみなされ、そのメタデータ内のisRectified
値がTRUE
になります。
GeoRasterは、地理参照を通して地上座標をセル座標に割り当て、セル座標を地上座標に割り当てます。特殊なケースとして、セルの整数座標(セル・マトリックス内のセルの配列索引)がモデル座標に変換されます。これにより、モデル空間内の点の正確な場所を特定します。この点(モデル座標)は、セルによって表されるモデル空間内の領域の左上角または中心のいずれかになります。1つのセルによって表されるモデル空間内の領域の基準を領域の左上角と中心のいずれにするかは、GeoRasterのXMLスキーマのmodelCoordinateLocation
要素によって指定されます。
同様に、モデル座標は地理参照を通してセル座標に変換できます。ただし、地理参照モデルを直接変換した結果のセル座標は、ほとんどが浮動小数点数です。(modelCoordinateLocation要素で指定される)セル空間座標系のタイプは、浮動小数点座標が参照するセルを決定します(1.3項を参照)。GeoRasterでは、2つのタイプのセル座標系が、地上座標系のモデル座標の位置と一貫性があります。Oracle Spatial 11gでは、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オブジェクトのサブオブジェクトです。サイズは、通常、アプリケーションでのイメージの取得および表示(特に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
: 元の次元サイズの行または列の小さい方です。
ピラミッド内のセル・アドレッシングでは、元のラスター・データに定義されているセル・アドレッシングと同じタイプを使用します(1.3項を参照)。各ピラミッド・レベルには独自のセル空間がありますが、ピラミッド・レベルのすべてのセル空間には、元のレベル(レベル・ゼロ)のセル座標系と同じタイプのセル座標系(中心または左上を基準とするセル座標系)があります。セルは均等なサイズの四角形で、単位は1セルです。各ピラミッド・レベルの左上角のセルにあるULTCoordinateは、メタデータに登録されている、元のラスター・データのULTCoordinateと同じです。このセル空間の定義とピラミッド・レベルに基づいて、1つのピラミッド・レベルのセル座標を別の座標に変換できます。
GeoRasterメタデータにはピラミッド・レベルごとに定義されている個々のSRSはありません。ピラミッド内のセルのモデル座標を導出するには、最初に別のピラミッド・レベルのセル座標をピラミッド・レベル・ゼロのセル座標に変換してから、GeoRaster SRSを適用します。逆に、ピラミッドの地上点のセル座標を導出するには、ピラミッド・レベル・ゼロのこれらの地上点のセル座標をGeoRaster SRSを使用して最初に取得してから、特定のピラミッド・レベルに変換します。Oracle Spatial 11gでは、GeoRasterがピラミッドのサブセル・アドレッシングを、そのAPIのすべての部分においてサポートします。
ピラミッドは、GeoRasterオブジェクトと同じラスター・データ表に格納されます。ラスター・データ表内のpyramidLevel属性は、特定のピラミッド・レベルに関連付けられたすべてのブロックを示します。通常、各ピラミッド・レベルでのブロック化方法は、(GeoRasterオブジェクト・メタデータに定義されている)元のレベルのブロック化方法と同じです。ただし、次の例外があります。
元のGeoRasterオブジェクトがブロック化されておらず、元のセル・データがオブジェクトと同じサイズの1つのブロック(BLOB)に格納されている場合、各ピラミッド・レベルのセル・データは1つのブロックに格納され、各ピラミッド・レベルの実際のイメージと同じサイズになります。
元のGeoRasterオブジェクトがブロック化されている場合(1つのブロックとしてブロック化されている場合も)、各ピラミッド・レベルのセル・データは元のレベルのデータと同じ方法でブロック化されます。各ブロックは、ピラミッド・レベルの実際のイメージの最大次元サイズがブロック・サイズより大きい場合、個別のBLOBオブジェクトに格納されます。ただし、生成されるピラミッド・レベルの解像度がより低くなる場合(ピラミッド・レベルの行次元と列次元の両方のサイズが、それぞれ行ブロック・サイズと列ブロック・サイズの半分以下である場合)、そのようなピラミッド・レベルのセル・データは1つのBLOBオブジェクトに格納され、そのピラミッド・レベルの実際のイメージと同じサイズになります。
GeoRasterオブジェクトのピラミッドを生成するか、またはGeoRasterオブジェクトをスケール変更する際は、セル・データのリサンプリングが必要になります。GeoRasterは、次の標準リサンプリング方法を提供します。
最近傍
周囲の4つのセルを使用する共1次内挿法
周囲の16個のセルを使用する3次畳込み内挿法
周囲の4つのセルを使用する4平均法
周囲の16個のセルを使用する16平均法
GeoRasterでのピラミッドのサポートに関連するサブプログラム(第4章を参照)を次に示します。
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
は常に、ビットマップ・マスクが関連付けられているレイヤー番号に設定されます。バンドとレイヤーの間の関係の詳細は、1.5項を参照してください。
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メタデータに登録できます(1.9項を参照)。
PL/SQLサブプログラムには、ビットマップ・マスクに対する操作を実行するものがあります。操作には、ビットマップ・マスクのGeoRasterオブジェクトへのアタッチ、既存のビットマップ・マスクの置換、ビットマップ・マスクの削除、GeoRasterオブジェクトが特定のビットマップ・マスクを持つかどうかのチェック、ビットマップ・マスク全体、ビットマップ・マスクのサブセットまたはビットマップ・マスクの単一のセル値の抽出などがあります。
NODATA値は、不明または無効な値を持つセルで使用されます。個別のラスター・レイヤーごとに、ラスター・レイヤーに関連付けられた複数のNODATA値またはNODATA値の範囲、あるいはその両方を持つことができます。GeoRasterメタデータ・スキーマには、各ラスター・レイヤーのNODATA情報が格納されます。具体的には、オブジェクト・レイヤーに関連付けられたNODATA値および値の範囲が他のサブレイヤーに適用されます。サブレイヤーのNODATA値および値の範囲は、オブジェクト・レイヤーのNODATA値および値の範囲と、サブレイヤーに存在するNODATAメタデータを結合したものです。サブレイヤーからNODATA値または値の範囲を削除しても、オブジェクト・レイヤーに存在する値または値の範囲は削除できません。
NODATA値および値の範囲は、リサンプリング中(スケール変更によるピラミッドの生成時、イメージの生成時など)に考慮されます。デフォルトで、NODATAセルは、拡大や縮小を回避するために通常のセルとして処理されます。ただし、NODATA値または値の範囲が考慮対象として選択され、リサンプリング・メソッドがBILINEAR
、AVERAGE4
、AVERAGE16
またはCUBIC
の場合は、リサンプリングの計算に含まれるセル値が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-BまたはJPEG-F)およびDEFLATEの2つのネイティブの圧縮タイプがあります。どちらのタイプも、それぞれのブロックは明確なラスター表現として個別に圧縮されます。圧縮されたGeoRasterオブジェクトを解凍すると、各ブロックは個別に解凍されます。
解凍された(圧縮されていない)GeoRasterオブジェクトで実行できるすべてのGeoRaster操作は、圧縮されたGeoRasterオブジェクトでも実行できます。GeoRasterでなんらかの操作が行われる場合、ソースGeoRasterオブジェクトが圧縮されていれば、必要に応じてそのソース・オブジェクトのブロックが内部的に解凍されてから、指定された操作が実行されます。次に、その操作によって得られたオブジェクトがcompression
キーワードで指定された形式で圧縮されます。compression
キーワードが指定されていない場合は、ソース・オブジェクトの圧縮形式で圧縮されます。このため、特定の操作では、その実行前に圧縮されているGeoRasterオブジェクトを解凍する必要はありませんが、実行前にオブジェクトを解凍しておくと、全体のパフォーマンスが向上する操作もあります。
データベース・ユーザーがGeoRasterオブジェクトを圧縮または解凍する前には、データベースがデフォルトの一時表領域で作成されていること、あるいはユーザーが一時表領域または表領域グループに割り当てられていることを確認してください。これ以外の場合、デフォルトでは、一時表領域としてSYSTEM
表領域が使用され、GeoRasterの操作で生成された大容量の一時LOBデータがSYSTEM
表領域に格納されます。このため、データベース全体のパフォーマンスに影響を与える可能性があります。一時表領域の管理については、『Oracle Database管理者ガイド』を参照してください。
GeoRasterオブジェクトの圧縮または解凍を指定するには、storageParam
パラメータのcompression
キーワードを使用します(1.4.1項を参照)。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オブジェクトの詳細は、1.4.3項を参照してください。)
この項では、次の内容について説明します。
GeoRasterオブジェクトのJPEG圧縮(1.10.1項)
GeoRasterオブジェクトのDEFLATE圧縮(1.10.2項)
GeoRasterオブジェクトの解凍(1.10.3項)
GeoRasterオブジェクトの圧縮に使用するサード・パーティのプラグイン(1.10.4項)
JPEG圧縮がサポートされているのは、cellDepth
値が8BIT_U
で、ブロック当たりのバンド数が4以下(ただし、各ブロックでのバンド数が1、3または4であること)のGeoRasterオブジェクトのみです。(ブロック当たりのバンド数が2のGeoRasterオブジェクトは、JPEG圧縮ではサポートされません。)バンド数が4より大きいGeoRasterオブジェクトの場合は、GeoRasterオブジェクトを1、3または4バンドのバンド・ブロック・サイズで再ブロック化するとJPEG圧縮できます。
JPEG圧縮は、あらゆるサイズのGeoRasterオブジェクトに対してサポートされていますが、GeoRasterオブジェクトの各ブロックの合計サイズ(columnsPerBlock * rowsPerBlock * bandsPerBlock * cellDepth / 8
)は、50MB以下である必要があります。容量の大きいGeoRasterオブジェクトに対しては、SDO_GEOR.changeFormatCopyプロシージャをコールし、50MB未満のブロックになるようにGeoRasterオブジェクトをブロック化してからGeoRasterオブジェクトを圧縮するか、またはSDO_GEOR.changeFormatCopyプロシージャへの同じコールの中で、ブロック化および圧縮を実行できます。
GeoRasterは、JPEG-BおよびJPEG-Fの圧縮モードをサポートします。
JPEG-Bモードは、簡易基準のJPEG形式でオブジェクトを圧縮します。
JPEG-Fモードは、フルフォーマット基準のJPEG形式でオブジェクトを圧縮します。
これらのモードについては、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-Bモードの圧縮は簡易形式であるため、デコードに必要な量子化表およびハフマン表は、JPEG-Bの圧縮データには含まれません。JPEG-Fの圧縮データには、これらの表が含まれます。
JPEG-Bの簡易形式はJPEG-F形式よりも圧縮率が高いため、容量の大きいGeoRasterオブジェクトが、数多くの小さいブロックにブロック化されている場合は、必要な記憶領域が大幅に減少します。たとえば、75の品質で圧縮されたリモート・センシング・イメージの場合、JPEG-Bの平均圧縮率は約20:1ですが、JPEG-Fの平均圧縮率は約2.5:1になります。
JPEG-Bおよび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-B圧縮のメタデータ、またはJPEG-F圧縮のヘッダー・データから取得されるため、記憶域パラメータとして圧縮品質を指定することはできません。
PL/SQL、Oracle Call Interface(OCI)などの既存のApplication Programming Interface(API)を使用すると、圧縮されたGeoRasterオブジェクトを、データベースの外(つまりクライアント側)で解凍して、GeoRasterオブジェクトのブロックに対応するBLOBオブジェクトを取得し、該当する圧縮形式の仕様に従って、圧縮されたそれぞれのブロックを個別にデコードすることができます。たとえば、GeoRasterオブジェクトがJPEG-Fモードで圧縮されている場合、デコーディング・プロセスでは最初にJPEGヘッダーが解析され、表およびブロック次元が取得されます。次に、ハフマンのデコーディングが適用され、イメージ・データが量子化されます。
JPEGの解凍をすべてユーザー自身で実装するのは、複雑で、細部まで気を配る必要のあるプロセスです。アプリケーションによっては、既存の実装を使用する方が適切な場合があります。Cのjpeglib
などのライブラリ、およびJavaのいくつかのイメージングAPI(Sun社のJ2SE、JAIなど)では、すでにJPEGの解凍を実装しており、それらを使用して、JPEGで圧縮されたGeoRasterオブジェクトに対しデコーディング・プロセスを実行することができます。DEFLATE圧縮に対しては、ZLIB CライブラリまたはJava APIを使用して、基本的に同様の方法を適用できます。
GeoRasterは、サード・パーティの圧縮ソリューションのプラグイン・アーキテクチャを提供します。LizardTech社は、MrSIDおよびJPEG 2000の圧縮タイプで、ラスター・イメージをネイティブでOracle Spatial GeoRasterに圧縮して格納できるプラグインを提供しています。LizardTechのウェーブレット圧縮をOracle Spatial GeoRasterで使用するためのガイドへのリンクを含む詳細は、次のOracle Spatialのページを参照してください。
http://www.oracle.com/technology/products/spatial/htdocs/spatial_partners_downloads.html
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は、SDO_GEOR、SDO_GEOR_UTLおよびSDO_GEOR_ADMINというPL/SQLパッケージを提供します。これらのパッケージには、GeoRasterのデータおよびメタデータを処理するサブプログラム(ファンクションとプロシージャ)が含まれています。これらのサブプログラムのほとんどは、次の論理カテゴリのいずれかに適合し、サブプログラムの目的を反映します。
GeoRasterデータの作成、ロードおよびエクスポート
地理参照およびGeoRasterオブジェクトの検証
GeoRasterメタデータの問合せおよび更新
GeoRasterセル・データの問合せおよび更新
GeoRasterオブジェクトの処理
GeoRaster管理機能の実行
GeoRasterは、setプロシージャまたはprocessプロシージャの完了後に、GeoRasterオブジェクトを自動的に検証します。
SDO_GEOR(第4章)、SDO_GEOR_ADMIN(第5章)およびSDO_GEOR_UTL(第6章)の各PL/SQLパッケージのサブプログラムの詳細なリファレンス情報は、それぞれの章を参照してください。これらの章では、サブプログラムをアルファベット順に記載しています。第3章では、サブプログラムをコールする一般的な手順など、これらの多くのサブプログラムの使用方法を含む操作について説明します。
GeoRasterでは、Java APIは提供されません。ただし、OracleAS MapViewerは、GeoRasterの主題をサポートし、GeoRasterデータにアクセスするためのJava APIおよびXML APIを備えています。MapViewerについては、『Oracle Application Server MapViewerユーザーズ・ガイド』を参照してください。
注意: GeoRasterでは、データのロードとエクスポートにおける外部ファイル形式のサポート、および視覚化のサポートが制限されています。かわりに、Oracleはサード・パーティと密接に連携して、各種ラスター・データ形式をロードおよびエクスポートする包括的なETL(抽出、変換、ロード)ツールと、GeoRasterオブジェクトを表示する視覚化クライアントを提供します。Spatialのパートナ・ソリューションの情報(制限を含む)については、 |
GeoRasterには、いくつかのクライアント側ツールが含まれています。 これらのクライアント側ツールを使用するには、Oracle Database Examplesメディアからデモ・ファイルをインストールする必要があります(『Oracle Database Examplesインストレーション・ガイド』を参照)。 インストールすると、これらのツールは次のディレクトリにあります(Spatialのデフォルトのインストール・ディレクトリが$ORACLE_HOME
/md
であるとします)。
$ORACLE_HOME/md/demo/georaster/java
このディレクトリには、README
という名前のファイルが含まれています。このファイルには、次のツールに役立つ使用情報や、使用手順が記載されています。
GeoRasterビューア: このツールは、GeoRasterオブジェクトとメタデータ、およびラスター・イメージをJavaビューア・アプリケーションに表示します。複数のデータベースに同時に接続して、左側のペインに示される各データベースからGeoRasterオブジェクトを表示できます。元のイメージ(ピラミッド・レベル0)から概要的なイメージ(最高のピラミッド・レベル)まで、様々な解像度のビューを簡単に切り替えることができます。線形ストレッチ(自動、手動、またはピース単位)、正規化、均等化、および明るさ、コントラスト、しきい値の制御など、イメージを向上させるための操作を実行できます。(GeoRasterオブジェクトの表示方法の詳細は、3.14項を参照してください。)
ビューアからは、GeoRasterローダーおよびエクスポータ・ツールをコールできます。これにより、1つのツールを、すべてのGeoRasterツールの機能へのインタフェースとして使用できます。ローダーおよびエクスポータ・ツールについては、この項およびREADME
ファイルで説明しています。
GeoRasterローダー: このツールは、ラスター・データをGeoRasterオブジェクトにロードします。GeoRasterは、TIFF、GeoTIFF、JPEG、BMP、GIF、PNGおよびJP2イメージ形式をロードできます。地理参照情報は、ESRIワールド・ファイル、GeoTIFFファイルおよびDigital Globe RPCテキスト・ファイルからのロードが可能です。
GeoRasterローダーは、SDO_GEOR.importFromプロシージャ(第4章を参照)のかわりに使用できます。ただし、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プロシージャ(第4章を参照)のかわりに使用できます。ただし、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
(Sun Java Advanced Imaging Image I/O Toolsのダウンロード・ページから入手可能)を追加します。
ラスター・ファイルまたはイメージ・ファイルがGeoRasterオブジェクトにロードされた後、データ全体がGeoRasterオブジェクトのネイティブ・データ型で格納され、他の特定のファイル形式との関連性がなくなります。
独自のGeoRasterローダー・ツールおよびGeoRasterエクスポータ・ツールは、OCI、Oracle C++ Call Interface(OCCI)またはJavaを使用して開発できます。開発したツールは、クライアント側のコマンドまたはサーバー側のSQLプロシージャまたはファンクションとして実装できます。
GeoRasterには、一般的な操作を示す、いくつかのPL/SQLデモ・ファイルが含まれています。 Oracle Database Examplesメディアからデモ・ファイルをインストールした場合(『Oracle Database Examplesインストレーション・ガイド』を参照)、これらのファイルはSpatialのインストール・ディレクトリ(デフォルトでは$ORACLE_HOME
/md
)の下の次のディレクトリにあります。
/demo/georaster/plsql