0
私は、2つのSQLジオメトリ(ポリゴン)のエッジが交差する点を見つけようとしています.STIntersectsは交差領域を与えますが、エッジが交差する場所は与えません。2つのポリゴンのエッジが交差するポイントを見つけるにはどうすればよいですか?
私は、2つのSQLジオメトリ(ポリゴン)のエッジが交差する点を見つけようとしています.STIntersectsは交差領域を与えますが、エッジが交差する場所は与えません。2つのポリゴンのエッジが交差するポイントを見つけるにはどうすればよいですか?
ポリゴンはそこに含まれる領域を表しているため、ポリゴンはそれ自身が領域になります。しかし、境界線の交差点を計算すると、探しているものが得られるはずです。それには:
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();
最後の選択はデモンストレーションのための装飾です。一般的なケースでは、交差点がポイントのセットになることはわかりません(たとえば、2つのポリゴンがエッジを共有する場合、交差点は共有エッジになります)。
ありがとうございました。 –