5

我希望仅考虑土地质量来计算 SQL Server 2008 中两点之间的最短距离。

当乌鸦飞过时,我已经使用地理数据类型和 STDistance() 来计算点 x 到点 y 的距离,但是这有时会越过我试图避免的大海。

我还在我感兴趣的陆地边界周围创建了一个多边形。

我相信我需要结合这两种方法来确保 STDistance 始终保持在多边形内 - 除非有更简单的解决方案。

感谢您的任何建议

4

1 回答 1

1

使用 STIntersects - http://msdn.microsoft.com/en-us/library/bb933899%28v=SQL.105%29.aspx找出线路的哪一部分在陆地上。

阅读您的评论后,您的要求是有道理的。但是我很确定在 SQL Server 中没有内置的技术可以做到这一点。我假设您忽略了道路,并采取了如乌鸦一样的方法,但仅在陆地上。

我能想到的唯一方法是将您的区域转换为栅格(网格单元)并执行成本路径分析。您可以将海域设置为具有高得令人望而却步的成本,这样算法就会绕着大海走。有关技术的描述,请参见此链接:

http://webhelp.esri.com/arcgisdesktop/9.3/index.cfm?TopicName=cost_path

否则尝试实现下面的算法!

http://bit.ly/ckvciz

可能还有其他库可以做到这一点。或者,如何在两个城市之间使用新的 Google Directions API - 然后您将获得实际的道路距离。

http://code.google.com/apis/maps/documentation/directions/

于 2010-06-02T22:41:34.913 回答