2010-06-02 55 views
5

我期待計算SQL Server 2008內兩點之間的最短距離,只考慮土地質量。使用SQL服務器跨越地面兩點之間的距離

我已經使用地理數據類型和STDistance()來計算點x到點y的距離,但是這有時會跨越我想要避免的海域。

我還創建了一個多邊形的土地腫塊邊界我感興趣的

圍繞我相信,我需要將這兩種方法結合起來,以確保STDistance始終保持多邊形內 - 除非有一個簡單的解決方案。

感謝您的任何意見

回答

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路線API--那麼您將獲得實際的道路距離。

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

+0

感謝您的回覆。 除非我誤解不會讓我在地塊內的最短距離,它只會讓我區分跨越陸地的距離和跨海的距離。 也許一個成功的例子將幫助我解釋。就像烏鴉一樣,馬拉加(西班牙)比馬德里更接近丹吉爾(摩洛哥)。 如果我們只能通過陸路旅行,Tanger仍然可以進入(經過漫長的旅程歐洲,中東等),但現在比馬德里,巴黎等地更遠。因此,我試圖計算跨越的距離只有地塊。 – 2010-06-03 09:25:55

+0

SQL Server不區分陸地或海洋(或丘陵,就此而言)。 – 2010-10-18 01:31:36

+0

我會假設多邊形將被正確歸因? – geographika 2010-10-18 07:12:52