2013-05-30 67 views
1

我是一個服務車輛調度Web應用程序的開發人員。它使用SQL服務器以.Net 4+,MVC4編寫。緩存地理空間計算或即時計算?

在地理數據庫中存儲了2000多個地點作爲地理數據類型。假設我們從位置A發送資源到位置B,驅動時間/距離等需要在一個點上顯示。如果我用SQL Server的STDistance計算距離,它只會給我「如同烏鴉飛」的距離。因此,系統需要打擊像bing,Google或ESRI這樣的地理空間服務,並獲得實際的駕駛時間或建議的路線。問題是這是一個核心功能,會發生ALOT。

我應該用預先計算的距離還是平均驅動時間預先填充查找表?不利的一面是,即使沒有增加更多的地點,那就是每次需要信息時都要搜索4百萬條記錄。

最重要的是,目的地不是我們存儲的地理空間座標之一,而是大陸任何地方的地址或長/拉點,這使得預先計算變得不可能。

我試圖避免性能問題不得不經常碰到一些geoservies端點。

關於如何最好地解決這個問題的任何建議?

-thanks!

回答

1

看過這些問題之前,您不太可能將它們全部存儲起來。

  1. 它通常會針對幾乎所有的路由提供商TOS來緩存結果。有時你可以談判這種能力,但是它的成本很高。
  2. 鑑於沒有一組固定的點正在搜索,做一個計算給你很少的信息爲下一個計算。

我想說,也許你可以存儲路線,一旦他們被選中,所以你可以再次顯示該路線,如果需要。一旦交易完成,我會從您的數據庫中刪除路線。

如果你真的想要緩存所有這些,或者有更多的控制權,你可以使用PGRouting(使用Postgresql),然後獲取街道數據。儘管我懷疑這值得你付出努力。