找到一条线相交的多边形数
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(*)
更改为更合适的内容即可。
我正在使用 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(*)
更改为更合适的内容即可。