Вычисление интерпретации ошибок и пересечений полилиний - PullRequest
0 голосов
/ 30 ноября 2011

Я планирую создать функциональность, которая может проверить, пересекает ли скважина неисправность.Моя первая идея состояла в том, чтобы создать компонент рабочего шага, который принимает в качестве входных данных скважину и интерпретацию неисправности и возвращает количество пересечений.Я уже сделал рабочий шаг, который проверяет, пересекает ли интерпретация ошибки поверхность.Суть этой функции заключается в следующем:

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, есть ли способ, чтобы пользователь мог подготовить интерпретацию неисправностей заранее, создавая поверхности из интерпретаций неисправностей?Или, может быть, существует совершенно другой подход для эффективного решения вышесказанного?

1 Ответ

1 голос
/ 22 декабря 2011

Проблема, с которой вы столкнетесь, - это создание поверхности. В настоящее время вы можете создать только RegularHeightFieldSurface, который представляет собой поверхность с точками, расположенными на решетке. FaultIntersection обычно не подходит этой модели, так как его точки не выбираются на регулярной решетке. Поэтому создание поверхности для точек из набора выборок интерпретации неисправностей является проблемой.

...