如何編寫SQL查詢(使用Oracle Spatial)來查找多邊形(地理圍欄)內可用功能的數量;地理柵欄:使用oracle空間查找多邊形內的要素數量(點/線/多邊形)
特徵可以是點,線或多邊形本身。
謝謝。
如何編寫SQL查詢(使用Oracle Spatial)來查找多邊形(地理圍欄)內可用功能的數量;地理柵欄:使用oracle空間查找多邊形內的要素數量(點/線/多邊形)
特徵可以是點,線或多邊形本身。
謝謝。
嘗試這種說法:
select count(*) from geometry_table t where SDO_RELATE(t.geom_column, geofence, 'mask=INSIDE') = 'TRUE'
/
這是mandetory說的SDO_RELATE
第一個參數是有空間索引幾何列。
更新:完全不顧這個建議,阿爾伯特·戈德夫林德說,它正在重複已經在內部完成的工作。所以它效率低,速度慢:
要添加到蒂姆答案,最好是結合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'
的問候,克里斯
對不起,但這是*完全錯誤*。做你的建議只會讓查詢運行速度變慢。 SDO_RELATE運算符自動應用「主要過濾器」(即等效於SDO_FILTER運算符)。 – 2014-05-16 17:45:22
哎呀,我還不知道,它一直是這樣嗎?在這種情況下,我很抱歉,我會編輯我的評論,以免沒有人使用我的低效查詢。 – cmenke 2014-09-02 14:41:36
感謝蒂姆響應。我已經停工了很長一段時間,無法回答你的回答。這完美地執行。 – Abdul 2011-01-12 06:36:31
您可以使用更簡單的語法:SDO_INSIDE(t.geom_column,geofence)='TRUE'。它具有完全相同的效果,但寫起來更簡單。 – 2014-05-16 17:46:40