使用MySQL的geometry类型处理经纬度距离问题的方法
建表
CREATETABLE`map`( `id`int(11)NOTNULL, `address`varchar(255)NOTNULLDEFAULT'', `location`geometryNOTNULL, PRIMARYKEY(`id`), SPATIALKEY`idx_location`(`location`) )
插入
INSERTINTOmap(id,address,location)VALUES(1,'somewhere',ST_GeomFromText('POINT(121.36696131.190049)'));
注意必须使用ST_GeomFromText函数,且POINT()里面是:经度+空格+纬度
查询
1.查看经纬度
SELECTaddress,ST_AsText(location)ASlocationFROMmap;
2.计算两点之间的距离
SELECTST_Distance_Sphere(POINT(121.590347,31.388094),location)ASdistantFROMmap;
算出来的结果,单位是米
注意现在POINT()里面经纬度之间是逗号分隔的
3.查询距离小于1000m的地点,并由远及近排序
SELECTid,address,ST_Distance_Sphere(POINT(121.590347,31.388094),location)ASdistantFROMmapWHEREST_Distance_Sphere(POINT(121.590347,31.388094),location)<1000ORDERBYdistant;
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。