性能 - 通过纬度/经度找到特定距离内的所有点

时间:2013-08-09 19:32:29

标签: python geolocation geospatial

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

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

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

此外,我如何理解这些类型的计算的表现,以便我可以为此形成良好的直觉?

1 个答案:

答案 0 :(得分:1)

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

  1. 将csv中的所有点读入numpy数组
  2. 计算每个点到给定点的距离
  3. 使用argmin
  4. 对距离进行排序或只是找到距离最小的距离

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

    使用好的计算机,I / O需要2-3秒,计算时间不到100-200毫秒。

    就数学而言,您可以尝试http://en.wikipedia.org/wiki/Haversine_formula