查找线相交的多边形数

时间:2016-03-02 20:52:36

标签: sql sql-server geometry geospatial geography

我正在使用SQL Server和空间类型。发现很有意思。我已达到一种情况,我不确定如何解决这个问题。让我概述

我有2个点(坐标),例如。 3,9和50,20 - 这是一条直线,连接起来。

我有多个多边形(50 +)。

我希望能够计算出上述线路经过多少个多边形。通过,当我加入2个坐标时,我的意思是线相交多少个多边形?我想用SQL查询来解决这个问题。

如果不清楚,请告诉我 - 很难解释!

1 个答案:

答案 0 :(得分:1)

根据你的坐标,我假设几何(与地理相反),但这种方法应该保持不变。如果您的表dbo.Shapes具有Shape类型的几何体,并且每行包含一个多边形,则应执行以下操作:

declare @line geometry = geometry::STLineFromText('LINESTRING(3 9, 50 20)', 0);

select count(*)
from dbo.Shapes as s
where s.shape.STIntersects(@line) = 1;

如果您想知道哪些多边形相交,只需将count(*)更改为更合适的位置。