计算SQL Server 2008中几个几何对象的外边界

Pet*_*ger 5 spatial geospatial spatial-query sql-server-2008

我在SQL Server 2008中有很多Polygons数据类型Geometry.下图显示了所有这些Geometrys的选择看起来如何可视化.

很多Geometrys

我需要做的是创建一个Polygon,它代表所有这些多边形的外边界.所以我使用了前面提到的空间问题响应来创建以下代码:

DECLARE @test TABLE(geom GEOMETRY);

INSERT INTO @test SELECT geom FROM ForceBoundary

DECLARE @geom GEOMETRY
SELECT @geom = (SELECT TOP 1 geom FROM @test)
SELECT @geom = @geom.STUnion(geom) FROM @test

SELECT @geom
Run Code Online (Sandbox Code Playgroud)

这产生了以下结果,由于多边形之间的孔洞而产生裂缝:

具有裂缝的组合多边形

所以我通过以下更改更新了我的查询:

INSERT INTO @test SELECT geom.Reduce(0.001).STBuffer(100) FROM ForceBoundary
Run Code Online (Sandbox Code Playgroud)

这改善了结果,但它没有完全解决问题,也损害了外边界精度.

复合多边形,裂缝较少

实现这一目标的正确方法是什么?通过查看STxxxx函数列表,我看不到一个似乎提供我需要的结果?

Pet*_*ger 2

geographikaGIS StackExchange提供的答案:

听起来你想去除条子SQL Server Spatial Tools项目中有一个用于此目的的函数- FilterArtifactsGeometry

可以在此处找到有关使用该功能的博客文章。

它有一个使用ringTolerance参数过滤掉小多边形的选项:

删除所有比提供的公差更薄的多边形环(例如,ring.STArea <ringTolerance xring.STLength)。值为 0 将不会删除任何环。

实际上,这允许检测并去除非常薄的多边形环(条子),同时留下更典型形状的多边形环。当然,我们的假设是,条子是不受欢迎的,但非条子环是理想的。