7.33 SDO_GEOR.georeference
構文(プロシージャ)
SDO_GEOR.georeference( georaster IN OUT SDO_GEORASTER, srid IN NUMBER, modelCoordinateLocation IN NUMBER, xCoefficients IN SDO_NUMBER_ARRAY, yCoefficients IN SDO_NUMBER_ARRAY);
構文(ファンクション)
SDO_GEOR.georeference( georaster IN OUT SDO_GEORASTER, FFMethodType IN VARCHAR2, nGCP IN NUMBER, GCPs IN SDO_GEOR_GCP_COLLECTION, storeGCP IN VARCHAR2 DEFAULT 'TRUE', srid IN NUMBER DEFAULT NULL, modelCoordinateLocation IN NUMBER DEFAULT NULL, setResolution IN VARCHAR2 DEFAULT NULL ) RETURN SDO_NUMBER_ARRAY;
または
SDO_GEOR.georeference( georaster IN OUT SDO_GEORASTER, gcpGeorefModel IN SDO_GEOR_GCPGEOREFTYPE, storeGCP IN VARCHAR2 DEFAULT 'TRUE', srid IN NUMBER DEFAULT NULL, modelCoordinateLocation IN NUMBER DEFAULT NULL, setResolution IN VARCHAR2 DEFAULT NULL ) RETURN SDO_NUMBER_ARRAY;
または
SDO_GEOR.georeference( georaster IN OUT SDO_GEORASTER, FFMethodType IN VARCHAR2 DEFAULT NULL, srid IN NUMBER DEFAULT NULL, modelCoordinateLocation IN NUMBER DEFAULT NULL, setResolution IN VARCHAR2 DEFAULT NULL ) RETURN SDO_NUMBER_ARRAY;
説明
プロシージャとして、アフィン変換の指定された係数を使用してセルからモデルへ変換し、GeoRasterオブジェクトを地理参照します。ファンクションとして、データベースに格納されているか、パラメータに指定された地上基準点(GCP)を使用して、サポートされるジオメトリ・モデルのいずれかのソリューションを戻します。
パラメータ
- georaster
-
地理参照するSDO_GEORASTERオブジェクトを指定します。
- srid
-
モデル座標系を指定します。プロシージャではNULLまたは0 (ゼロ)にすることはできず、ファンクションではNULLにできます。MDSYS.CS_SRS表のSRID列の値を指定できます。MDSYS.CS_SRS表のSRID列の値を指定しない場合、Oracle SpatialでSRIDがサポートされず、SRID関連の一部の操作もサポートされない場合があります。
- modelCoordinateLocation
-
セルによって表現される領域のベースのモデル位置を示す値を指定します。
CENTER
の場合は0
、UPPERLEFT
の場合は1
を指定します。 - xCoefficients
-
計算の係数値A、BおよびCを示す配列を指定します(「使用上のノート」を参照)。
- yCoefficients
-
計算の係数値D、EおよびFを示す配列を指定します(「使用上のノート」を参照)。
- FFMethodType
-
地理参照ジオメトリ・モデルとして使用される多項式または有理多項式関数を指定します。
Affine
、QuadraticPolynomial
、CubicPolynomial
、DLT
、QuadraticRational
またはRPC
のいずれかのいずれかの文字列値を指定する必要があります。 - gcpGeorefModel
-
FFMethodType
、nGCP
、GCPs
、solutionAccuracy
を含むオブジェクトを指定します。 - nGCP
-
GCPコレクション内の地上基準点の数(
GCPs
パラメータ)。 - GCPs
-
SDO_GEOR_GCP_COLLECTION型のGCPコレクション(「SDO_GEOR_GCP_COLLECTIONコレクション型」を参照)。
- storeGCP
-
GCPをGeoRasterメタデータに格納する必要があるかどうかを示すフラグを指定します。文字列
TRUE
(デフォルト)では、GeoRasterメタデータに点が格納されますが、文字列FALSE
ではGeoRasterメタデータに点が格納されません。 - setResolution
-
空間解像度を計算してGeoRasterメタデータに格納するかどうかを示すフラグを指定します。文字列
FALSE
またはNULL値では、GeoRasterメタデータに空間解像度が格納されませんが、文字列TRUE
ではGeoRasterメタデータに空間解像度が格納されます。
使用上のノート
プロシージャ構文のノート
このプロシージャは、既存のアフィン変換に基づいてGeoRasterオブジェクトを地理参照する場合に使用します。(地理参照については、「地理参照」および「GeoRasterオブジェクトの地理参照」を参照してください。)
このプロシージャでは、ソース・データ(ESRIワールド・ファイルなど)に含まれる元の地理参照情報内では、変換計算式が次のようになると想定しています。
x = A * column + B * row + C y = D * column + E * row + F
前述のA、B、C、D、EおよびF係数を、SDO_GEOR.georeferenceプロシージャに指定します。これらの係数は内部で自動調整され、適切な地理参照結果の係数a、b、c、d、eおよびfが生成されます。計算式は次のとおりです。
row = a + b * x + c * y column = d + e * x + f * y
計算式の各変数の意味は、次のとおりです:
-
rowは、ラスター空間内のセルの行索引です。
-
columnは、ラスター空間内のセルの列索引です。
-
xは、地上またはモデル空間内の点の東西方向の位置です。
-
yは、地上またはモデル空間内の点の南北方向の位置です。
-
a、b、c、d、eおよびfは係数で、GeoRaster SRSメタデータに格納されます。
-
b*f – c*eは、0(ゼロ)以外である必要があります。
これらの計算式において、b = 0、f = 0、c = -eで、cとeの両方が0(ゼロ)以外の場合、ラスター・データは幾何補正されます。この場合の計算式は次のようになります。
row = a + c * y column = d - c * x
このプロシージャは、GeoRasterオブジェクトの空間解像度を設定します。
次のプロシージャおよびツールも、地理参照に関連する処理を実行します。
-
SDO_GEOR.setSRSプロシージャ: 地理参照情報を設定または削除します。
-
GeoRasterローダー・ツール(GeoRasterツール: ローダー、ビューア、エクスポータを参照)は、ESRIワールド・ファイル、Digital Globe RPCファイルまたはGeoTIFFファイルの地理メタデータをロードできます。
ファンクション構文のノート(GCPとともに使用する場合)
このファンクションは、データベースに格納されているか、パラメータに指定されたGCPを使用して、特定のジオメトリ・モデル(FFMethodType
)のソリューションを計算し、そのソリューションをGeoRaster関数フィッティング・モデルに格納します。
戻される配列には、RMS値と残差が含まれ、その順序は、基準点を使用して計算されたソリューションの精度(rowRMS, colRMS, totalRMS)、チェック・ポイントを使用して計算された地上位置決めの精度(xRMS, yRMS, zRMS, modelTotalRMS)、基準点を使用して計算された地上位置決めの精度(xRMS, yRMS, zRMS, modelTotalRMS)および(チェック・ポイントではなく)基準点ごとの(xResidual, yResidual)です。残差の順序は、XMLメタデータに格納されている基準点と同じです(ID値が数値の場合、必ずしも基準点のID値の順番ではありません)。
戻される値は常に17以上あります(3つ以上の基準点があると仮定)。–1.0の位置精度(RMS)は、その値が存在しないことを意味します。2次元ジオメトリ・モデルでは、zRMS値は常に–1.0で、それ以外の場合、zRMS値は現在のリリースでは常に0です。
GCPは、GeoRasterメタデータから取得するか、GCP関連のオブジェクト型を使用して提供できます。
GCP情報のないインタフェースでは(gcpGeorefModel
パラメータなしの形式)、GCPがGeoRasterオブジェクトのメタデータに格納されると仮定されます。GCPが格納されていない場合、または指定したモデルにとって十分なGCPが格納されていない場合、例外が発生します。
このファンクション・コールの後、GeoRasterオブジェクトが地理参照され、関数フィッティング・モデルの係数がGeoRaster SRSメタデータ構成要素に設定されます。
GCPを使用した地理参照の詳細は、「地上基準点(GCP)地理参照モデル」を参照してください。
例
次の例では、アフィン変換の係数を直接使用してセルからモデルへ変換し、GeoRasterオブジェクトを地理参照します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。)
DECLARE gr sdo_georaster; BEGIN SELECT georaster INTO gr FROM georaster_table WHERE georid = 1 FOR UPDATE; sdo_geor.georeference(gr, 82394, 0, sdo_number_array(28.5, 0, 1232804.04), sdo_number_array(0, -28.5, 13678.09)); UPDATE georaster_table SET georaster = gr WHERE georid = 1; COMMIT; END; / PL/SQL procedure successfully completed. SET NUMWIDTH 20 SELECT georid, sdo_geor.getSRS(georaster) SRS FROM georaster_table WHERE georid = 1; GEORID -------------------- SRS(ISREFERENCED, ISRECTIFIED, ISORTHORECTIFIED, SRID, SPATIALRESOLUTION, SPATIA -------------------------------------------------------------------------------- 1 SDO_GEOR_SRS('TRUE', 'TRUE', NULL, 82394, SDO_NUMBER_ARRAY(28.5, 28.5), NULL, NU LL, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, NULL, NULL, NULL, SDO_NUMBER_ARRAY(1, 2, 1, 3, 479.93298245614, 0, -.0350877192982456), SDO_NUMBER_ARRAY(1, 0, 0, 1, 1), SDO_N UMBER_ARRAY(1, 2, 1, 3, -43256.2821052632, .0350877192982456, 0), SDO_NUMBER_ARR AY(1, 0, 0, 1, 1))
元のラスター・データが幾何補正される場合、および左上角のセルの中心点のモデル座標が(x0, y0)で、その空間解像度がsである場合、前述の例のコードを直接使用して、28.5をsに、1232804.04をx0に、13678.09をy0に置換することで、GeoRasterオブジェクトを地理参照できます。ラスターの適切に定義された正確なエンベロープや中心点のモデル座標など、GeoRasterオブジェクトに関する他の情報がある場合、(x0, y0)および空間解像度sを計算し、同じアプローチを使用してオブジェクトを地理参照できます。
次の例では、地上基準点(GCP)の情報を使用してGeoRasterオブジェクトを地理参照します。
DECLARE gr1 sdo_georaster; gr2 sdo_georaster; georefModel SDO_GEOR_GCPGEOREFTYPE; GCPs SDO_GEOR_GCP_COLLECTION; rms sdo_number_array; BEGIN SELECT georaster INTO gr1 from georaster_table WHERE georid=10 FOR UPDATE; GCPs := SDO_GEOR_GCP_COLLECTION( SDO_GEOR_GCP('1', '', 1, 2, sdo_number_array(25.625000, 73.875000), 2, sdo_number_array(237036.937500, 897987.187500), NULL, NULL), SDO_GEOR_GCP('2', '', 1, 2, sdo_number_array(100.625000, 459.125000), 2, sdo_number_array(237229.562500, 897949.687500), NULL, NULL), SDO_GEOR_GCP('3', '', 1, 2, sdo_number_array(362.375000, 77.875000), 2, sdo_number_array(237038.937500, 897818.812500), NULL, NULL), SDO_GEOR_GCP('4', '', 1, 2, sdo_number_array(478.875000, 402.125000), 2, sdo_number_array(237201.062500, 897760.562500), NULL, NULL), SDO_GEOR_GCP('5', '', 2, 2, sdo_number_array(167.470583, 64.030686), 2, sdo_number_array(237032.015343, 897916.264708), NULL, NULL), SDO_GEOR_GCP('6', '', 2, 2, sdo_number_array(101.456177, 257.915534), 2, sdo_number_array(237128.957767, 897949.271912), NULL, NULL) ); georefModel := SDO_GEOR_GCPGEOREFTYPE('Affine', GCPs.count, GCPs, NULL); rms := sdo_geor.georeference(gr1, georefModel, 'FALSE', 26986, 1); UPDATE georaster_table SET georaster=gr1 WHERE georid=10; COMMIT; END; /
親トピック: SDO_GEORパッケージのリファレンス