0

(Oracle Spatialを使用して)SQLクエリを記述し、ポリゴン(ジオフェンス)内で使用可能なフィーチャの数を見つけるにはどうすればよいですか。

フィーチャは、ポイント、ライン、またはポリゴン自体のいずれかです。

ありがとう。

4

2 に答える 2

2

そのステートメントを試してください:

select count(*) from geometry_table t where SDO_RELATE(t.geom_column, geofence, 'mask=INSIDE') = 'TRUE'
/

の最初のパラメーターはSDO_RELATE、空間インデックスを持つジオメトリ列である必要があります。

于 2011-01-06T08:15:27.070 に答える
-1

更新:この提案を完全に無視して、Albert Godfrindは、すでに内部で行われていることを繰り返していると述べました。したがって、非効率的で低速です。

To add to Tims answer, it is good practice to combine SDO_FILTER and SDO_RELATE for performance reasons. SDO_FILTER is fast but returns too many geometries, it will give you all geometries whose minimum bounding rectangle (MBR) intersects with your fence's geometry. SDO_RELATE is exact but slow. So combine both:

select count(*) 
from geometry_table t 
where SDO_FILTER(t.geom_column, geofence) = 'TRUE' and SDO_RELATE(t.geom_column, geofence, 'mask=INSIDE') = 'TRUE' 

Regards, Chris

于 2012-01-13T16:16:42.153 に答える