列出数组中最近的经度/纬度

Posted

技术标签:

【中文标题】列出数组中最近的经度/纬度【英文标题】:List nearest Longitude/Latitude from array 【发布时间】:2014-11-13 22:21:14 【问题描述】:

我有两个变量定义了一个静态经度和纬度。我希望能够定义一个包含以下内容的多维数组:id、经度和纬度。

我想要实现的目标 - 从静态经度到通过数组循环提供数据,如果在 50 英里(或其他)半径内找到某些东西,它会选择潜在的并列出它们。

我不确定我可以使用什么公式或算法来检查半径并返回最接近的值。

请注意:本例中未使用数据库。

到目前为止:

$mainLong = 57.7394571;
$mainLat = -4.386997;

$main = array(
        array("loc_1",57.7394571,-4.686997),
        array("loc_2",51.5286416,-0.1015987),
        array("loc_3",51.2715146,-0.3953564),
        array("loc_4",50.837418,-0.1061897)
);

foreach ( $main as $key => $value ) 

    if($value[1] == $mainLong)
      print_r($value);
    


【问题讨论】:

半正弦公式是一种选择related question 【参考方案1】:

Haversine 公式可以提供帮助。 这是一个示例算法。 你可以试试看。

%% Begin calculation

R = 6371;                                   % Earth's radius in km
delta_lat = locs2(1) - locs1(1);        % difference in latitude
delta_lon = locs2(2) - locs1(2);        % difference in longitude
a = sin(delta_lat/2)^2 + cos(locs1(1)) * cos(locs2(1)) * ...
    sin(delta_lon/2)^2;
c = 2 * atan2(sqrt(a), sqrt(1-a));
km = R * c;                                 % distance in km


%% Convert result to nautical miles and miles

nmi = km * 0.539956803;                     % nautical miles
mi = km * 0.621371192;                      % miles

【讨论】:

以上是关于列出数组中最近的经度/纬度的主要内容,如果未能解决你的问题,请参考以下文章

选择经度和纬度最近的记录

获取最近的纬度和经度

给定纬度和经度的最近道路

如何在Android App中检测最近的可用纬度和经度

使用纬度-经度返回用户位置可用的最近地点?

在 SQL Server 中查找多边形内/最近的纬度/经度