我正在尝试找到两个SQL几何(多边形)的边相交的点 - STIntersects给出了交叉区域,但没有给出边相交的位置。
答案 0 :(得分:1)
因为多边形代表其中包含的区域,所以它们的交叉点本身就是一个区域。但是,如果你计算边界的交集,你应该得到你正在寻找的东西。即:
declare
@a geometry = geometry::STGeomFromText('POLYGON((0 0, 0 2, 2 2, 2 0, 0 0))', 0),
@b geometry = geometry::STGeomFromText('POLYGON((1 1, 1 3, 3 3, 3 1, 1 1))', 0),
@c geometry
select @c = @a.STBoundary().STIntersection(@b.STBoundary());
select @c.STPointN(n).ToString()
from Util.dbo.Numbers as n
where n.n <= @c.STNumPoints();
最后一个选择是为了演示的目的而点缀。在一般情况下,我不知道交点将是一组点(例如,当两个多边形共享边时,交点将是共享边)。