我计划制作可以测试钻孔是否穿过断层的功能。我的第一个想法是制作一个工作步骤组件,该组件将钻孔和故障解释作为输入并返回交叉点的数量。我已经做了一个检查故障解释是否与表面相交的工作步骤。该函数的核心如下:
ICoordinateReferenceSystem inputCRS = PetrelProject.PrimaryProject.CoordinateReferenceSystem;
SpatialUnitsPolicy unitsPolicy = SpatialUnitsPolicy.AllDataInSI;
SpatialContext spatialCtx = new SpatialContext(inputCRS, unitsPolicy);
ISurfaceIntersectionService sis = CoreSystem.GetService<ISurfaceIntersectionService>(arguments.Surface);
foreach (FaultInterpretationPolyline p in arguments.Fault.GetPolylines()) {
IEnumerable<PolylineSurfaceIntersection> intersections = sis.GetSurfacePolyLineIntersection(arguments.Surface, p.Polyline);
foreach (PolylineSurfaceIntersection intersection in intersections) {
arguments.NumberOfIntersections++;
}
}
以上工作正常,我想我可以沿着相同的线做一些事情来计算折线(井轨迹)和从代表故障解释的折线集合生成的表面之间的交点。关键问题是,有没有办法从一组折线中获取/生成表面?故障解释可以显示为一个表面(三角化),这个表面是否可以从 api 访问?从 api 返回的表面必须能够用作 ISurfaceIntersectionService 的参数。如果通过 Ocean api 无法做到这一点,有没有一种方法可以让用户从断层解释中预先准备断层解释?或者也许有一种完全不同的方法可以有效地解决上述问题?