Pet*_*ger 5 spatial geospatial spatial-query sql-server-2008
我在SQL Server 2008中有很多Polygons数据类型Geometry.下图显示了所有这些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函数列表,我看不到一个似乎提供我需要的结果?
geographika在GIS StackExchange提供的答案:
听起来你想去除条子。SQL Server Spatial Tools项目中有一个用于此目的的函数- FilterArtifactsGeometry。
可以在此处找到有关使用该功能的博客文章。
它有一个使用ringTolerance参数过滤掉小多边形的选项:
删除所有比提供的公差更薄的多边形环(例如,ring.STArea <ringTolerance xring.STLength)。值为 0 将不会删除任何环。
实际上,这允许检测并去除非常薄的多边形环(条子),同时留下更典型形状的多边形环。当然,我们的假设是,条子是不受欢迎的,但非条子环是理想的。
| 归档时间: |
|
| 查看次数: |
2715 次 |
| 最近记录: |