5

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

很多几何图形

我需要做的是创建一个代表所有这些多边形的外边界的多边形。因此,我使用了对我要求创建以下代码的先前空间问题的响应:

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

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

带裂缝的组合多边形

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

INSERT INTO @test SELECT geom.Reduce(0.001).STBuffer(100) FROM ForceBoundary

这改善了结果,但它并没有完全解决问题,而且还损害了外边界精度。

具有较少裂缝的组合多边形

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

4

2 回答 2

2

geographikaGIS StackExchange提供的答案:

听起来您想删除sliversSQL Server Spatial Tools项目中有一个用于此的功能- FilterArtifactsGeometry

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

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

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

在实践中,这允许检测和去除非常薄的多边形环(细长),同​​时单独留下更典型形状的多边形环。当然,假设是长条是不可取的,但非长条环是可取的。

于 2011-12-05T13:22:56.473 回答
0

您是否尝试过 [geom].SExteriorRing() 命令?

于 2011-12-01T12:27:24.497 回答