天堂国产午夜亚洲专区-少妇人妻综合久久蜜臀-国产成人户外露出视频在线-国产91传媒一区二区三区

當(dāng)前位置:主頁 > 論文百科 > 教案模板 >

MySQL空間數(shù)據(jù)庫–查詢點到多點間的最短路徑

發(fā)布時間:2017-03-27 13:16

  本文關(guān)鍵詞:空間參考系,由筆耕文化傳播整理發(fā)布。


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

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

攻城師們,你有沒有想過這些應(yīng)用背后的技術(shù)實現(xiàn)呢?手機端獲得當(dāng)前的坐標(biāo)后是怎么進行計算和查詢返回附件的結(jié)果呢?

用Java程序可以實現(xiàn)Dijkstra算法獲得點與多點之間最短路徑的計算結(jié)果,但是我個人認(rèn)為是一種暴力的方法,開發(fā)的簡化程度和計算的執(zhí)行效率不會非常高。
參考資料:

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

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

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

MySQL空間數(shù)據(jù)庫–查詢點到多點間的最短路徑

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

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

再把要找到最近門店可以縮小搜索范圍 設(shè)半徑,添加搜索條件
例: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;

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

MySQL空間數(shù)據(jù)庫–查詢點到多點間的最短路徑


即兩點間的直線距離。
比如說現(xiàn)在有兩個點坐標(biāo)A(x1,y1),B(x2,y2) 要求線段AB長度 就是用

MySQL空間數(shù)據(jù)庫–查詢點到多點間的最短路徑

這個公式去計算。把A看成當(dāng)前位置B看成一個門店,不就是相當(dāng)于計算當(dāng)前位置到門店這兩個點的距離嗎。坐標(biāo)點有了帶進去就行,等于現(xiàn)在只要能用函數(shù)把這個公式表示出來就可以了。
所以用到這三個函數(shù):
SQRT(x):表示求一個數(shù)x的平方根。就相當(dāng)于那個根號!蘹
POW(x,y):包含兩個參數(shù)表示求x的y次冪
例如pow(2,3)就表示23,那么POW((X1-X2),2)就相當(dāng)于〖(x1-x2)〗^2
ABS(x):表示求數(shù)X的絕對值。|x|  ABS(x1-x2)就等于|x1-x2|.

根據(jù)那個公式組合起來就行了
整個SQRT(POW( ABS( X(Location) – X(@center)), 2) + POW(ABS(Y(Location) – Y(@center)), 2))這句話就是用來表示這個公式的

MySQL空間數(shù)據(jù)庫–查詢點到多點間的最短路徑

,
這個公式計算得出來的值就是兩點間的直線距離。

參考資料:

口水:
 以上部分內(nèi)容來自 NJ-AMT 實習(xí)生余珊的分析報告。

–end–



  本文關(guān)鍵詞:空間參考系,由筆耕文化傳播整理發(fā)布。



本文編號:270476

資料下載
論文發(fā)表

本文鏈接:http://sikaile.net/wenshubaike/jajx/270476.html


Copyright(c)文論論文網(wǎng)All Rights Reserved | 網(wǎng)站地圖 |

版權(quán)申明:資料由用戶ea5af***提供,本站僅收錄摘要或目錄,作者需要刪除請E-mail郵箱bigeng88@qq.com
日韩欧美亚洲综合在线| 男女午夜视频在线观看免费| 国产又粗又猛又爽色噜噜| 色婷婷视频免费在线观看| 亚洲第一区欧美日韩在线| 久久精品久久精品中文字幕| 日韩中文高清在线专区| 免费啪视频免费欧美亚洲| 国产又色又粗又黄又爽| 伊人色综合久久伊人婷婷| 日本午夜免费啪视频在线 | 精品人妻久久一品二品三品| 一区二区三区日本高清| 黄片在线免费看日韩欧美| 插进她的身体里在线观看骚| 国产色偷丝袜麻豆亚洲| 国产在线一区二区三区不卡| 久久91精品国产亚洲| 欧美一区二区三区性视频 | 东京热男人的天堂一二三区| 国产精品丝袜美腿一区二区| 精品老司机视频在线观看| 国产成人午夜在线视频| 国产二级一级内射视频播放| 色偷偷偷拍视频在线观看| 国产亚洲午夜高清国产拍精品| 高清欧美大片免费在线观看| 青青操精品视频在线观看| 老司机精品视频在线免费| 好东西一起分享老鸭窝| 精品人妻一区二区四区| 亚洲一区二区精品久久av| 欧美日韩国产午夜福利| 色婷婷视频在线精品免费观看 | 老外那个很粗大做起来很爽| 免费精品国产日韩热久久| 欧美精品日韩精品一区| 伊人久久五月天综合网| 国产一区一一一区麻豆| 久久精品亚洲欧美日韩| 在线免费看国产精品黄片|