0

刚开始玩geokit并尝试了一些东西......

事情几乎按预期工作,考虑到一点,它在附近找到东西。

但是,如果我将 :within 设置为一个很大的值,比如 100,000,使用 :miles,我希望得到 db 中的大部分(如果不是全部)对象返回 - 但它似乎在某个点停止 - 因为如果:within 有一个内置的最大值。

我已经尝试过公式:flat 和 :sphere。

在此先感谢,克里斯

4

1 回答 1

1

您的问题似乎不是内置的最大值,:within而是缺乏限制(以及 geokit 内部的健全性检查)。

看起来:within查询最终会Geokit::Bounds.from_point_and_radius生成一个边界框。from_point_and_radius将做一些三角函数(参见 参考资料endpointmappable.rb,结果将是一个Geokit::Bounds实例。

我怀疑你在三角函数中出了问题;三角函数是周期性的,因此您的 100 000 半径最终会环绕到 0 到 ~40 000 公里(地球周长,约 25 000 英里)之间,并且边界框不会限制 100 000 英里。如果你稍微玩一下你的 100 000,你可能会让 geokit 产生一个每边只有几厘米的边界框(或者如果你能解决通常的浮点问题,则半径为零)。

执行摘要:如果你想要它们,就不要使用:within;如果您想使用:within,则给它一个合理的距离(即小到足以适合行星表面而无需环绕)。

于 2011-02-19T23:49:48.510 回答