我的代码,对于一个经度/经度对的数组,从另一个数组中找到最接近的经度/经度对:
输入:
$reference_array
,这是一个关联数组,其中键是"标签",值是该标签的纬度/经度。例如,它可以将城镇名称与城镇的质心匹配。
$input_array
,这是一个经度/经度对的列表。
我需要从$reference_array
中找到最接近$input_array
中每个点的标签。我还有一个最大半径,因此任何不在该半径内的最近点都会被赋予 null 的"最近标签"。
我有有效的代码 - 我遍历每个数组,计算每对之间的距离,然后记录$input_array
中每个点的最近标签(及其距离)。这行得通,和这道题基本一样,但效率不高,我的脚本超时,点相对较少。我无法控制$reference_array
的大小,因此总是需要执行大量比较。
我的问题 - 我可以使用哪些数据结构或算法来提高此计算的效率?
如果首先检查点是否包含在边为 2 * 半径的正方形中,您可以提高效率。 比较运算的负载比距离的计算要小得多。