Re: [MySQL ] 所在位置

看板Database作者 (肯先生)時間14年前 (2009/10/15 03:28), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/4 (看更多)
版本是 Server version: 5.1.36-log MySQL Community Server (GPL) CREATE TABLE `UserLocation` ( `ID` int(20) NOT NULL DEFAULT '0', `location` point NOT NULL, PRIMARY KEY (`ID`), SPATIAL KEY `location` (`location`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 location 那個欄位就可以存入使用者的經緯度了。 INSERT INTO `UserLocation` SET `ID`=123,`location`=GeomFromText('POINT($lng $lat)') mysql> SELECT X(location),Y(location) FROM UserLocation LIMIT 1; +---------------+--------------+ | X(location) | Y(location) | +---------------+--------------+ | 121.698457484 | 25.091923619 | +---------------+--------------+ 1 row in set (0.00 sec) 然後你要列出在某個區域裡面的人.. SELECT ID FROM UserLocation JOIN Area WHERE MBRContains(Area.polygon,location) (這行沒測過, 只拿我目前在用的改一改) 記得,要對地理位置設定索引的話,是 "SPATIAL KEY",不能用 phpmyadmin,加了索引 速度,當然就快很多了! 但是要怎麼把「松山區」放到資料庫裡面,這個我就不知道了....我只會放過四角形。 ※ 引述《evilkids (背著蒙古包睡你家)》之銘言: : 假設現在小明在台北市松山區 : 有GPS手機可以定位 : 他的經緯度座標上傳到server : 我要如何藉由經緯度 : 就知道他在台北市松山區?? : 現在MySQL有支援這種空間的計算嗎? : 現在想法是 : 我把每個區域的邊界座標找出來 (每個區域等於一個多邊形) : 座標資訊先存在資料庫裡 : 然後藉由比對小明的經緯度 : 去判斷他在哪一區 : 可是這樣要一個區塊一個區塊慢慢比對 好像有點慢 -.- : 一個人還好 : 一百個人同時比對的話 : 好像就會拖垮效能了(?) : 有沒有更有效率的方法 orz : 還有一個問題是 : 通常在存經緯度座標時 : 大家是切兩個欄位分別去存X和Y座標? : 還是MYSQL有特定格式可以存經緯度阿? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.166.132.94 ※ 編輯: KC73 來自: 118.166.132.94 (10/15 03:30)
文章代碼(AID): #1ArYPMCj (Database)
文章代碼(AID): #1ArYPMCj (Database)