使用sql server在两个点之间的距离

时间:2010-06-02 13:58:02

标签: sql-server sql-server-2008 geospatial spatial

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

我已经使用了地理数据类型以及STDistance()来计算点到达y点的距离x,但是这有时会穿过我试图避开的海。

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

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

感谢您的任何建议

1 个答案:

答案 0 :(得分: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/