lbsクエリーmysql実装

1728 ワード

詳細
データベース・テーブル・インデックスはMyISAMでなければなりません.
 
CREATE TABLE address (
 
    address CHAR(80) NOT NULL,
 
    address_loc POINT NOT NULL,
 
    PRIMARY KEY(address)
 
)ENGINE=MyISAM;

スペースインデックス:
 
ALTER TABLE address ADD SPATIAL INDEX(address_loc);

挿入データ:(注:ここでポイント(緯度、経度)標準表記)
 
INSERT INTO address VALUES('Foobar street 12', GeomFromText('POINT(30.620076 104.067221)'));  
INSERT INTO address VALUES('Foobar street 13', GeomFromText('POINT(31.720076 105.167221)')); 

検索:検索(30.60,076104.067221)付近10キロ
 
SELECT  *  
    FROM    address  
    WHERE   MBRContains  
                    (  
                    LineString  
                            (  
                            Point  
                                    (  
                                    30.620076 + 10 / ( 111.1 / COS(RADIANS(104.067221))),  
                                    104.067221 + 10 / 111.1  
                                    ),  
                            Point  
                                    (  
                                    30.620076 - 10 / ( 111.1 / COS(RADIANS(104.067221))),  
                                    104.067221 - 10 / 111.1  
                                    )   
                            ),  
                    address_loc  
                    ) 

mysql関数大全:
           http://www.cnblogs.com/waterystone/p/5606423.html