【问题标题】:NetTopologySuite squash multipolygon to polygonNetTopologySuite 将多多边形压缩为多边形
【发布时间】:2018-07-05 18:59:28
【问题描述】:

我在 aspnetcore 工作,使用最新的 GeoAPI 和 NetTopologySuite 版本作为核心。我正在尝试做的事情应该相当简单,但我似乎无法通过谷歌搜索找到正确的方法。或者说实话,这让谷歌搜索变得更加困难。

希望有人能把我踢向正确的方向。

我有一个多多边形,它可能由一个或多个多边形组成。我想围绕该多面体的点创建一个缓冲区,直到 X 距离。这基本上是具有同心兴趣区域的地图叠加层。给定的兴趣点可能落在原始多多边形的形状中……或者它可能落在第一个或第二个缓冲区中。有点像洋葱,如果洋葱的核心有随机的形状。

第一部分很简单。只需迭代多面体的点并使用缓冲区方法将缓冲区应用于每个点:

var bufferZonePoints = new List<IGeometry>();
foreach(var point in multiPolygon.Coordinates)
{
   bufferZonePoints.Add(point.Buffer(x));
}

var bufferZone = this.geometryFactory.CreateMultiPolygon(bufferZonePoints);

没关系。但它给了我另一个由数千个点组成的多面体。当我将它用作地图叠加层时,我会在原始形状的模糊轮廓之后得到一个圆圈的飓风,看起来像一张螺旋图。我想要的基本上是所有缓冲区圆的外边界,没有中心的所有点。

我尝试在多面体上做一个 ConvexHull,起初它看起来是正确的,直到我意识到它正在削减外部的角度,以便让所有这些点都适合最小的多边形(这就是凸包在之后所做的全部)。但这会导致我覆盖的内容出现问题。一些兴趣点可能在实际缓冲区之外,但如果凸包决定修整该区域的凹凸区域,则在内部。 (我希望这是有道理的)。

基本上,我要做的是将由所有这些缓冲点组成的多面体,并将其压缩成一个由缓冲区的所有最外边界组成的单个多边形。但是中间没有所有的螺旋计垃圾。我真的不想要一个 ConvexHull。我也尝试过 Union 和 GeometryCombiner 类,但这些都没有做我想要的。

我不知道这是否有助于使泥浆更清晰,但是 QGIS 中有一个设置,当你向下压两个圆圈并且圆圈会重叠时,它们会像肥皂泡一样组合成一个大斑点,并且它们之间的边界消失了.这就是我试图通过代码做的事情。

这有意义吗?有人可以帮忙吗?

【问题讨论】:

    标签: .net-core geometry nettopologysuite geoapi


    【解决方案1】:

    在继续试验我的地图工具之后。看来 Union 确实给了我想要的结果。

    我从两个相距足够远的多边形开始,以明确发生了什么,对它们进行联合,然后只返回它们组合的外壳。随着我向其中添加更多缓冲点,耻辱变得更加明显。

    这正是我想要的。

    不过还是谢谢!希望这对其他人有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-28
      • 2019-07-23
      • 2012-10-31
      • 2021-03-18
      • 1970-01-01
      • 2013-03-20
      相关资源
      最近更新 更多