缓存地理空间计算还是即时计算?

时间:2013-05-30 14:34:17

标签: caching asp.net-mvc-4 sql-server-2008-r2 geospatial

我是服务车辆调度网络应用程序的开发人员。它是用.Net 4 +,MVC4编写的,使用SQL服务器。

数据库中存储了2000多个地点作为地理数据类型。假设我们将资源从位置A发送到位置B,则需要在一个点显示驱动时间/距离等。如果我使用SQL Server的STDistance计算距离,它只会给我“As the crow flies”的距离。因此,系统需要点击像bing,Google或ESRI这样的地理空间服务,并获得实际的驾驶时间或建议路线。问题是这是一个核心功能,很快就会发生。

我应该预先填充预先计算的距离或平均驾驶时间的查找表吗?即使没有添加更多位置,每次需要信息时仍需搜索4Million记录。

除此之外,大多数时候目的地不是我们存储的地理空间坐标之一,而是可以是大陆上任何地方的地址或长/纬度点,这使得预先计算变得不可能。

我正在努力避免性能问题不得不经常打击一些地理位置终点。

关于如何最好地解决这个问题的任何建议?

-Thanks!

1 个答案:

答案 0 :(得分:1)

之前看过这些问题,你不太可能将它们全部存储起来。

  1. 通常会针对几乎所有路由提供商TOS缓存结果。你有时可以协商这种能力,但费用很高。
  2. 鉴于您没有找到一组固定的点,进行一次计算会为下一次计算提供很少的信息。
  3. 我想说,一旦选择了路线,也许你可以存储路线,这样你就可以在需要时再次显示路线。交易完成后,我会从您的数据库中删除该路由。

    如果你真的想要缓存所有这些或对它有更多的控制权,你可以使用PGRouting(使用Postgresql)然后获取街道数据。虽然我怀疑这是值得的。