我是服务车辆调度网络应用程序的开发人员。它是用.Net 4 +,MVC4编写的,使用SQL服务器。
数据库中存储了2000多个地点作为地理数据类型。假设我们将资源从位置A发送到位置B,则需要在一个点显示驱动时间/距离等。如果我使用SQL Server的STDistance计算距离,它只会给我“As the crow flies”的距离。因此,系统需要点击像bing,Google或ESRI这样的地理空间服务,并获得实际的驾驶时间或建议路线。问题是这是一个核心功能,很快就会发生。
我应该预先填充预先计算的距离或平均驾驶时间的查找表吗?即使没有添加更多位置,每次需要信息时仍需搜索4Million记录。
除此之外,大多数时候目的地不是我们存储的地理空间坐标之一,而是可以是大陆上任何地方的地址或长/纬度点,这使得预先计算变得不可能。
我正在努力避免性能问题不得不经常打击一些地理位置终点。
关于如何最好地解决这个问题的任何建议?
-Thanks!
答案 0 :(得分:1)
之前看过这些问题,你不太可能将它们全部存储起来。
我想说,一旦选择了路线,也许你可以存储路线,这样你就可以在需要时再次显示路线。交易完成后,我会从您的数据库中删除该路由。
如果你真的想要缓存所有这些或对它有更多的控制权,你可以使用PGRouting(使用Postgresql)然后获取街道数据。虽然我怀疑这是值得的。