7.150 SDO_GEOR.setSRS
形式
SDO_GEOR.setSRS( georaster IN OUT SDO_GEORASTER, srs IN SDO_GEOR_SRS);
説明
GeoRasterオブジェクトの空間参照情報を設定します。または、srs
パラメータにNULLが指定された場合、既存の値を削除します。
パラメータ
- georaster
-
GeoRasterオブジェクトを指定します。
- srs
-
SDO_GEOR_SRS型のオブジェクトを指定します。SDO_GEOR_SRSオブジェクト型およびこのオブジェクト型のコンストラクタについては、「SDO_GEOR_SRSオブジェクト型」を参照してください。
このオブジェクトでは、
isReferenced
、isRectified
およびisOrthoRectified
は、TRUE
またはFALSE
に設定し(大文字/小文字は区別されません)、spatialResolution
は適切なサイズの配列にする必要があります。空間の許容差は負の値にはできません。CoordLocation
は0または1に設定する必要があります。多項式パラメータはNULLにはできません。
使用上のノート
このプロシージャを使用して、アフィン変換、DLT、RPCモデルなどの関数フィッティング地理参照モデルにGeoRaster SRSを設定できます。
ストアド・ファンクション(GCP)・モデルの場合のみ、このプロシージャを使用せず、かわりにSDO_GEOR.setGCPGeorefModelプロシージャを使用してストアド・ファンクション(GCP)・モデルを設定した方が有益である可能性があります。
処理の完了後、GeoRasterオブジェクトは自動的に検証されます。
GeoRasterオブジェクトのSDO_GEOR_SRS情報を戻すには、SDO_GEOR.getSRSファンクションを使用します。
例
次の例では、GeoRasterオブジェクトの空間参照属性を指定し、GeoRasterオブジェクトを更新します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。)ノートは、さらに詳細に操作を説明します。
最初の例は、GeoRasterオブジェクトにアフィン変換モデルを設定する方法を示しています。
DECLARE grobj sdo_georaster; srs sdo_geor_srs; BEGIN SELECT georaster INTO grobj FROM georaster_table WHERE georid=4; srs := sdo_geor_srs('TRUE', 'TRUE', null, 82262, sdo_number_array(28.5, 28.5),0.5,0, 0,0,0,0,0,1,1,1,1,1,0,0,0, SDO_NUMBER_ARRAY(1, 2, 1, 3, 32631.5614, 0, -.03508772), SDO_NUMBER_ARRAY(1, 0, 0, 1, 1), SDO_NUMBER_ARRAY(1, 2, 1, 3, -7894.7544, .03508772, 0), SDO_NUMBER_ARRAY(1, 0, 0, 1, 1)); sdo_geor.setSRS(grobj, srs); UPDATE georaster_table SET georaster = grobj WHERE georid=4; COMMIT; END; /
前述の例では、GeoRasterオブジェクトに次のアフィン変換が設定されています。
row = 32631.5614 + 0 * x + (-0.03508772) * y col = -7894.7544 + 0.03508772 * x + 0 * y
汎用関数フィッティング地理参照モデル(「関数フィッティング地理参照モデル」を参照)を使用する場合は、SRS属性の値は次のようになります。
xOff=yOff=zOff=0 rowOff=columnOff=0 xScale=yScale=zScale=1 rowScale=columnScale=1 polynomial p : pType=1, nVars=2, order=1, nCoefficients= 3 polynomial q : pType=1, nVars=0, order=0, nCoefficients= 1 polynomial r : pType=1, nVars=2, order=1, nCoefficients= 3 polynomial s : pType=1, nVars=0, order=0, nCoefficients= 1 rowNumerator = 32631.5614, 0, -0.03508772 rowDenominator = 1 columnNumerator = -7894.7544, 0.03508772, 0 columnDenominator = 1
SRS構造では、rowNumerator
、rowDenominator
、columnNumerator
およびcolumnDenominator
要素を使用してpType
、nVars
、order
およびnCoefficients
を指定し、残りの要素を使用して各多項式の係数を指定します。
2つ目の例は、GeoRasterオブジェクトにDLTモデルを設定する方法を示しています。一般的な写真測量アプリケーションでは、標定情報付きデジタル航空写真の内部標定パラメータおよび外部標定パラメータを使用して、DLTモデル(精密なモデルの簡略化および近似値化に広く使用されるモデル)を導出できます。次の例は、標準のフレーム・カメラ・モデルから導出されたDLTモデルの例です。
row = (-46507111.2127784 + 65.81484127*X + 13.13186856*Y - 49.62133265*Z) / (-41.47013322 + 0.00004128*X + 0.00009740*Y - 0.00655704*Z) col = (-5259855.00453679 - 12.07452653*X + 66.23319061*Y - 49.45792766*Z) / (-41.47013322 + 0.00004128*X + 0.00009740*Y - 0.00655704*Z)
この例の場合、対応するGeoRasterのSRSパラメータおよび係数は、次のとおりです。
rowOff=0, colOff=0; rowScale = colScale = 1; xOff = 0, yOff = 0, zOff = 0; xScale = yScale = zScale =1; polynomial p : pType=1, nVars=3, order=1, nCoefficients= 4 polynomial q : pType=1, nVars=3, order=1, nCoefficients= 4 polynomial r : pType=1, nVars=3, order=1, nCoefficients= 4 polynomial s : pType=1, nVars=3, order=1, nCoefficients= 4 rowNumerator = -5259855.00453679, -12.07452653, 66.23319061, -49.45792766 rowDenominator = -41.47013322, 0.00004128, 0.00009740, -0.00655704 columnNumerator = -46507111.2127784, 65.81484127, 13.13186856, -49.62133265 columnDenominator = -41.47013322, 0.00004128, 0.00009740, -0.00655704
次の例では、GeoRasterオブジェクトのDLTモデルを設定します。ここではSDO_GEOR_SRSコンストラクタを使用してSDO_GEOR_SRS型のインスタンスを作成し、適切な属性を設定します。
DECLARE grobj sdo_georaster; srs sdo_geor_srs; BEGIN SELECT georaster INTO grobj FROM georaster_table WHERE georid = 101; -- Initiate the SRS object. srs:=sdo_geor_srs(); -- Fill the parameters of the SRS object. srs.isReferenced := 'TRUE'; srs.isRectified := 'FALSE'; srs.isOrthoRectified := 'FALSE'; srs.srid := 7406; srs.spatialResolution := sdo_number_array(0.07, 0.07); srs.coordLocation := 1; srs.rowOff := 0; srs.columnOff := 0; srs.xOff := 0; srs.yOff := 0; srs.zOff := 0; srs.rowScale := 1; srs.columnScale := 1; srs.xScale := 1; srs.yScale := 1; srs.zScale := 1; srs.rowNumerator := SDO_NUMBER_ARRAY(1, 3, 1, 4, -5259855.00453679, -12.07452653,66.23319061,-49.45792766); srs.rowDenominator := SDO_NUMBER_ARRAY(1, 3, 1, 4, -41.4701332195, 0.0000412763, 0.0000974018, -0.0065570398); srs.columnNumerator := SDO_NUMBER_ARRAY(1, 3, 1, 4, -46507111.2127784, 65.81484127, 13.13186856, -49.62133265); srs.columnDenominator := SDO_NUMBER_ARRAY(1, 3, 1, 4, -41.4701332195, 0.0000412763, 0.0000974018, -0.0065570398); -- Set the SRS metadata to the GeoRaster object. sdo_geor.setSRS(grobj,srs); UPDATE georaster_table SET georaster = grobj WHERE georid= 101; COMMIT; END; /
親トピック: SDO_GEORパッケージのリファレンス