python - 性能 - 按纬度/经度查找特定距离内的所有点

标签 python geolocation geospatial

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

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

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

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

最佳答案

这在没有任何数据库的Python中绝对是可能的。我肯定会推荐使用 numpy。我会执行以下操作:

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

由于所有计算都是矢量化的,因此它们以接近 C 的速度进行。

如果计算机性能良好,I/O 大约需要 2-3 秒,而计算时间将不到 100-200 毫秒。

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

关于python - 性能 - 按纬度/经度查找特定距离内的所有点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18154300/

相关文章:

python - 如何在发表评论后重定向我的用户

python - 读取二进制文件时如何解决 EOF 错误

javascript - 如何防止新元素覆盖 d3.js 中的现有元素?

iphone - 如何在 uiimagepickercontroller 中写入/获取图像的纬度经度?

c# - Xamarin 形成 Geocoder GetPositionsForAddressAsync 间歇性 android 结果

javascript - Mapbox GL JS : Layering Roads/Cities over Overlay

python - 如何使用 OpenSSL 使用 subjectAltName 和 dirName 生成自签名证书?

python - 如何遍历lxml对象的节点来查看属性是否存在?

database - OrientDb 是否提供任何地理空间支持?

web-services - 获取指定经纬度的 OpenStreetMap 图像