我希望仅考虑土地质量来计算 SQL Server 2008 中两点之间的最短距离。
当乌鸦飞过时,我已经使用地理数据类型和 STDistance() 来计算点 x 到点 y 的距离,但是这有时会越过我试图避免的大海。
我还在我感兴趣的陆地边界周围创建了一个多边形。
我相信我需要结合这两种方法来确保 STDistance 始终保持在多边形内 - 除非有更简单的解决方案。
感谢您的任何建议
我希望仅考虑土地质量来计算 SQL Server 2008 中两点之间的最短距离。
当乌鸦飞过时,我已经使用地理数据类型和 STDistance() 来计算点 x 到点 y 的距离,但是这有时会越过我试图避免的大海。
我还在我感兴趣的陆地边界周围创建了一个多边形。
我相信我需要结合这两种方法来确保 STDistance 始终保持在多边形内 - 除非有更简单的解决方案。
感谢您的任何建议
使用 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
否则尝试实现下面的算法!
可能还有其他库可以做到这一点。或者,如何在两个城市之间使用新的 Google Directions API - 然后您将获得实际的道路距离。