日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle近似查找,距离内的Oracle空间搜索

發布時間:2024/7/23 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle近似查找,距离内的Oracle空间搜索 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對于mySQL距離搜索,你有很好的參考.

忘記Oracle Spatial的東西.代碼太多,復雜性太大,沒有足夠的增值.

這是一個可以解決問題的查詢.這使用法定里程的距離.編輯這修復了mdarwin提到的錯誤,如果你試圖將它用于北極或南極的位置,則以劃分檢查為代價.

SELECT id, city, LATITUDE, LONGITUDE, distance

FROM

(

SELECT id,

city,

LATITUDE, LONGITUDE,

(3959 * ACOS(COS(RADIANS(LATITUDE))

* COS(RADIANS(mylat))

* COS(RADIANS(LONGITUDE) - RADIANS(mylng))

+ SIN(RADIANS(LATITUDE))

* SIN(RADIANS(mylat))

))

AS distance,

b.mydst

FROM Cities

JOIN (

SELECT :LAT AS mylat,

:LONG AS mylng,

:RADIUS_LIMIT AS mydst

FROM DUAL

)b ON (1 = 1)

WHERE LATITUDE >= mylat -(mydst/69)

AND LATITUDE <= mylat +(mydst/69)

AND LONGITUDE >= mylng -(mydst/(69 * COS(RADIANS(mylat))))

AND LONGITUDE <= mylng +(mydst/(69 * COS(RADIANS(mylat))))

)a

WHERE distance <= mydst

ORDER BY distance

如果您以公里為單位工作,請將mydst / 69更改為mydst / 111.045,并將3959更改為6371.4. (1/69將英里轉換為度數; 3959是行星半徑的值.)

現在,您可能會想要將這個大型查詢用作“魔術黑盒子”.不要這樣做!這不是很難理解,如果你理解它,你將能夠做得更好.這是正在發生的事情.

該子句是使查詢快速運行的核心.它會在您的Cities表中搜索您指定的點附近的城市.

WHERE LATITUDE >= mylat -(mydst/69)

AND LATITUDE <= mylat +(mydst/69)

AND LONGITUDE >= mylng -(mydst/(69 * COS(RADIANS(mylat))))

AND LONGITUDE <= mylng +(mydst/(69 * COS(RADIANS(mylat))))

要使它工作,你肯定需要一個LATITUDE列的索引. LONGITUDE列上的索引也會有所幫助.它進行近似搜索,尋找在您的點附近的地球表面上的準矩形塊內的??行.它選擇了太多的城市,但不是太多.

此子句允許您從結果集中刪除額外的城市:

WHERE distance <= mydst

該子句是用于計算每個城市與您的觀點之間的大圓距離的半正公式.

(3959 * ACOS(COS(RADIANS(LATITUDE))

* COS(RADIANS(mylat))

* COS(RADIANS(LONGITUDE) - RADIANS(mylng))

+ SIN(RADIANS(LATITUDE))

* SIN(RADIANS(mylat))

此子句允許您輸入您的點和半徑限制,只需輸入一次作為查詢的綁定變量.它很有用,因為各種公式多次使用這些變量.

SELECT :LAT AS mylat,

:LONG AS mylng,

:RADIUS_LIMIT AS mydst

FROM DUAL

查詢的其余部分只是組織事物,以便您按距離選擇和排序.

總結

以上是生活随笔為你收集整理的oracle近似查找,距离内的Oracle空间搜索的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。