2013-05-31 32 views
1

我正在使用Entity Framework 5.0和sql server幾何類型。 我試圖找一個點,找到與該點的緩衝區相交併符合特定屬性要求的線條。這可能嗎?在sql空間中獲取相交線

我知道STIntersect方法,但這些方法看起來像是比較兩個功能之間的工作。我有一個線數據集和一個點。所以我不知道我能得到多少結果。

回答

1

您可以使用STBuffer幾何方法來獲取點周圍的區域並將其存儲在變量(或任何地方!)中。從那裏,你可以使用STIntersects找出你的線路。像這樣:

DECLARE @g geometry, @l geometry; 
SELECT @g = geometry::STGeomFromText('POINT(0 0)', 0), 
@l = geometry::STGeomFromText('LINESTRING(0 1, 4 0)', 0); 

SELECT @g, @l, @g.STBuffer(1), @l.STIntersects(@g.STBuffer(1)); 

此外,我使用正確的數據類型(地理與幾何)的標準警告適用,如果你正在做地理空間。

+0

太棒了!謝謝!但我的問題是我如何找到所有與我的緩衝點相交的線。我知道如何進行一對一的比較,但我有很多很多的線,我不想比較他們中的每一個。 – VBAHole

+0

你的所有線路如何存儲?如果在一個表格中,並且每行有一行,只需在表格上運行上面的查詢而不是變量,那麼您就很好。如果他們以其他方式存儲,則您將不得不更多地瞭解您的數據的實際結構...... –

+0

它們存儲在表中。我需要創建一個循環還是可以將它作爲一個集合來執行?並感謝您的幫助! – VBAHole