什么是使用笛卡尔坐标系定位场地的合适算法

时间:2015-04-08 15:57:13

标签: mysql algorithm

能够在特定距离(例如100米)内定位和显示我周围的地方的算法是什么,使用东向和北向以及我所在的地方的名称。 更清楚的是,让我们假设我基于charing cross,我想使用东向和北向数据找到100米内的所有位置,例如,东向= 10000米和东向= 20000米。 谢谢

2 个答案:

答案 0 :(得分:1)

Pythagoras是相关的数学。

如果你的位置是(x,y),那么你可以用以下方法计算到任何其他点(x2,y2)的距离:

distance = sqrt((x2-x)^2 + (y2-y)^2)

所以你可以循环遍历所有点,计算它们的距离并按照最接近的顺序对结果进行排序。

对于大型数据集,这可能变得不切实际,在这种情况下,您需要将点分区为大矩形。第一阶段是确定你的(x,y)在哪个矩形和相邻的矩形,然后循环遍历那些矩形中的所有点。您需要相邻的矩形,因为您的(x,y)可能正好在其矩形的边界上。

更一般地说,这种分区方法属于空间散列的一般标题。对于非常大的区域,您需要一种称为四叉树的树形结构,将大面积区域分解为越来越小的区域,但这可能对您想要的东西有点过分。

答案 1 :(得分:-1)

我假设笛卡尔坐标你也意味着线性。如果你试图用实际的地球坐标来做这个,那么这个答案会变得更复杂(因为我们不是在平坦的地球上)。对于简单的线性坐标,您可以执行以下操作:

bool contains( x, y) 
{
   return (x >= minx) && (x <= maxx) && (y >= miny) && (y <= maxy);
}

最小,最大坐标将是您当前的位置+您想要走多远。我想这就是你想知道的。如果您需要准确的地球坐标,您可以查看一些地理空间库。如果你需要并估计你仍然可以使用上面的算法,但我会使用Rhumb线来计算最小,最大坐标。