我想在我的$user_devices数组中找到两个最远的对象(彼此)。$user_devices的每个对象都有属性:id、name、imei和坐标。例如:$user_devices=array('id'=>'1','name'=>'Firstobject','imei'=>'123456789','coordinates'=>'51.313032,11.798092');我要做的是遍历整个数组,将纬度和经度转换为x和y,最后计算位置之间的距离。问题是该算法应该可以快速处理至少5000条记录(位置),但将其集成到网站中需要大约20秒的加载时间。如何优化这个算法?publicstaticf
我在http://www.movable-type.co.uk/scripts/latlong.html上使用了算法求两点之间的距离。我的两点是long1=51.507467;lat1=-0.08776;long2=51.508736;lat2=-0.08612;根据MovableTypeScript答案是0.1812km我的应用程序给出的结果(d)为0.230km检查Haversine公式:http://www.movable-type.co.uk/scripts/latlong.htmldoubleR=6371;//earth’sradius(meanradius=6,371km)
我的数学不太好,但我需要计算标记两个不同位置的距离。像这样:publicdoubleCalculationByDistance(doubleinitialLat,doubleinitialLong,doublefinalLat,doublefinalLong){returndistance;}或者有没有其他方法可以计算两个标记的距离,我也尝试用谷歌搜索答案......但找不到任何答案。引用:http://en.wikipedia.org/wiki/Haversine_formula欢迎提出意见:)谢谢!! 最佳答案 试试这个,比Ha
根据它关于2d索引的文档:The2dindexsupportscalculationsonaflat,Euclideanplane.The2dindexalsosupportsdistance-onlycalculationsonasphere,butforgeometriccalculations(e.g.$geoWithin)onasphere,storedataasGeoJSONobjectsandusethe2dsphereindextype.有些事情我不明白..我不明白仅距离是什么意思,它是指弦(通过表面“内部”的线连接两个表面点的线)吗?该计算如何根据地球经度和纬度进行计算
全部。我想创建一个mysql函数来计算两个地理代码之间的正弦距离。CREATEFUNCTIONhaversineDistance(lat1VARCHAR(256),long1VARCHAR(256),lat2VARCHAR(256),long2VARCHAR(256))RETURNSFLOATDETERMINISTICBEGINDECLAREradLat1FLOAT;DECLAREradLong1FLOAT;DECLAREradLat2FLOAT;DECLAREradLong2FLOAT;DECLAREdLatFLOAT;DECLAREdLongFLOAT;DECLAREcordLen
我的目标是在我的最新项目中创建一个功能,最好使用PHP。当每个用户注册时,他们将输入他们的邮政编码。然后希望我将使用OpenStreetMap将其转换为纬度/经度。无论如何,我希望能够找到位于当前用户附近的其他用户。我见过很多人使用Haversine公式,但是这意味着用户查询每个其他用户的详细信息来计算距离。我可以缓存它,但随着新用户注册,它很快就会过时。运行以下查询会对我的系统产生什么样的影响?sql="SELECTzipcode,(3959*acos(cos(radians({$coords['latitude']}))*cos(radians(latitude))*cos(rad
我在一个汽车交易网站上工作。我有一个名为vehicle的表,其中包含大约20个字段,包括车辆的品牌、型号等。我正在编写一个搜索查询,以按制造商检索系统组中的所有汽车及其计数。所以我的目标是让系统中的所有车辆按品牌分组以及品牌计数,但计数部分无法正常工作。它通过忽略我的距离计算标准返回汽车总数。我正在执行以下SQL:SELECT*FROM(SELECT*,ROUND(((ACOS(SIN(51.4811109*PI()/180)*SIN(latitude*PI()/180)+COS(51.4811109*PI()/180)*COS(latitude*PI()/180)*COS((-0.4
这是一道关于使用半正弦公式计算地球上两点之间的经纬度距离的问题,用于需要“找到我最近的”功能的项目。haversine公式在thispostMySQL中得到了很好的讨论和解决。.然后我问了thisquestion关于将它变成一个存储函数,以便它可用于future的项目,而无需查找、记住或重新输入长格式的公式。一切都很好。除了我的函数在结果上(略有不同)与直接在查询中键入公式不同,其他所有条件都相同。这是为什么?所以这是我写的函数:DELIMITER$$DROPFUNCTIONIFEXISTShaversine$$CREATEFUNCTION`haversine`(fromLatitud
我从GoogleMapsReverse-GeocodingAPI获取纬度和经度,然后我需要这样的东西:mysql_query("SELECTusers.*,".mysql_distance_column($lat,$lng)."FROMusersORDERBYDISTANCE";functionmysql_distance_column($lat=40,$lng=-73){$defaultLatitudeColumn='user_lat';$defaultLongitudeColumn='user_lng';$defaultColumnName='user_distance';retu
我目前有一个结构如下的MySQL表:idnamelonlat--------------------------------1Mark-76.31652840.0360272John-95.99510241.257163Paul-82.33703629.6450954Dave-82.33703629.6450955Chris-76.31652840.036027我目前查询数据库以查看用户位置是否在给定位置的特定英里半径内的方法是这样做的。functionHaversine($lat_from,$lon_from,$lat_to,$lon_to){$radius=6371000;$del