gpt4 book ai didi

c# - 按邮政编码查找产品 |半正弦算法 |表现

转载 作者:太空狗 更新时间:2023-10-29 23:21:18 26 4
gpt4 key购买 nike

我有一个根据邮政编码搜索项目的应用程序。

在搜索邮政编码时,我返回了来自该城市/社区的所有产品(通过解析邮政编码完成)。

我现在需要根据与原始邮政编码的距离对这些产品进行分类。

我将纬度/经度存储在数据库中,并计划使用 Haversine 公式计算与原始查询的近似距离。

我的问题是,这个应该在哪里计算。在返回我的数据集之前,我应该在存储过程中执行此操作吗?

或者我应该返回我的数据集,包括我的纬度/经度,并在返回给用户之前在服务器端计算它。

可能需要对多达 1000 个结果执行计算。

最佳答案

通常,数据库服务器受 IO 限制而不是 CPU 限制。 YMMV,但如果您的情况很典型,则最好在数据库服务器上执行 Haversine 计算。

我建议使用自定义查找表进行反正弦 计算,因为您可能可以提供对数尺度的近似距离,例如:

  • 100m,

  • 300m,

  • 1 公里,

  • 3 公里,

  • 10 公里,

  • 30 公里,

  • > 30公里

    然后使用线性插值作为细化。

对于单个大都市区遇到的典型距离,您可以考虑仅使用 the Taylor expansion for sin and cos 的 2 或 3 个项。而不是更精确的计算:

  • sin(x) =~ x - x^3/6 + x^5/120
  • cos(x) =~ 1 - x^2/2 + x^4/24

还记得对于收敛的泰勒级数,第 n 项后的误差严格小于第 (n+1) 项的大小。这使您可以在达到所需精度后高效地终止计算,由于地球不是均匀球体,因此对于 Haversine 公式而言,精度通常仅为 0.5%。

关于c# - 按邮政编码查找产品 |半正弦算法 |表现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35255601/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com