12.4 SDO_GEOR_RA.isOverlap
形式
SDO_GEOR.isOverlap( georaster1 IN SDO_GEORASTER, georaster2 IN SDO_GEORASTER, tolerance IN NUMBER DEFAULT 0.5 ) RETURN VARCHAR2;
または
SDO_GEOR_RA.isOverlap( georArray IN SDO_GEORASTER_ARRAY, tolerance IN NUMBER DEFAULT 0.5 ) RETURN VARCHAR2;
または
SDO_GEOR_RA.isOverlap( geor_cur IN SYS_REFCURSOR, tolerance IN NUMBER DEFAULT 0.5 ) RETURN VARCHAR2;
説明
文字列TRUE
(2つ以上のGeoRasterオブジェクトが重複している場合)またはFALSE
(2つ以上のGeoRasterオブジェクトが重複していない場合)を戻します。(地理参照の有無にかかわらず、2つのGeoRasterオブジェクトの重複を決定するために使用されるロジックについては、「使用上のノート」を参照してください。)
パラメータ
- georaster1
-
GeoRasterオブジェクトを指定します。
- georaster2
-
GeoRasterオブジェクトを指定します。
- georArray
-
GeoRasterオブジェクトの配列を指定します。データ型はSDO_GEOR_ARRAYで、
VARRAY(10485760) OF SDO_GEORASTER
として定義されます。 - geor_cur
-
入力GeoRasterオブジェクトのカーソル(SYS_REFCURSOR型)を指定します。
- tolerance
-
セル空間の2つのセルがモデル空間で重複しているかどうかを決定するために使用される許容差の値を指定します。値は、0から1の間である必要があり、単位はセルです。たとえば、0.5 (デフォルト)では、セルの半分、つまり、2つのセル間の距離が0.5セル以下の場合にそれらのセルが重複していることになります。
使用上のノート
重複で比較されるGeoRasterオブジェクトは、すべて地理参照されているか、すべて地理参照されていない必要があります。
2つのGeoRasterオブジェクトが重複しているかどうかを決定するため、次のロジックが適用されます。
-
2つのGeoRasterオブジェクトの行または列の次元サイズが異なる場合、
'FALSE'
を戻します。それ以外の場合は、次のステップに進みます。 -
両方のGeoRasterオブジェクトが地理参照されているかどうかをチェックします。
-
一方が地理参照され、他方が地理参照されていない場合、
'FALSE'
を戻します。 -
両方とも地理参照されておらず、両方のGeoRasterオブジェクトの
ultCoordinate
が同じである場合、'TRUE'
を戻しますが、それ以外の場合、'FALSE'
を戻します。 -
両方とも地理参照されている場合、次のステップに進みます。
-
-
p
、q
、r
およびs
多項式のpType
、nVars
、order
およびnCoefficients
の値(「関数フィッティング地理参照モデル」を参照)をチェックします。いずれかが異なる場合、'FALSE'を戻しますが、それ以外の場合、次のステップに進みます。 -
セル空間からモデル空間に対して左上、右上、左下および右下の4つの点を計算します。2つのGeoRasterオブジェクトの対応する点の距離が許容差内である場合(セル空間からモデル空間への変換)、
'TRUE'
を戻しますが、それ以外の場合、'FALSE'
を戻します。
GeoRasterのラスター代数ファンクションでは、異なるGeoRasterオブジェクトのラスター・レイヤーが同じサイズで、相互に完全に重複している必要があります。2つ以上のGeoRasterオブジェクトにラスター代数操作を適用するか、他の操作を実行する前に、SDO_GEOR_RA.isOverlapファンクションを使用して、GeoRasterオブジェクトが同じサイズであり、同じ土地を対象範囲としているかどうかを判別できます。
例
次の例では、2つのGeoRasterオブジェクトが重複しているかどうかをチェックします。(ここでは、2つの異なる構文のファンクションを使用しています。)
DECLARE geor SDO_GEORASTER; geor1 SDO_GEORASTER; BEGIN SELECT georaster INTO geor FROM georaster_table WHERE georid = 1; SELECT georaster INTO geor1 FROM georaster_table WHERE georid = 30; dbms_output.put_line(sdo_geor_ra.isOverlap(geor,geor1,0.5)); END; / DECLARE mycursor sys_refcursor; BEGIN OPEN mycursor FOR SELECT georaster FROM georaster_table WHERE georid = 1 or georid=30; dbms_output.put_line(sdo_geor_ra.isOverlap(mycursor,0.5)); END; /
親トピック: SDO_GEOR_RAパッケージのリファレンス