ジオフェンス:機能(点/線/ポリゴン)の数を検索したOracle空間を使用してポリゴン内部
-
26-09-2019 - |
質問
私はポリゴン(ジオフェンス)内部で利用可能な機能の数を見つけるために、(Oracle Spatialのを使用して)SQLクエリを書くにはどうすればよい;
の機能は点、線又はポリゴン自体のいずれかであり得ます。
感謝します。
解決
その文を試してみてください。
select count(*) from geometry_table t where SDO_RELATE(t.geom_column, geofence, 'mask=INSIDE') = 'TRUE'
/
これはSDO_RELATE
の最初のパラメータは、空間インデックスを持つジオメトリ列であることmandetoryである。
他のヒント
の のアップデート:完全にこの提案を無視し、アルバートGodfrindは、すでに内部的に行われているもの繰り返していると述べました。それは非効率的と遅いので:のの
TIMSの答えに追加するには、パフォーマンス上の理由からSDO_FILTERやSDO_RELATEを結合することをお勧めします。 SDO_FILTERは高速ですが、リターンはあまりにも多くの幾何学的形状は、それはあなたのその最小あなたのフェンスの形状を持つ矩形(MBR)が交差する境界すべてのジオメトリを与えるだろう。 SDO_RELATEは正確なが、遅いです。 だから、両方を組み合わせます:
select count(*)
from geometry_table t
where SDO_FILTER(t.geom_column, geofence) = 'TRUE' and SDO_RELATE(t.geom_column, geofence, 'mask=INSIDE') = 'TRUE'
よろしく、クリス
所属していません StackOverflow