6.1 高度な地理参照

空間参照機能以外に、高度な地理参照機能を使用できます。

GeoRasterでは、空間参照機能は空間参照システム(SRS)または地理参照と呼ばれます(これは地理または地理空間スキームに関連する場合としない場合があります)。地理参照は、GeoRasterの主要機能であり、地理空間イメージおよびグリッド・ラスター・データに対する空間問合せおよび操作の基盤です。SRSモデルの詳細は、「地理参照」を参照してください。

GeoRasterでは、座標系に関連付けられていない地理空間イメージ以外のイメージ、美術写真、および多次元配列がサポートされます。これらのイメージおよびラスターでは、通常は地理参照の必要はありませんが、ほとんどのGeoRaster操作(ピラミッド化、スケール変更、サブセット化、バンドのマージ、ストレッチ、代数操作など)はそれらに対して動作します。この場合、ラスターのセル空間座標(行、列およびバンド)を使用してピクセル(セル)をアドレッシングします。

地理に関連しないユーザー定義の座標系(新しいSRID)を作成することも可能で、そのSRIDをラスターのモデル座標系として使用できます。その後、そのSRIDを基準としてこれらのラスターを空間参照できます(SRSメタデータ構成要素がこれらのラスターごとに作成されます)。これを行うことで、各ラスターが空間参照され、そのユーザー定義のモデル座標系にともに配置されます。関連するすべてのラスターでこれを行った後、GeoRaster操作は、地理座標系を基準に地理参照する場合と同様にそれらのラスターで動作します。たとえば、ある芸術家が壁に描いた巨大な壁画があり、その壁の多数の高解像度写真を異なるタイルとして撮り、それらをまとめて貼り合せるとします。タイル・イメージを空間参照し、GeoRasterのモザイク処理機能を使用して貼合せを行うことができます。

新しい座標系を定義しない場合でも、セル空間にイメージをともに配置できます。つまり、イメージを同じ座標系に配置してモザイク処理できるように、SDO_GEOR.setULTCoordinateプロシージャをコールしてイメージ用に異なるULT座標を設定できます。

保持しているほとんどの地理空間イメージおよびラスター・ファイルは、通常、すでに他のソフトウェア・ツールによって地理参照されているため、それらには地理参照情報が付属している可能性があります。そのような場合、地理参照情報は、ラスターとともに直接ロードするか、後でSDO_GEOR.setSRS、GeoRasterローダー・ツール、GDAL、または他のサードパーティETLツールを使用してロードできます。詳細は、「GeoRasterツール: ビューア、ローダー、エクスポータ」および「GeoRasterオブジェクトの地理参照」を参照してください。

地理空間イメージに空間参照情報が含まれない場合、GeoRasterの地上基準点(GCP)サポートを使用してイメージを地理参照できます。GCPは、リモート・センシング・システムによって自動的に、または後から手動で収集します。GCP情報のないイメージの場合、GeoRasterのビジュアライゼーション・ツールを使用してGeoRasterオブジェクトのGCPを収集できます。GCPについては、「地上基準点(GCP)地理参照モデル」を参照してください。

GCPを入手した後で、それらをGeoRasterメタデータに格納する場合、SDO_GEOR.getGCPGeorefModelファンクションおよびSDO_GEOR.setGCPGeorefModelプロシージャを使用してGCPベースの地理参照モードを取得および設定できます。GCPのみを取得、設定および編集するには、SDO_GEOR.getControlPoint ファンクションと、SDO_GEOR.setControlPointおよびSDO_GEOR.deleteControlPoint プロシージャを使用します。GCPは、SDO_GEOR.georeferenceをコールすると、GeoRasterメタデータにも格納できます。

ジオメトリ・モデルのみを取得および設定するには、SDO_GEOR.getGCPGeorefMethodファンクションおよびSDO_GEOR.setGCPGeorefMethodプロシージャを使用します。GeoRasterでは、チェック・ポイント(pointType = 2)も格納できますが、それらは基準点(pointType = 1)と同じように処理および操作されます(ただし、チェック・ポイントは、SDO_GEOR.georeferenceがGCPとともにコールされたときにSRS係数を作成するために使用されません)。

GeoRasterオブジェクトに格納されているか、格納されていない地上基準点(GCP)があり、関数フィッティング地理参照モデルを計算する場合、SDO_GEOR.georeferenceプロシージャをコールしてソリューションを検出します。関数フィッティング地理参照モデルでは、すべての係数をGeoRaster SRSに格納し、セル空間とモデル空間の間で座標変換が可能になります。GCPを使用して関数フィッティング地理参照モデルを生成するには、適切なジオメトリ・モデルを指定する必要があります。SDO_GEOR.georeferenceによってサポートされる特定のジオメトリ・モデルは、アフィン変換、二次多項式、三次多項式、DLT、二次有理およびRPCです。これらのモデルについては、「関数フィッティング地理参照モデル」を参照してください。

例6-1 GCP地理参照モデルの設定

