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-2のSDO_GEOR.georeferenceで戻される値の配列には、各GCPのRMS値と残差が含まれます。これらを使用して、ソリューションの精度を調査し、不適切なGCPを識別できます。精度に不満がある場合、すべてのGCPを再チェックしてそれらが正確であることを確認し、必要に応じて別のGCPを追加してから、1つ以上のスクリプトを再度実行します。
GeoRasterのGCPサポートでは、任意の非地理空間イメージおよびラスターも空間参照できます。
地理空間イメージを地理参照した後、幾何補正、再投影、モザイク処理の適用や、異なる座標系のジオメトリ・ポリゴンを使用したラスターの空間問合せおよびサブセット化などで、それらのイメージを処理できます。
親トピック: イメージ処理および仮想モザイク