forked from ddrilling/AsbCloudServer
Skip телеметрий
This commit is contained in:
parent
315c259a25
commit
0c7aac40ff
@ -235,7 +235,12 @@ public class DetectedOperationService : IDetectedOperationService
|
||||
break;
|
||||
}
|
||||
|
||||
positionBegin += 1;
|
||||
var skip = 1;
|
||||
|
||||
while (IsChangingTelemetryInterval(detectableTelemetries[positionBegin], detectableTelemetries[positionBegin + skip]))
|
||||
skip++;
|
||||
|
||||
positionBegin += skip;
|
||||
}
|
||||
|
||||
return (detectableTelemetries[positionBegin].DateTime, detectedOperations);
|
||||
@ -252,6 +257,21 @@ public class DetectedOperationService : IDetectedOperationService
|
||||
return result;
|
||||
}
|
||||
|
||||
private static bool IsChangingTelemetryInterval(DetectableTelemetry telemetryBegin, DetectableTelemetry telemetryEnd)
|
||||
{
|
||||
return telemetryBegin.Mode == telemetryEnd.Mode &&
|
||||
EqualParameter(telemetryBegin.WellDepth, telemetryEnd.WellDepth, 0.01f) &&
|
||||
EqualParameter(telemetryBegin.Pressure, telemetryEnd.Pressure, 0.1f) &&
|
||||
EqualParameter(telemetryBegin.HookWeight, telemetryEnd.HookWeight, 0.1f) &&
|
||||
EqualParameter(telemetryBegin.BlockPosition, telemetryEnd.BlockPosition, 0.01f) &&
|
||||
EqualParameter(telemetryBegin.BitDepth, telemetryEnd.BitDepth, 0.01f) &&
|
||||
EqualParameter(telemetryBegin.RotorSpeed, telemetryEnd.RotorSpeed, 0.01f) &&
|
||||
EqualParameter(telemetryBegin.AxialLoad, telemetryEnd.AxialLoad, 0.1f);
|
||||
|
||||
bool EqualParameter(float value, float origin, float tolerance) =>
|
||||
value <= origin + tolerance && value >= origin - tolerance;
|
||||
}
|
||||
|
||||
private static IEnumerable<DetectedOperationDrillersStatDto> GetOperationsDrillersStat(IEnumerable<DetectedOperationWithDrillerDto> operations)
|
||||
{
|
||||
var groups = operations.GroupBy(o => o.Driller);
|
||||
|
@ -48,12 +48,12 @@ namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors
|
||||
|
||||
while (positionEnd < end)
|
||||
{
|
||||
//TODO: поиск провалов телеметрии
|
||||
|
||||
positionEnd += 1;
|
||||
if (positionEnd > end)
|
||||
break;
|
||||
|
||||
//TODO: поиск провалов телеметрий. Следует обсудить, так как алгоритмы теряют в точности.
|
||||
|
||||
idReasonOfEnd = DetectEnd(telemetry, positionEnd, previousOperation);
|
||||
|
||||
if (idReasonOfEnd != IdReasonOfEnd_NotDetected)
|
||||
|
Loading…
Reference in New Issue
Block a user