我有一个 CSV 文件,其中包含经纬度标记的点(约 10K 点)。我想搜索用户/指定纬度/经度坐标给定距离内的所有点 - 例如,曼哈顿的质心。
我对编程和数据库还很陌生,所以这可能是一个基本问题。如果是这样,我道歉。在不使用数据库的情况下用纯 Python 进行此搜索是否有效?例如,我可以简单地将 CSV 读入内存并使用 Python 脚本进行搜索吗?如果它是高性能的,它会随着点数的增加而很好地扩展吗?
或者这在 Python 中根本不可行,我需要使用支持地理空间查询的数据库进行研究?
此外,我如何了解这些类型计算的性能,以便对此有良好的直觉?
最佳答案
这在没有任何数据库的Python中绝对是可能的。我肯定会推荐使用 numpy。我会执行以下操作:
- 将 csv 中的所有点读取到 numpy 数组中
- 计算每个点到给定点的距离
- 对距离进行排序或使用 argmin 简单地找到距离最小的距离
由于所有计算都是矢量化的,因此它们以接近 C 的速度进行。
如果计算机性能良好,I/O 大约需要 2-3 秒,而计算时间将不到 100-200 毫秒。
关于python - 性能 - 按纬度/经度查找特定距离内的所有点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18154300/