成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

求圓半徑范圍內(nèi)所有的點(diǎn)

luodongseu / 1082人閱讀

摘要:在做和地圖有關(guān)的項(xiàng)目的時(shí)候,有時(shí)候會(huì)遇到這樣的需求,比如已知圓中心的經(jīng)緯度,手動(dòng)輸入它的半徑得到這個(gè)圓范圍內(nèi)所有的隨機(jī)點(diǎn)。求圓半徑內(nèi)點(diǎn)的代碼主要的業(yè)務(wù)是這句是緯度和米的比例關(guān)系是經(jīng)度和米的比例關(guān)系最后根據(jù)車牌號(hào)模塊查詢。

在做和地圖有關(guān)的項(xiàng)目的時(shí)候,有時(shí)候會(huì)遇到這樣的需求,比如:
已知圓中心的經(jīng)緯度(lng, lat),手動(dòng)輸入它的半徑radius,得到這個(gè)圓范圍內(nèi)所有的隨機(jī)點(diǎn)。

我用的是百度地圖js-sdk。
理論部分,喜歡看代碼可以直接跳過:

從上圖可以看出,圓1的經(jīng)緯度是(114.132384, 22.539816)用(x1, y1)表示,圓2的經(jīng)緯度是(114.131888, 22.533516)用(x2, y2)表示
我不可能用abs(x1 - x2) + abs(y1 - y2) <= radius這樣的邏輯去判斷圓1是否在以圓2為中心點(diǎn),radius為半徑的圓范圍內(nèi),因?yàn)檫@樣不是兩點(diǎn)之間的最佳路徑。(abs為取絕對(duì)值函數(shù))

我需要用到初中數(shù)學(xué)學(xué)到過的勾股定理知識(shí),用(abs(x1-x2))^2 + (abs(y1-y2))^2 <= radius^2來獲得兩點(diǎn)之間最短路徑,也就是把這個(gè)想象成一個(gè)直角三角形,求它的斜邊。

我通過js將原點(diǎn)的經(jīng)緯度和半徑傳到后臺(tái),后臺(tái)用java,用的是mybatis框架,數(shù)據(jù)庫(kù)用的Oracle。
js和java就是簡(jiǎn)單的數(shù)據(jù)傳輸,可以省略,業(yè)務(wù)邏輯主要在sql部分:

表結(jié)構(gòu):車牌號(hào),緯度,經(jīng)度,時(shí)間。
先根據(jù)相同車牌號(hào)用GROUP BY去重,取最大時(shí)間的一條數(shù)據(jù)。

求圓半徑內(nèi)點(diǎn)的sql代碼:

SELECT G1.*
FROM ${tableName} G1, (
    SELECT MIN(UUID) AS UUID, MAX(LOCATIONTIME)
    FROM ${tableName}
    GROUP BY VEHICLENO
) G2
WHERE G1.UUID = G2.UUID
    AND POWER(ABS((G1.LAT / 0.00000899 - #{lat} / 0.00000899)), 2) + POWER(ABS((G1.LON / 0.00001141 - #{lon} / 0.00001141)), 2)  POWER(#{radius}, 2)
    AND VEHICLENO LIKE CONCAT(#{chepaihao}, "%")

主要的業(yè)務(wù)是這句:

POWER(ABS((G1.LAT / 0.00000899 - #{lat} / 0.00000899)), 2) + POWER(ABS((G1.LON / 0.00001141 - #{lon} / 0.00001141)), 2)  POWER(#{radius}, 2)

0.00000899是緯度和米的比例關(guān)系: 1m = 0.00000899°
0.00001141是經(jīng)度和米的比例關(guān)系: 1m = 0.00001141°

最后根據(jù)車牌號(hào)模塊查詢。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/76078.html

相關(guān)文章

  • 求圓半徑范圍內(nèi)所有的點(diǎn)

    摘要:在做和地圖有關(guān)的項(xiàng)目的時(shí)候,有時(shí)候會(huì)遇到這樣的需求,比如已知圓中心的經(jīng)緯度,手動(dòng)輸入它的半徑得到這個(gè)圓范圍內(nèi)所有的隨機(jī)點(diǎn)。求圓半徑內(nèi)點(diǎn)的代碼主要的業(yè)務(wù)是這句是緯度和米的比例關(guān)系是經(jīng)度和米的比例關(guān)系最后根據(jù)車牌號(hào)模塊查詢。 在做和地圖有關(guān)的項(xiàng)目的時(shí)候,有時(shí)候會(huì)遇到這樣的需求,比如:已知圓中心的經(jīng)緯度(lng, lat),手動(dòng)輸入它的半徑radius,得到這個(gè)圓范圍內(nèi)所有的隨機(jī)點(diǎn)。 我用的...

    chuyao 評(píng)論0 收藏0
  • canvas實(shí)現(xiàn) 漂亮的下雨效果

    摘要:說明這篇文章說如何用畫出漂亮的下雨效果,先看看最后實(shí)現(xiàn)的效果吧。 說明 這篇文章說如何用canvas畫出漂亮的下雨效果,先看看最后實(shí)現(xiàn)的效果吧。 效果圖showImg(https://segmentfault.com/img/bV8ITm?w=936&h=532); 解釋 看圖來分析下,我們需要實(shí)現(xiàn)哪些效果。1、雨滴下落效果,移動(dòng)鼠標(biāo)控制下落方向 2、雨滴下落散成小水珠,小水珠的移動(dòng)...

    Jonathan Shieber 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<