sql-server-2008 - 计算SQL Server 2008中几个Geometry对象的外边界

标签 sql-server-2008 geospatial spatial spatial-query

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

Lots of Geometrys

我需要做的是创建一个 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

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

Combined polygons with cracks

所以我用以下更改更新了我的查询:
INSERT INTO @test SELECT geom.Reduce(0.001).STBuffer(100) FROM ForceBoundary

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

Combined polygons with less cracks

实现这一目标的正确方法是什么? 通过查看 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/

相关文章:

sql - XQuery [nodes()] : Syntax error near '<eof>' , 需要一个步骤表达式

sql - 规范化 SQL 数据库

sql - 使用带连字符的 CONTAINS 谓词的 T-SQL

sql-server - 获取记录子集以及总记录计数

postgresql - PostgreSQL 是否实现地理空间关系查询?

asp.net-mvc - Fluent NHibernate 中的地理空间点映射

r - 如何仅向外缓冲一组具有公共(public)边的多边形(从边缘,而不是内部 "frontiers")

solr - 是否可以在 geodist 中使用多值字段

javascript - 计算 2 个纬度/经度之间道路折线上的距离

sql-server-2008 - 从 varbinary(max) 读取 STGeomCollFromWKB 的问题