• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答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
    主站蜘蛛池模板: 久久精品www人人爽人人| 亚洲国语精品自产拍在线观看| 91国在线啪精品一区| 精品伦精品一区二区三区视频| 国产精品久久久天天影视| 久久亚洲精品无码AV红樱桃| 无码AV动漫精品一区二区免费| 国产成人综合精品一区| 国产成人精品久久一区二区三区 | 亚洲日韩国产AV无码无码精品 | 一本之道av不卡精品| 国产精品亚洲美女久久久| 久久九九亚洲精品| 国产精品999| 99精品无人区乱码在线观看 | 久久国产亚洲精品无码| 亚洲精品人成无码中文毛片| 久久精品成人免费观看97| 国产99视频精品专区| 日韩精品一区二区三区大桥未久 | 精品视频一区二区三区四区五区| 91精品国产高清久久久久久国产嫩草| 国产成人精品高清在线观看99 | 欧美日韩精品在线| 狠狠色丁香婷婷综合精品视频| 精品久久久久久国产潘金莲| 精品日韩亚洲AV无码一区二区三区 | 国产精品 视频一区 二区三区| 精品国产乱码一区二区三区| 久久er99热精品一区二区| 亚洲精品无码MV在线观看 | 国产成人精品视频在放| 国产suv精品一区二区33| 久久发布国产伦子伦精品| 国内揄拍高清国内精品对白| 国产精品区一区二区三在线播放 | 精品久久久久久亚洲| 久久99国产精品二区不卡| 久久九九亚洲精品| 99亚洲精品视频| 精品人妻少妇一区二区三区在线|