Mysql 地区经纬度 查询(初探)

网上参考原文:http://my.oschina.net/alexgaoyh/blog/392123


MySQL的空间扩展(MySQL Spatial Extensions),它允许在MySQL中直接处理、保存和分析地理位置相关的信息,看起来这是使用MySQL处理地理位置信息的“官方解决方案”。但恰恰很可惜的是:它却不支持某些最基本的地理位置操作,比如查询在半径范围内的所有数据。它甚至连两坐标点之间的距离计算方法都没有(MySQL Spatial的distance方法在5.*版本中不支持)

官方指南的做法是这样的:

GLength(LineStringFromWKB(LineString(point1, point2)))

这条语句的处理逻辑是先通过两个点产生一个LineString的类型的数据,然后调用GLength得到这个LineString的实际长度。

这么做虽然有些复杂,貌似也解决了距离计算的问题,但读者需要注意的是:这种方法计算的是欧式空间的距离,简单来说,它给出的结果是两个点在三维空间中的直线距离,不是飞机在地球上飞的那条轨迹,而是笔直穿过地球的那条直线。

所以如果你的地理位置信息是用经纬度进行存储的,你就无法简单的直接使用这种方式进行距离计算。

 

另外整理出一条sql语句,但性能待测。结果准确度待测

select a.P_NAMES from (select GeomFromText(concat('POINT(', LAT ,' ', LNG,')')) pt, P_NAMES from city) a where 0.6 >= GLength(LineStringFromWKB(LineString(a.pt, point(39.904214 ,116.407413))));

输出结果:

P_NAMES
北京市
北京市县
北京市市辖区
河北省廊坊市

当前位置:叶子坑 » Mysql 地区经纬度 查询(初探)

赞 (0)
分享到:更多 ()

相关推荐

    暂无内容!

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址