1

我需要找到位于给定半径内的点。现在我有两个选择,首先是为它编写自己的算法(或使用现有库),其次是使用 postgresql earth_box 实用程序,我可以使用存储过程直接从 db 中选择它。在 Web 应用程序的上下文中,两者的优缺点是什么?

4

1 回答 1

1

我认为在 postgres 中使用 earth_box 过程会更好,原因如下:

  • 数据库已经包含使用它的数据和过程
  • 给定一个正确索引的表,数据库服务器在对自己的空间数据执行空间查询时应该非常有效
  • 使用服务器无需查询空间信息,将其传输到您正在处理的任何地方,创建树结构和其他开销(与第一个项目符号相关)
  • 您正在使用已经存在的代码,并且可能已经过彻底的测试和审查
  • 您可以从更广泛的应用程序(例如报告)中重用其他服务器端 SQL 中的代码

我肯定会建议首先尝试使用 earthbox 方法,并且只有在 earthbox 在性能方面绝对糟糕的情况下才使用自定义解决方案。

这是您可能想查看的博客文章中更简洁的元推理:

[...] earthbox 功能允许我们执行简单的比较以查找特定半径内的所有记录。这是由函数通过返回点之间的大圆距离来完成的,更详尽的解释位于 http://en.wikipedia.org/wiki/Greatcircle

(通过元推理,我的意思是使用 earthbox 的简单性使得使用它变得轻而易举。)

于 2014-03-13T05:23:58.937 回答