<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        MySQL空間數據庫–查詢點到多點間的最短路徑

        來源:懂視網 責編:小采 時間:2020-11-09 15:35:39
        文檔

        MySQL空間數據庫–查詢點到多點間的最短路徑

        MySQL空間數據庫–查詢點到多點間的最短路徑:當SNS產品加入LBS的技術將會讓移動互聯網領域更加豐富多彩,例如:大眾點評,街旁,盛大切客 這些運行在智能手機端的應用,當用戶拿出手機就可以根據你當前的所在地向你推薦一些有用的信息,例如:附近的美食,商鋪,周邊生活信息,等。 攻城師們,你有沒有
        推薦度:
        導讀MySQL空間數據庫–查詢點到多點間的最短路徑:當SNS產品加入LBS的技術將會讓移動互聯網領域更加豐富多彩,例如:大眾點評,街旁,盛大切客 這些運行在智能手機端的應用,當用戶拿出手機就可以根據你當前的所在地向你推薦一些有用的信息,例如:附近的美食,商鋪,周邊生活信息,等。 攻城師們,你有沒有

        當SNS產品加入LBS的技術將會讓移動互聯網領域更加豐富多彩,例如:大眾點評,街旁,盛大切客 這些運行在智能手機端的應用,當用戶拿出手機就可以根據你當前的所在地向你推薦一些有用的信息,例如:附近的美食,商鋪,周邊生活信息,等。 攻城師們,你有沒有

        當SNS產品加入LBS的技術將會讓移動互聯網領域更加豐富多彩,例如:大眾點評,街旁,盛大切客 這些運行在智能手機端的應用,當用戶拿出手機就可以根據你當前的所在地向你推薦一些有用的信息,例如:附近的美食,商鋪,周邊生活信息,等。

        攻城師們,你有沒有想過這些應用背后的技術實現呢?手機端獲得當前的坐標后是怎么進行計算和查詢返回附件的結果呢?

        用Java程序可以實現Dijkstra算法獲得點與多點之間最短路徑的計算結果,但是我個人認為是一種暴力的方法,開發的簡化程度和計算的執行效率不會非常高。
        參考資料:http://baike.baidu.com/view/7839.htm

        接著再往下想,用到數據庫技術是必然,但不會把節點的坐標信息存儲到數據庫普通的字段中進行查詢,如果和Dijkstra算法相比不會簡化工作量也不會提高性能,但使用到MySQL中空間數據庫的概念就會簡化很多也會得到性能的提升,開源的MySQL Spatial空間索引機制就可以對點到多點之間的距離計算,類似的Spatial Database還有,PostGIS,SpatiaLite。

        我的廢話:
        在android手機上獲得當前坐標后,將數據整好錄入android中的SQLite數據庫也可以獲得當前點對多點的最短路徑,也就是說在地理數據不會更新的場景下完全可以采用android手機上的數據庫完成這項工作,沒有必要非要利用服務器端的Spatial Database完成最短路徑的計算。

        MySQL空間數據幾種主要類型:
        – GEOMETRY Geometry是層次結構的根類。它是一種非實例化類,但具有很多屬性,這些屬性對由任何Geometry子類創建的所有幾何值來說是共同的。
        – POINT 代表坐標空間中單個位置的幾何類,他的屬性包含 X-坐標值,Y-坐標值。
        – LINESTRING 具有線段的坐標,由每個連續的點對(兩點)定義。如果僅包含兩點,LineString為Line。 如果它既是簡單的也是封閉的,LineString為LinearRing。
        – POLYGON 它由單個外部邊界以及0或多個內部邊界定義,其中,每個內部邊界定義為Polygon中的1個孔。例如:在地區地圖上,Polygon對象可表示森林。
        – MULTIPOINT MultiPoint是一種由Point元素構成的幾何對象集合。這些點未以任何方式連接或排序。
        – MULTILINESTRING MultiLineString是一種由 LineString元素構成的MultiCurve幾何對象集合,例如:河流體系或高速路系統。
        – MULTIPOLYGON MultiPolygon是一種由Polygon元素構成的幾何對象集合。在地區地圖上,MultiPolygon可表示湖泊系統。
        – GEOMETRYCOLLECTION 他是由1個或多個任意類幾何對象構成的幾何對象。GeometryCollection中的所有元素必須具有相同的空間參考系(即相同的坐標系).
        以上幾種的類型依賴關系,如圖所示:

        了解過上述一些基本知識,下面來創建一張商戶表,并且包含定義的空間數據庫的POINT字段:
        Create table shop (
        shop_id int(3) primary key,
        Location POINT,
        Shop_na vachar(100),
        Shop_info vachar(300)
        );

        插入幾條商家的門店信息,其中采用GeomFromText方法將坐標的數據庫插入POINT字段中,例如:
        insert into shop values (‘XXX’,’,GeomFromText(‘POINT(1 1)’),’XX店’,’ '其他信息');
        下面將根據客戶當前所在位置在MySQL中查詢,搜索出在當前位置附近的一定范圍內的門店,并且可以做到按距離由近到遠排列顯示出來,從讓用戶而找到離他最近的門店。
        把客戶當前所在位置可設成變量 ,例如:set @center=GeomFromText(‘POINT(10 10)’);

        再把要找到最近門店可以縮小搜索范圍 設半徑,添加搜索條件
        例:set @radius=30;
        WHERE SQRT(POW( ABS( X(location) – X(@center)), 2) + POW( ABS(Y(location) – Y(@center)), 2 )) < @radius

        最近門店搜索,完整的SQL示例:
        SELECT shop_id,shop_na, SQRT(POW( ABS( X(Location) – X(@center)), 2) + POW(ABS(Y(Location) – Y(@center)), 2 )) AS distance
        FROM shop WHERE SQRT(POW( ABS( X(location) – X(@center)), 2) + POW( ABS(Y(location) – Y(@center)), 2 )) < @radius
        order by distance;

        其中涉及的數學函數SQRT(x):表示求一個數x的平方根。POW(x,y):包含兩個參數表示求x的y次冪。ABS(x):表示求數X的絕對值。整個SQRT(POW( ABS( X(Location) – X(@center)), 2) + POW(ABS(Y(Location) – Y(@center)), 2 ))這個SQL語句實現的是一個算術表達式

        即兩點間的直線距離。
        比如說現在有兩個點坐標A(x1,y1),B(x2,y2) 要求線段AB長度 就是用這個公式去計算。把A看成當前位置B看成一個門店,不就是相當于計算當前位置到門店這兩個點的距離嗎。坐標點有了帶進去就行,等于現在只要能用函數把這個公式表示出來就可以了。
        所以用到這三個函數:
        SQRT(x):表示求一個數x的平方根。就相當于那個根號。√x
        POW(x,y):包含兩個參數表示求x的y次冪
        例如pow(2,3)就表示23,那么POW((X1-X2),2)就相當于〖(x1-x2)〗^2
        ABS(x):表示求數X的絕對值。|x| ABS(x1-x2)就等于|x1-x2|.

        根據那個公式組合起來就行了
        整個SQRT(POW( ABS( X(Location) – X(@center)), 2) + POW(ABS(Y(Location) – Y(@center)), 2))這句話就是用來表示這個公式的
        ,
        這個公式計算得出來的值就是兩點間的直線距離。

        參考資料:
        http://dev.mysql.com/doc/refman/5.1/zh/spatial-extensions-in-mysql.html
        http://en.wikipedia.org/wiki/Spatial_database

        口水:
        以上部分內容來自 NJ-AMT 實習生余珊的分析報告。

        –end–

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        MySQL空間數據庫–查詢點到多點間的最短路徑

        MySQL空間數據庫–查詢點到多點間的最短路徑:當SNS產品加入LBS的技術將會讓移動互聯網領域更加豐富多彩,例如:大眾點評,街旁,盛大切客 這些運行在智能手機端的應用,當用戶拿出手機就可以根據你當前的所在地向你推薦一些有用的信息,例如:附近的美食,商鋪,周邊生活信息,等。 攻城師們,你有沒有
        推薦度:
        標簽: 空間 查詢 數據
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 日韩精品成人亚洲专区| 免费国产黄线在线观看| 亚洲一区二区三区播放在线| 你好老叔电影观看免费| 国产亚洲大尺度无码无码专线| 亚洲AV无码乱码国产麻豆| 亚洲国产精品99久久久久久| 好吊妞在线新免费视频| 久久久影院亚洲精品| 美女视频黄频a免费| 亚洲熟女乱综合一区二区| av电影在线免费看| 国产精品亚洲片在线| 亚洲美女免费视频| 久久精品国产亚洲一区二区| 午夜免费啪视频在线观看| 78成人精品电影在线播放日韩精品电影一区亚洲 | 久久久久久成人毛片免费看| 久久精品九九亚洲精品| 国拍在线精品视频免费观看| 亚洲国产精品无码久久久秋霞1 | 亚洲av无码一区二区三区天堂| 97在线视频免费| 77777午夜亚洲| 免费又黄又爽的视频| 免费看成人AA片无码视频吃奶| 中文字幕亚洲综合久久2| 在线观看免费高清视频| 爱情岛论坛免费视频| 久久九九亚洲精品| 中文字幕人成无码免费视频| 在线观看亚洲精品专区| 免费看大黄高清网站视频在线| 一级毛片免费不卡| 亚洲乱亚洲乱少妇无码| 特黄特色大片免费| 亚洲AV无码日韩AV无码导航| 噼里啪啦电影在线观看免费高清| 无码人妻一区二区三区免费视频| 久久99国产亚洲精品观看| 成人免费无码大片a毛片软件|