【发布时间】:2016-11-16 15:13:34
【问题描述】:
给定一个地理坐标数组和另一个地理坐标,我想找到离它最近的坐标。
例如,给定数组:
纬度 长
52.525782 13.316927
52.526409 13.319083
52.525678 13.320317
点:52.525730, 13.314556,则返回第一个点52.525782, 13.316927,因为它是最接近的点。
实现它的唯一方法是遍历所有数组并找到点之间的距离吗?如果数组包含太多坐标会怎样?
【问题讨论】:
-
数组结构到底是什么,一个数组是lat,另一个数组是long,还是像
double[,]这样的数组 -
@AlfieGoodacre 是一个数组,就像
double[,] -
我宁愿看到 BSP 树 - 二进制空间分区。他们需要很长时间才能从这样的集合中生成,但它会有
O (log n)搜索。基本上给定两个点,它们沿着一条线等距,即使离您的查询最近的点不是这两个点之一,找到该线的哪一侧有查询点可以排除其他点的一半,并且我们可以跳过比较它们。
标签: c# arrays optimization location coordinates