(Oracle Spatialを使用して)SQLクエリを記述し、ポリゴン(ジオフェンス)内で使用可能なフィーチャの数を見つけるにはどうすればよいですか。
フィーチャは、ポイント、ライン、またはポリゴン自体のいずれかです。
ありがとう。
(Oracle Spatialを使用して)SQLクエリを記述し、ポリゴン(ジオフェンス)内で使用可能なフィーチャの数を見つけるにはどうすればよいですか。
フィーチャは、ポイント、ライン、またはポリゴン自体のいずれかです。
ありがとう。
そのステートメントを試してください:
select count(*) from geometry_table t where SDO_RELATE(t.geom_column, geofence, 'mask=INSIDE') = 'TRUE'
/
の最初のパラメーターはSDO_RELATE
、空間インデックスを持つジオメトリ列である必要があります。
更新:この提案を完全に無視して、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