关于经纬度距离的算法问题

问题描述

我数据库中有一些商户的经纬度,然后我知道我自己的当前经纬度,怎么能够快速确定我周边2公里内的商户呢??有朋友能提供一下算法,或者思路吗?谢谢!

解决方案

解决方案二:
又是这帖子!上次是100m,这次是2km
解决方案三:
引用1楼bao110908的回复:

又是这帖子!上次是100m,这次是2kmhttp://topic.csdn.net/u/20100712/17/536d4816-5717-4123-aaa9-fd9b239761c3.html

+1
解决方案四:
呃,可能是我没说清楚。通过两个点的经纬度计算距离,这个我知道。我想问的是,如果经纬度数据很多,不可能都取出来一个个去计算,再去排除吧?有没有更好的算法?
解决方案五:
我也在搞这个问题,两个经纬度之间的距离好算。一个经纬度周边指定距离都包含哪些经纬度真不好算。实际应用就像百度地图查找周边500m1km的商户那样。
解决方案六:
其实是一个多维数据的索引问题,如果是一维数据,可以很方便的不论从树型还是数组的存储中得到一定范围内的近邻。对于二维数据,最简单的想法是把整个空间分为一个个小方格,可以根据坐标确定商家在哪个方格内,同样,也可以确定这个圆形范围覆盖了哪些方格,只在这些方格内搜索商家,可以排除很多其它数据。如果需要进一步优化的话,楼主可以看看GirdFile,K-d-tree,R-tree等数据结构相关的算法。
解决方案七:
引用5楼flylybird的回复:

其实是一个多维数据的索引问题,如果是一维数据,可以很方便的不论从树型还是数组的存储中得到一定范围内的近邻。对于二维数据,最简单的想法是把整个空间分为一个个小方格,可以根据坐标确定商家在哪个方格内,同样,也可以确定这个圆形范围覆盖了哪些方格,只在这些方格内搜索商家,可以排除很多其它数据。如果需要进一步优化的话,楼主可以看看GirdFile,K-d-tree,R-tree等数据结构相关的算法……

恩不错呵呵

时间: 2024-07-29 14:01:50

关于经纬度距离的算法问题的相关文章

lbs应用-LBS方案中的经纬度距离计算

问题描述 LBS方案中的经纬度距离计算 我现在有一个点的GPS坐标,想计算其它多个GPS坐标与这个点的距离,有没有什么好的方案, 需求是想查看一个人周边500米内的人,所有人的坐标都有,我目前的方案是用GEOHASH+redis 存储的,但在计算距离时用函数一个个算效率太低了.有一个思路是利用geotools和JTS算法实现缓冲区和多点的交集,但不知道如何利用Geotolls 构建GPS坐标体系,求教在计算多点与单点之间距离上,有没有更高效率的方案或算法.E 解决方案 经纬度距离计算经纬度计算距

java 编程-JAVA实现距离矢量算法

问题描述 JAVA实现距离矢量算法 1.编程实现右图所示简单网络拓扑的距离向量路由算法. 1.1 结点之间的连接关系固定: 1.2 链路开销可以由用户设定. 2.距离向量算法的实现方式: 2.1 可以利用多线程机制:每个结点一个 线程:每隔一段事件利用线程间通信 机制传递距离向量(DV):或是 2.2 每个结点利用单独的进程实现:每隔一 段时间利用Socket实现结点间的距离向量交换: 2.3 距离向量的计算与结点路由表的显示. 3.网络拓扑结构的描述(数据结构),拓扑结构利用文件存储. 4.结

UTM、兰伯特等角圆锥计算的坐标怎么换算,还有它们的距离计算算法是一样的么

问题描述 UTM.兰伯特等角圆锥计算的坐标怎么换算,还有它们的距离计算算法是一样的么 UTM.兰伯特等角圆锥计算的坐标怎么换算,还有它们的距离计算算法是一样的么 解决方案 http://www.doc88.com/p-516688129569.htmlhttp://www.cehui8.com/zhuanti/map/20130701/192.html 解决方案二: 数据挖掘之距离计算算法数据挖掘之距离计算算法

数据库-根据当前经纬度距离最近查询优化(java)

问题描述 根据当前经纬度距离最近查询优化(java) 在数据库中存储商户打点的经纬度,实现用户根据当前定位显示最近商户,怎样控制每次查询的商户数(商户较多且商户存在多种关联,主要是怎样实现在只有经纬度的情况下根据距离最近查询) 解决方案 http://www.cnblogs.com/yeagen/archive/2012/08/23/2653465.html 解决方案二: 根据经纬度查询距离

php计算两个经纬度地点之间的距离

php计算两个指定的经纬度地点之间的距离,这个在做计算给定某个地点的经纬度,计算其附近的商业区,以及给定地点与附近各商业区之间的距离的时候,还是用的到的.下面是具体的函数代码以及用法示例. 关于如何获取某个地址的经纬度,可参照本站文章: 谷歌地图第三版根据地理位置获取经纬度的方法 <?php /** *求两个已知经纬度之间的距离,单位为米 *@param lng1,lng2 经度 *@param lat1,lat2 纬度 *@return float 距离,单位米 *@author www.Al

java经纬度两点距离计算方法

java经纬度两点距离计算方法,返回单位米: public class Distance { private static CLogger<Distance> logger = new CLogger<Distance>(); /** * 计算地球上任意两点(经纬度)距离 * * @param long1 第一点经度 * @param lat1 第一点纬度 * @param long2 第二点经度 * @param lat2 第二点纬度 * @return 返回距离 单位:米 */

PHP根据两点间的经纬度计算距离_php技巧

这是一个不错的示例,直接贴代码,首先要知道纬度值.经度值 /** * @desc 根据两点间的经纬度计算距离 * @param float $lat 纬度值 * @param float $lng 经度值 */ function getDistance($lat1, $lng1, $lat2, $lng2) { $earthRadius = 6367000; //approximate radius of earth in meters /* Convert these degrees to r

SQLSERVER 根据地图经纬度计算距离差示例_MsSql

SQL SERVER 根据地图经纬度计算距离的公式 复制代码 代码如下: go --创建经纬度距离计算函数 CREATEFUNCTION [dbo].[fnGetDistance] --LatBegin 开始经度 --LngBegin 开始维度 (@LatBegin REAL, @LngBegin REAL, @LatEnd REAL, @LngEnd REAL) RETURNSFLOAT AS BEGIN --距离(千米) DECLARE @Distance REAL DECLARE @EAR

matlab-基于距离与距离无关相结合的算法

问题描述 基于距离与距离无关相结合的算法 我想找到基于距离与距离无关相结合的算法,即hop-terrain算法...目前只有基于距离的算法和基于距离无关的算法