C# 一次函数调用中两个几何图形/多边形的并集和交集

C# 一次函数调用中两个几何图形/多边形的并集和交集,c#,geometry,geometry-surface,nettopologysuite,C#,Geometry,Geometry Surface,Nettopologysuite,我们正在使用库NetTopologySuite处理几何体/(多)多边形(在C#中) 在某些情况下,我们需要两个几何体的“并集”和“交集”(从功能上来说,我们需要两个几何体的并集,并确定该并集的重复部分) 我知道我可以使用CascadedPolygonUnion.union(新列表{geometry1,geometry2})获得一个并集和使用geometry1.intersection(geometry2)的交点 但是由于两个多边形的“交集”基本上是并集的“复制”部分,难道没有一个例程可以在一个函

我们正在使用库
NetTopologySuite
处理几何体/(多)多边形(在C#中)

在某些情况下,我们需要两个几何体的“并集”和“交集”(从功能上来说,我们需要两个几何体的并集,并确定该并集的重复部分)

我知道我可以使用
CascadedPolygonUnion.union(新列表{geometry1,geometry2})获得一个并集
和使用
geometry1.intersection(geometry2)
的交点

但是由于两个多边形的“交集”基本上是并集的“复制”部分,难道没有一个例程可以在一个函数调用中确定交集和并集吗


这个问题的主要原因是假设可能存在这样一个例程,因为它比两个单独的例程执行得更快,因为该例程共享有关重复区域的一些公共知识。

调用两个方法有什么问题。他们库的目标不是在功能上隐藏在单个方法中,而是让您选择想要的。是什么阻止你创建一个既计算又返回两个结果的方法呢?@Franck因为这两个操作似乎有一些关于“重复”区域的“重叠知识”,当在一个操作中确定两个“结果”时,我希望性能会有所提高,因此怀疑可能存在这样一个例程……通常布尔几何操作的工作方式不同。无论如何,性能不应该是一个问题。微观优化具有很大的递减性。您最好先优化代码的其他部分,或者如果代码的性能不够好,请找到另一个执行速度更快的库。我在一个定制的2D/3D CAD引擎中每秒执行数以万计的布尔并集/差分/交集运算。@Franck好的,谢谢你的洞察力-现在,我将保留这个问题,以便其他人仍然可以给出建议(如果有的话)。但是如果你根据你的评论做出回答,我会接受的。。。目前,评论+1;)
var result = GetUnionAndIntersection(geometry1, geometry2)
result.Union;
result.Intersection;