ジオフェンス:機能(点/線/ポリゴン)の数を検索したOracle空間を使用してポリゴン内部

StackOverflow https://stackoverflow.com/questions/4611944

  •  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' 

よろしく、クリス

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top