获取多个多边形的总边界框(使用C# NetCore NetTopologySuite)

问题描述 投票:0回答:2

我对使用多边形数据有点陌生(在C#中使用

NetTopologySuite
)并且想要获取多个多边形的边界框,具体取决于每个多边形的边界框是否与另一个多边形重叠(多边形聚类) ).

在此演示中,我有 3 个多边形,其边界框与其他多边形重叠,并且希望将红色边界框作为最终结果。

基本上我已经陷入了获取多边形边界框的困境。 我尝试过

Geometry.Boundary
,但这只是恢复了外环......

最后我可以迭代坐标,但我想知道

Geometry
Polygon
类是否内置了此功能(或者库是否内置了此功能)。

.net .net-core geometry geospatial nettopologysuite
2个回答
7
投票

这是获取一组 NTS 几何图形的边界框的最快方法:

var bbox = geoms[0].EnvelopeInternal;
for (int i = 1; i < geoms.Length; i++)
    bbox.ExpandToInclude(geoms[i].EnvelopeInternal);

// if you need it as a geometry finalize doing
var bboxGeom = geoms[0].Factory.ToGeometry(bbox);

0
投票

由于简单的多边形是点序列,因此多边形的边界框是由点之间组成的矩形(本身是多边形) [minimumX,minimumY] 在西南方向,并且 [maximumX,maximumY] 在东北。 最小值X是所有多边形中所有点的X的最小值,分别是最小值Y,最大值X,最大值Y。

所以范围矩形应该是:

extent = [
    [minimumX, minimumY],
    [maximumX, minimumY],
    [maximumX, maximumY],
    [minimumX, maximumY]
];

即使多边形不一定是简单的,因为它们可能包含多个简单的多边形,但计算应该是相同的。

© www.soinside.com 2019 - 2024. All rights reserved.