给定一个边界框,我希望能够计算该框内所有可能的纬度/经度组合,达到一定的精度,例如:小数点后3位。目前,计算是实时的,这是非常缓慢的。为了帮助加快速度,我计划使用AppFabric Caching之类的东西来缓存所有点/距离组合的数据集。如果正确完成,这应该将距离计算减少到查找。
我缺少的唯一一个难题是在边界框中计算纬度/经度组合的有效方法 - 任何人都可以帮忙吗?
标记
答案 0 :(得分:1)
我的猜测是,不应加快在某个方框内计算“所有纬度和经度组合”;它根本不应该完成。相反,您应该派生沿着边界框的四个边缘运行的函数。例如,对于变化x
和常量y_top
,派生函数lat(x)
和long(x)
。给定四个边的两个函数=总共八个函数,您应该能够开发快速逻辑,以确定任何给定坐标是否在边界框中。
答案 1 :(得分:1)
为什么你想要所有这些点,而不仅仅是检查一个给定的点是否在动态框中(这确实不需要很多计算)仍然有点神秘。
然而,考虑到一个小盒子,我们可以对待当地的平坦。
这意味着我们将任何点转换为新坐标:
(llat, llong) -> (x = llong * cos(llat), y = llong)
[注意cos()不是一个昂贵的功能 - 除非你还在486上!]
然后问题减少到笛卡尔平面的问题。
假设“盒子”是指一个矩形,不一定是方向的。
显而易见的事情是光栅化它。
答案 2 :(得分:0)
我会同意其他答案,通常你不想创建所有纬度/经度组合的列表。
如果您使用的是SQL Server 2008或2012,则使用STContains()或STIntersects()方法非常简单,并且空间索引非常快。