SDO_WITHIN_DISTANCE演算子は、指定されたオブジェクトから指定された距離内に存在する一連の空間オブジェクトを識別します。距離には、近似値または正確な値を指定できます。querytype=FILTER
を指定すると、1次フィルタ処理のみが実行されるため、距離は近似値になります。指定しない場合は、1次と2次の両方のフィルタ処理が実行されるため、距離は正確な値になります。
例C-1 高速道路から一定距離内に存在するすべての都市の検索
例C-1では、州間高速道路I170から15マイル以内に存在するすべての都市を検索します。
SELECT /*+ ORDERED */ c.city FROM geod_interstates i, geod_cities c WHERE i.highway = 'I170' AND sdo_within_distance ( c.location, i.geom, 'distance=15 unit=mile') = 'TRUE';
例C-1では、指定した高速道路(i.highway = 'I170'
)から15マイル以内('distance=15 unit=mile'
)に存在するすべての都市を検索します。デフォルトでは、結果は正確な値となります(querytype
パラメータを使用せず、問合せを1次フィルタ処理に制限しなかったため)。この例のWHERE
句の内容は次のとおりです。
i.highway
はINTERSTATES表のHIGHWAY列で、I170
はHIGHWAY列の値です。
c.location
では、検索列(geometry1
)を指定します。これは、GEOD_CITIES表のLOCATION列です。
i.geom
では、問合せウィンドウ(aGeom
)を指定します。これは、GEOD_INTERSTATES表の、HIGHWAY列に値I170
が含まれている行のGEOM列にある空間ジオメトリです。
例C-2 都市から一定距離内に存在するすべての高速道路の検索
例C-2では、Tampa市から15マイル以内に存在するすべての州間高速道路を検索します。
SELECT /*+ ORDERED */ i.highway FROM geod_cities c, geod_interstates i WHERE c.city = 'Tampa' AND sdo_within_distance ( i.geom, c.location, 'distance=15 unit=mile') = 'TRUE';
例C-2では、指定した都市(c.city = 'Tampa'
)から15マイル以内('distance=15 unit=mile'
)に存在するすべての高速道路を検索します。デフォルトでは、結果は正確な値となります(querytype
パラメータを使用せず、問合せを1次フィルタ処理に制限しなかったため)。この例のWHERE
句の内容は次のとおりです。
c.city
はGEOD_CITIES表のCITY列で、Tampa
はCITY列の値です。
i.geom
では、検索列(geometry1
)を指定します。これは、GEOD_INTERSTATES表のGEOM列です。
c.location
では、問合せウィンドウ(aGeom
)を指定します。これは、GEOD_CITIES表の、CITY列に値Tampa
が含まれている行のLOCATION列にある空間ジオメトリです。