我正在使用SQL Server和空间类型。发现很有意思。我已达到一种情况,我不确定如何解决这个问题。让我概述
我有2个点(坐标),例如。 3,9和50,20 - 这是一条直线,连接起来。
我有多个多边形(50 +)。
我希望能够计算出上述线路经过多少个多边形。通过,当我加入2个坐标时,我的意思是线相交多少个多边形?我想用SQL查询来解决这个问题。
如果不清楚,请告诉我 - 很难解释!
答案 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(*)
更改为更合适的位置。