1

我有一个 CSV 文件,其中的点由 lat/long(~10K 点)标记。我想搜索用户/指定纬度/经度坐标的给定距离内的所有点 - 例如,曼哈顿的质心。

我对编程和数据库很陌生,所以这可能是一个基本问题。如果是这样,我很抱歉。在不使用数据库的情况下在纯 Python 中执行此搜索是否高效?例如,我可以简单地将 CSV 读入内存并使用 Python 脚本进行搜索吗?如果它是高性能的,它会随着点数的增加而很好地扩展吗?

或者这在 Python 中根本不可行,我需要使用支持地理空间查询的数据库进行调查?

此外,我如何理解这些类型的计算的性能,以便我可以对此产生良好的直觉?

4

1 回答 1

1

这在没有任何数据库的 python 中绝对是可能的。我肯定会推荐使用 numpy。我会做以下事情:

  1. 将所有点从 csv 读入一个 numpy 数组
  2. 计算每个点到给定点的距离
  3. 对距离进行排序或简单地使用 argmin 找到距离最小的那个

因为所有计算都是矢量化的,所以它们以接近 C 的速度发生。

使用一台正常的计算机,I/O 将需要大约 2-3 秒,而计算将需要不到 100-200 毫秒。

在数学方面,你可以试试http://en.wikipedia.org/wiki/Haversine_formula

于 2013-08-09T21:55:57.883 回答