たとえば、平面領域のランドサット・イメージがあり、それを地理参照する場合、二次多項式ジオメトリ・モデルを選択できます。この目的で、9つのGCP (この場合6つ以上のGCP)と3つのチェック・ポイントを収集済の場合、GCPを設定して、例6-1のコードを使用してGeoRasterのメタデータにそれらを格納できます。

DECLARE
   gr1         sdo_georaster;
   georefModel SDO_GEOR_GCPGEOREFTYPE;
   GCPs        SDO_GEOR_GCP_COLLECTION;
BEGIN
   SELECT georaster INTO gr1 from georaster_table WHERE georid=1 FOR UPDATE;
   GCPs := SDO_GEOR_GCP_COLLECTION( 
                 SDO_GEOR_GCP('1', '', 1, 
                      2, sdo_number_array(25, 73),
                      2, sdo_number_array(237036.9, 897987.2),
                      NULL, NULL),
                 SDO_GEOR_GCP('2', '', 1, 
                      2, sdo_number_array(100, 459),
                      2, sdo_number_array(237229.6, 897949.7),
                      NULL, NULL),
                 SDO_GEOR_GCP('3', '', 1, 
                      2, sdo_number_array(362, 77),
                      2, sdo_number_array(237038.9, 897818.8),
                      NULL, NULL),
                 SDO_GEOR_GCP('4', '', 1, 
                       2, sdo_number_array(478, 402),
                       2, sdo_number_array(237201.06, 897760.56),
                       NULL, NULL),
                 SDO_GEOR_GCP('5', '', 1, 
                       2, sdo_number_array(167, 64),
                       2, sdo_number_array(237032.02, 897916.26),
                       NULL, NULL),
                 SDO_GEOR_GCP('6', '', 1, 
                       2, sdo_number_array(101, 257),
                       2, sdo_number_array(237128.9, 897949.3),
                       NULL, NULL),
                 SDO_GEOR_GCP('7', '', 1, 
                       2, sdo_number_array(235, 501),
                       2, sdo_number_array(237250.9, 897882.2),
                       NULL, NULL),
                 SDO_GEOR_GCP('8', '', 1, 
                       2, sdo_number_array(423, 214),
                       2, sdo_number_array(237107.3, 897788.0),
                       NULL, NULL),
                 SDO_GEOR_GCP('9', '', 1, 
                       2, sdo_number_array(127, 178),
                       2, sdo_number_array(237089.0, 897936.5),
                       NULL, NULL),
                 SDO_GEOR_GCP('10', '', 2, 
                       2, sdo_number_array(131, 425),
                       2, sdo_number_array(237212.8, 897934.2),
                       NULL, NULL),
                 SDO_GEOR_GCP('11', '', 2, 
                       2, sdo_number_array(299, 111),
                       2, sdo_number_array(237055.7, 897850.4),
                       NULL, NULL),
                 SDO_GEOR_GCP('12', '', 2, 
                       2, sdo_number_array(329, 253),
                       2, sdo_number_array(237126.9,897835.4), 
                       NULL, NULL) );
   georefModel := SDO_GEOR_GCPGEOREFTYPE('QuadraticPolynomial', GCPs.count, GCPs, NULL);
   -- Set and store the GCP georeference model into the GeoRaster object's metadata
   sdo_geor.setGCPGeorefModel(gr1, georefModel);
   UPDATE georaster_table SET georaster=gr1 WHERE georid=1;
   COMMIT;
END;
/

例6-2 GCPを使用した関数フィッティング・モデルの生成

例6-1のコードを使用した後、例6-2のコードを使用して関数フィッティング・モデルの係数を生成できます。

DECLARE
   gr1  sdo_georaster;
   rms  sdo_number_array;
BEGIN
   SELECT georaster INTO gr1 from georaster_table WHERE georid=1 FOR UPDATE;
   -- georeference the image using the GCPs stored in the image's metadata
   rms := sdo_geor.georeference(gr1, null, 26986, 0, 'TRUE'); 
   UPDATE georaster_table SET georaster=gr1 WHERE georid=1;
   COMMIT;
END;
/

例6-1および例6-2のステップは、GeoRasterオブジェクトのメタデータにGCPを事前設定することなく、組み合せることができます(「SDO_GEORパッケージのリファレンス」SDO_GEOR.georeferenceの例を参照)。例6-2SDO_GEOR.georeferenceで戻される値の配列には、各GCPのRMS値と残差が含まれます。これらを使用して、ソリューションの精度を調査し、不適切なGCPを識別できます。精度に不満がある場合、すべてのGCPを再チェックしてそれらが正確であることを確認し、必要に応じて別のGCPを追加してから、1つ以上のスクリプトを再度実行します。

GeoRasterのGCPサポートでは、任意の地理空間イメージおよびラスターも空間参照できます。

地理空間イメージを地理参照した後、幾何補正、再投影、モザイク処理の適用や、異なる座標系のジオメトリ・ポリゴンを使用したラスターの空間問合せおよびサブセット化などで、それらのイメージを処理できます。