找到一条线相交的多边形数

find number of polygons a line intersects

我正在使用 SQL 服务器和空间类型。发现非常有趣。我遇到了一种情况,但不确定如何解决。让我概述一下

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

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

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

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

根据您的坐标,我假设几何(而不是地理),但无论如何该方法都应该适用。如果你有一个 table 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(*)更改为更合适的内容即可。