我有很多 Polygons
数据类型 Geometry
在 SQL Server 2008 中。下图显示了所有这些几何图形的选择如何可视化。
我需要做的是创建一个 Polygon 来表示所有这些多边形的外边界。所以我使用了 response given to a previous spatial question我要求创建以下代码:
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 函数列表,我看不到一个似乎提供了我需要的结果的函数?
最佳答案
答案由 geographika 提供在 GIS StackExchange :
听起来您想删除 slivers .在 SQL Server Spatial Tools 中有一个用于此的函数项目 - 过滤器工件几何 .
可以在 here 上找到有关使用该功能的博客文章.
这有一个使用 过滤掉小多边形的选项。环公差范围:
移除所有比提供的公差更薄的多边形环(例如 ring.STArea < ringTolerance x ring.STLength)。值为 0 将不会删除任何环。
In practice, this allows very thin polygon rings (slivers) to be detected and removed while leaving more typically shaped polygon rings alone. The presumption is, of course, that slivers are undesirable but non-sliver rings are desirable.
关于sql-server-2008 - 计算SQL Server 2008中几个Geometry对象的外边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8329110/