2014-03-04 40 views
1

假設我有一個點對點行字符串在SQL Server的實例SQL Server的幾何 - 創建一個從線串半圈

geometry::STLineFromText('LINESTRING(0 0, 30 30)', 0) 

是否有會走這條線,並創建一個圓的函數或使用該線的起點和終點的半圓作爲直徑

回答

1

對不起,對於遲到的答案,我只是發現了問題。

你必須使用功能的組合來實現這一點,但創建一個圓相當簡單。例如:

declare @geom geometry = geometry::STLineFromText('LINESTRING(0 0, 30 30)', 0); 

declare @circle geometry = @geom.STEnvelope().STCentroid().STBuffer(@geom.STLength()/2); 

從本質上講,我們使用STEnvelope()來圍繞打造線上的多邊形,這讓我們接着使用STCentroid()獲得多邊形的中心點(因此線),我們又終於與STBuffer()擴大使用STLength()/2作爲緩衝距離(當然這是線長度的一半 - 因此也是所需圓的半徑)。

創建一個半(或半個)圓不會那麼容易。您需要考慮創建自己的函數,該函數使用GeometryBuilder定義一個多邊形,從您的線起點開始到線終點之間,計算您的線距您中心一半長度的靜止座標沿着多個角度開始,從你的線的角度減去180,然後順時針旋轉直到你達到你的線的角度。你擁有的點越多,它就會越圓。