LBS附近地点搜索算法资料集合
来源:互联网 发布:金融网络投资排行 编辑:程序博客网 时间:2024/04/30 13:56
方法一:基于球面距离搜索附近地点
- 附近地点搜索初探
点评:需要使用2个字段进行查询,查询效率差,适用于数据量较少的小型应用。
- Haversine formula - Wikipedia
维基百科推荐使用 Haversine 公式计算球面距离
- Great-circle distance - Wikipedia
方法二:基于Geohash算法搜索附近地点
- geohash:用字符串实现附近地点搜索
点评:精度可控,使用单字段字符串前缀查询,查询效率较高,适用于大数据的应用。
- Geohash - Wikipedia
- geohash演示
其它方法:
- MySQL中的空间扩展
//// 使用 Haversine 公式计算两个地理坐标点之间的球面距离。//// 参数说明:// $lat1 点1的纬度值,单位:degree// $lng1 点1的经度值,单位:degree// $lat2 点2的纬度值,单位:degree// $lng2 点2的经度值,单位:degree//// 返回值:两点之间的球面距离,单位: km//function haversine_distance($lat1, $lng1, $lat2, $lng2) { $EARTH_RADIUS = 6371.00; // 地球平均半径,6371km // 角度转换成弧度 $rlat1 = deg2rad($lat1); $rlng1 = deg2rad($lng1); $rlat2 = deg2rad($lat2); $rlng2 = deg2rad($lng2); $rlat_diff = abs($rlat1 - $rlat2); $rlng_diff = abs($rlng1 - $rlng2); $h = pow(sin($rlat_diff/2), 2) + cos($rlat1) * cos($rlat2) * pow(sin($rlng_diff/2), 2); return 2 * $EARTH_RADIUS * asin(sqrt($h));}//// 根据到中心点的距离计算东西两侧的经度边界范围,采用 Haversine 公式计算。//// 参数说明:// $lat 中心点的纬度,单位:degree// $lng 中心点的经度,单位:degree// $distance 到中心点的距离,单位:km// // 返回值: array($lat_diff, $lng_diff)// $lat_diff 到中心点的纬度边界范围,单位: degree// $lng_diff 到中心点的纬度边界范围,单位: degree//function lbs_haversine_diff($lat, $lng, $distance) { $EARTH_RADIUS = 6371.00; // 地球平均半径,6371km // 纬度边界 $rlat_diff = $distance / $EARTH_RADIUS; $dlat_diff = rad2deg($rlat_diff); // 经度边界 $rlat = deg2rad($lat); $rlng_diff = 2 * asin( sin($distance / (2 * $EARTH_RADIUS)) / cos($rlat) ); $dlng_diff = rad2deg($rlng_diff); return array($dlat_diff, $dlng_diff);}
0 0
- LBS附近地点搜索算法资料集合
- 附近地点搜索算法初探
- 附近地点搜索初探
- 附近地点搜索初探
- 附近地点搜索初探
- 附近地点搜索初探
- 附近地点搜索解决方案
- 附近地点搜索解决方案
- LBS:附近搜索(geohash算法:经纬度编码搜索)
- 附近地点搜索算法的几种实现方式
- Java实现附近地点搜索
- 搜索智能提示suggestion,附近地点搜索
- 智能提示suggestion,附近地点搜索
- LBS:附近搜索(经度、维度索引搜索)
- geohash-用字符串实现附近地点搜索
- geohash:用字符串实现附近地点搜索
- geohash:用字符串实现附近地点搜索
- geohash:用字符串实现附近地点搜索
- 查看linux下登陆用户的行为信息—w和who命令详解
- 结构体字节对齐
- Thinking in java --String
- JSTL
- Fedora17中systemd系统和服务管理器
- LBS附近地点搜索算法资料集合
- 简单介绍PHP获取文件属性方法
- poj 1160
- ios自带的json对请求数据进行解析
- _T() 函数
- CLI/C++中混合类的使用
- 工厂模式--模拟spring的bean工厂beanFactory
- JSTL 核心标签库 使用
- Delphi 参数传递