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オブジェクト型」を参照してください。

このオブジェクトでは、isReferencedisRectifiedおよび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構造では、rowNumeratorrowDenominatorcolumnNumeratorおよびcolumnDenominator要素を使用してpTypenVarsorderおよび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;
/