Esempio n. 1
0
        /// <summary>
        /// Validates the request and throws if validation fails.
        /// </summary>
        public override void Validate()
        {
            const int NUM_TOLERANCES = 7;

            base.Validate();

            if (CutFillTolerances?.Length != NUM_TOLERANCES)
            {
                throw new ServiceException(HttpStatusCode.BadRequest,
                                           new ContractExecutionResult(ContractExecutionStatesEnum.ValidationError,
                                                                       $"{NUM_TOLERANCES} tolerances must be specified for cut-fill details"));
            }

            Filter?.Validate();

            LiftBuildSettings?.Validate();

            if (DesignDescriptor != null)
            {
                DesignDescriptor.Validate();
            }
            else
            {
                throw new ServiceException(HttpStatusCode.BadRequest,
                                           new ContractExecutionResult(ContractExecutionStatesEnum.ValidationError,
                                                                       "Design must be specified for cut-fill details"));
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Validates all properties
        /// </summary>
        public override void Validate()
        {
            base.Validate();

            LiftBuildSettings?.Validate();
            Filter?.Validate();
        }
Esempio n. 3
0
 /// <summary>
 /// Overload constructor with parameters.
 /// </summary>
 /// <param name="projectID"></param>
 /// <param name="projectUid"></param>
 /// <param name="callId"></param>
 /// <param name="cmvSettings"></param>
 /// <param name="liftBuildSettings"></param>
 /// <param name="filter"></param>
 /// <param name="filterID"></param>
 /// <param name="overrideStartUTC"></param>
 /// <param name="overrideEndUTC"></param>
 /// <param name="overrideAssetIds"></param>
 /// <param name="isCustomCMVTargets"></param>
 public CMVRequest(
     long projectID,
     Guid?projectUid,
     Guid?callId,
     CMVSettings cmvSettings,
     LiftBuildSettings liftBuildSettings,
     FilterResult filter,
     long filterID,
     DateTime?overrideStartUTC,
     DateTime?overrideEndUTC,
     List <long> overrideAssetIds,
     bool isCustomCMVTargets = false
     )
 {
     ProjectId          = projectID;
     ProjectUid         = projectUid;
     CallId             = callId;
     CmvSettings        = cmvSettings;
     LiftBuildSettings  = liftBuildSettings;
     Filter             = filter;
     FilterID           = filterID;
     OverrideStartUTC   = overrideStartUTC;
     OverrideEndUTC     = overrideEndUTC;
     OverrideAssetIds   = overrideAssetIds;
     IsCustomCMVTargets = isCustomCMVTargets;
 }
Esempio n. 4
0
 public ProfileProductionDataRequest(
     long?projectID,
     Guid?callId,
     ProductionDataType profileType,
     FilterResult filter,
     long?filterID,
     DesignDescriptor alignmentDesign,
     ProfileGridPoints gridPoints,
     ProfileLLPoints wgs84Points,
     double?startStation,
     double?endStation,
     LiftBuildSettings liftBuildSettings,
     bool returnAllPassesAndLayers
     )
 {
     ProjectId                = projectID;
     CallId                   = callId;
     ProfileType              = profileType;
     Filter                   = filter;
     FilterID                 = filterID;
     AlignmentDesign          = alignmentDesign;
     GridPoints               = gridPoints;
     WGS84Points              = wgs84Points;
     this.StartStation        = startStation;
     EndStation               = endStation;
     LiftBuildSettings        = liftBuildSettings;
     ReturnAllPassesAndLayers = returnAllPassesAndLayers;
 }
Esempio n. 5
0
 public override void Validate()
 {
     LiftBuildSettings?.Validate();
     AdditionalSpatialFilter?.Validate();
     TopFilter?.Validate();
     BaseFilter?.Validate();
 }
Esempio n. 6
0
 /// <summary>
 /// Overload constructor with parameters.
 /// </summary>>
 public ExportReport(long projectId, Guid?projectUid, LiftBuildSettings liftBuildSettings, FilterResult filter, long filterID, Guid?callid, bool cellSizeRq, string callerID, CoordType coordtype,
                     DateTime dateFromUTC, DateTime dateToUTC, double tolerance, bool timeStampRequired, bool restrictSize, bool rawData, BoundingExtents3D prjExtents, bool precheckOnly, OutputTypes outpuType,
                     Machine[] machineList, bool includeSrvSurface, string fileName, ExportTypes exportType, UserPreferences userPrefs)
 {
     ProjectId             = projectId;
     ProjectUid            = projectUid;
     LiftBuildSettings     = liftBuildSettings;
     Filter                = filter;
     FilterID              = filterID;
     CallId                = callid;
     CellSizeRequired      = cellSizeRq;
     CallerId              = callerID;
     CoordType             = coordtype;
     DateFromUTC           = dateFromUTC;
     DateToUTC             = dateToUTC;
     ExportType            = exportType;
     Filename              = fileName;
     IncludeSurveydSurface = includeSrvSurface;
     MachineList           = machineList;
     OutputType            = outpuType;
     Precheckonly          = precheckOnly;
     ProjectExtents        = prjExtents;
     RawData               = rawData;
     RestrictSize          = restrictSize;
     TimeStampRequired     = timeStampRequired;
     Tolerance             = tolerance;
     UserPrefs             = userPrefs;
 }
Esempio n. 7
0
        /// <summary>
        /// Validates all properties
        /// </summary>
        public override void Validate()
        {
            base.Validate();
            TemperatureSettings.Validate();
            if (LiftBuildSettings != null)
            {
                LiftBuildSettings.Validate();
            }
            if (Filter != null)
            {
                Filter.Validate();
            }

            if (OverrideStartUTC.HasValue || OverrideEndUTC.HasValue)
            {
                if (OverrideStartUTC.HasValue && OverrideEndUTC.HasValue)
                {
                    if (OverrideStartUTC.Value > OverrideEndUTC.Value)
                    {
                        throw new ServiceException(HttpStatusCode.BadRequest,
                                                   new ContractExecutionResult(ContractExecutionStatesEnum.ValidationError,
                                                                               "Override startUTC must be earlier than override endUTC"));
                    }
                }
                else
                {
                    throw new ServiceException(HttpStatusCode.BadRequest,
                                               new ContractExecutionResult(ContractExecutionStatesEnum.ValidationError,
                                                                           "If using an override date range both dates must be provided"));
                }
            }
        }
Esempio n. 8
0
 /// <summary>
 /// Overload constructor with parameters.
 /// </summary>
 public TemperatureDetailsRequest(long projectId, Guid?projectUid, double[] targets, FilterResult filter, LiftBuildSettings liftBuildSettings)
 {
     ProjectId         = projectId;
     ProjectUid        = projectUid;
     Targets           = targets;
     Filter            = filter;
     LiftBuildSettings = liftBuildSettings;
 }
Esempio n. 9
0
 private PassCountDetailedResult ConvertResult(TPassCountDetails details, LiftBuildSettings liftSettings)
 {
     return(new PassCountDetailedResult(
                ((liftSettings != null) && (liftSettings.OverridingTargetPassCountRange != null))
       ? liftSettings.OverridingTargetPassCountRange
       : (!details.IsTargetPassCountConstant ? new TargetPassCountRange(0, 0) : new TargetPassCountRange(details.ConstantTargetPassCountRange.Min, details.ConstantTargetPassCountRange.Max)),
                details.IsTargetPassCountConstant,
                details.Percents, details.TotalAreaCoveredSqMeters));
 }
Esempio n. 10
0
 /// <summary>
 /// Overload constructor with parameters.
 /// </summary>
 /// <param name="projectId"></param>
 /// <param name="projectUid"></param>
 /// <param name="tolerances"></param>
 /// <param name="filter"></param>
 /// <param name="liftBuildSettings"></param>
 /// <param name="designDescriptor"></param>
 public CutFillDetailsRequest(long projectId, Guid?projectUid, double[] tolerances, FilterResult filter, LiftBuildSettings liftBuildSettings, DesignDescriptor designDescriptor)
 {
     ProjectId         = projectId;
     ProjectUid        = projectUid;
     CutFillTolerances = tolerances;
     Filter            = filter;
     LiftBuildSettings = liftBuildSettings;
     DesignDescriptor  = designDescriptor;
 }
Esempio n. 11
0
        public void ValidatePassCountTargetRangeFailTest()
        {
            //min pass count target > max pass count target
            LiftBuildSettings settings = new LiftBuildSettings(
                new CCVRangePercentage(30.0, 70.0), false, 0.0, 0.0, 0.2f, LiftDetectionType.Automatic,
                LiftThicknessType.Compacted, new MDPRangePercentage(35.0, 75.0), false, 0.0f, 0, 0,
                new TargetPassCountRange(10, 1), new TemperatureWarningLevels(500, 700), false, _liftThicknessTarget, null);

            Assert.ThrowsException <ServiceException>(() => settings.Validate());
        }
Esempio n. 12
0
        public override void Validate()
        {
            base.Validate();
            ValidatePalettes(Palettes, Mode);
            LiftBuildSettings?.Validate();

            ValidateDesign(DesignDescriptor, Mode, ComputeVolType);

            if (Mode == DisplayMode.VolumeCoverage)
            {
                ValidateVolumesFilters(ComputeVolType, Filter1, FilterId1, Filter2, FilterId2);
            }
        }
Esempio n. 13
0
        /// <summary>
        /// Validates all properties
        /// </summary>
        public override void Validate()
        {
            base.Validate();
            ValidatePalettes(Palettes, Mode);

            //Compaction settings
            LiftBuildSettings?.Validate();

            //Volumes
            //mode == DisplayMode.VolumeCoverage
            //computeVolNoChangeTolerance and computeVolType must be provided but since not nullable types they always will have a value anyway
            ValidateDesign(DesignDescriptor, Mode, ComputeVolumesType);

            //Summary volumes: v1 has mode VolumeCoverage, v2 has mode CutFill but computeVolType is set
            if (Mode == DisplayMode.VolumeCoverage ||
                (Mode == DisplayMode.CutFill &&
                 (ComputeVolumesType == VolumesType.Between2Filters ||
                  ComputeVolumesType == VolumesType.BetweenDesignAndFilter ||
                  ComputeVolumesType == VolumesType.BetweenFilterAndDesign)))
            {
                ValidateVolumesFilters(ComputeVolumesType, this.Filter1, this.FilterId1, this.Filter2, this.FilterId2);
            }

            if (BoundBoxLatLon == null && BoundBoxGrid == null)
            {
                throw new ServiceException(HttpStatusCode.BadRequest,
                                           new ContractExecutionResult(ContractExecutionStatesEnum.ValidationError,
                                                                       "Bounding box required either in lat/lng or grid coordinates"));
            }

            if (BoundBoxLatLon != null && BoundBoxGrid != null)
            {
                throw new ServiceException(HttpStatusCode.BadRequest,
                                           new ContractExecutionResult(ContractExecutionStatesEnum.ValidationError,
                                                                       "Only one bounding box is allowed"));
            }

            if (Mode == DisplayMode.TargetThicknessSummary && LiftBuildSettings.LiftThicknessTarget == null)
            {
                throw new ServiceException(HttpStatusCode.BadRequest,
                                           new ContractExecutionResult(ContractExecutionStatesEnum.ValidationError,
                                                                       "For this mode LiftThickness Target in LIftBuildSettings must be specified."));
            }

            if (Mode == DisplayMode.TargetSpeedSummary && LiftBuildSettings.MachineSpeedTarget == null)
            {
                throw new ServiceException(HttpStatusCode.BadRequest,
                                           new ContractExecutionResult(ContractExecutionStatesEnum.ValidationError,
                                                                       "For this mode SpeedSummary Target in LiftBuildSettings must be specified."));
            }
        }
Esempio n. 14
0
 /// <summary>
 /// Overload constructor with parameters.
 /// </summary>
 /// <param name="projectID"></param>
 /// <param name="callId"></param>
 /// <param name="liftBuildSettings"></param>
 /// <param name="filter"></param>
 /// <param name="filterID"></param>
 /// <returns></returns>
 public CCARequest(
     long projectID,
     Guid?callId,
     LiftBuildSettings liftBuildSettings,
     FilterResult filter,
     long filterID
     )
 {
     ProjectId         = projectID;
     CallId            = callId;
     LiftBuildSettings = liftBuildSettings;
     Filter            = filter;
     FilterID          = filterID;
 }
Esempio n. 15
0
 /// <summary>
 /// Overload constructor with parameters.
 /// </summary>
 /// <param name="projectId"></param>
 /// <param name="callId"></param>
 /// <param name="mode"></param>
 /// <param name="palettes"></param>
 /// <param name="liftBuildSettings"></param>
 /// <param name="computeVolType"></param>
 /// <param name="computeVolNoChangeTolerance"></param>
 /// <param name="designDescriptor"></param>
 /// <param name="filter1"></param>
 /// <param name="filterId1"></param>
 /// <param name="filter2"></param>
 /// <param name="filterId2"></param>
 /// <param name="filterLayerMethod"></param>
 /// <param name="boundingBoxLatLon"></param>
 /// <param name="boundingBoxGrid"></param>
 /// <param name="width"></param>
 /// <param name="height"></param>
 /// <param name="representationalDisplayColor"></param>
 /// <param name="cmvDetailsColorNumber"></param>
 /// <param name="cmvPercentChangeColorNumber"></param>
 /// <param name="setSummaryDataLayersVisibility"></param>
 public TileRequest(
     long projectId,
     Guid?projectUid,
     Guid?callId,
     DisplayMode mode,
     List <ColorPalette> palettes,
     LiftBuildSettings liftBuildSettings,
     VolumesType computeVolType,
     double computeVolNoChangeTolerance,
     DesignDescriptor designDescriptor,
     FilterResult filter1,
     long filterId1,
     FilterResult filter2,
     long filterId2,
     FilterLayerMethod filterLayerMethod,
     BoundingBox2DLatLon boundingBoxLatLon,
     BoundingBox2DGrid boundingBoxGrid,
     ushort width,
     ushort height,
     uint representationalDisplayColor   = 0,
     uint cmvDetailsColorNumber          = 5,
     uint cmvPercentChangeColorNumber    = 6,
     bool setSummaryDataLayersVisibility = true,
     bool explicitFilters = false)
 {
     ProjectId                      = projectId;
     ProjectUid                     = projectUid;
     CallId                         = callId;
     Mode                           = mode;
     Palettes                       = palettes;
     LiftBuildSettings              = liftBuildSettings;
     ComputeVolumesType             = computeVolType;
     ComputeVolNoChangeTolerance    = computeVolNoChangeTolerance;
     DesignDescriptor               = designDescriptor;
     Filter1                        = filter1;
     FilterId1                      = filterId1;
     Filter2                        = filter2;
     FilterId2                      = filterId2;
     FilterLayerMethod              = filterLayerMethod;
     BoundBoxLatLon                 = boundingBoxLatLon;
     BoundBoxGrid                   = boundingBoxGrid;
     Width                          = width;
     Height                         = height;
     RepresentationalDisplayColor   = representationalDisplayColor;
     p_cmvDetailsColorNumber        = cmvDetailsColorNumber;
     p_cmvPercentChangeColorNumber  = cmvPercentChangeColorNumber;
     SetSummaryDataLayersVisibility = setSummaryDataLayersVisibility;
     ExplicitFilters                = explicitFilters;
 }
Esempio n. 16
0
 /// <summary>
 /// Override constructor with parameters. Create instance of ElevationStatisticsRequest.
 /// </summary>
 public ElevationStatisticsRequest(
     long projectId,
     Guid?projectUid,
     Guid?callId,
     FilterResult filter,
     long filterId,
     LiftBuildSettings liftBuildSettings)
 {
     ProjectId         = projectId;
     ProjectUid        = projectUid;
     CallId            = callId;
     Filter            = filter;
     FilterID          = filterId;
     LiftBuildSettings = liftBuildSettings;
 }
Esempio n. 17
0
 /// <summary>
 /// Overload constructor with parameters.
 /// </summary>
 /// <param name="projectId"></param>
 /// <param name="projectUid"></param>
 /// <param name="callId"></param>
 /// <param name="liftBuildSettings"></param>
 /// <param name="filter"></param>
 /// <param name="filterId"></param>
 /// <returns></returns>
 public SummarySpeedRequest(
     long projectId,
     Guid?projectUid,
     Guid?callId,
     LiftBuildSettings liftBuildSettings,
     FilterResult filter,
     int filterId)
 {
     ProjectId         = projectId;
     ProjectUid        = projectUid;
     CallId            = callId;
     LiftBuildSettings = liftBuildSettings;
     Filter            = filter;
     FilterId          = filterId;
 }
Esempio n. 18
0
        public void ValidateSuccessTest()
        {
            LiftBuildSettings settings = new LiftBuildSettings(
                new CCVRangePercentage(30.0, 70.0), false, 0.0, 0.0, 0.2f, LiftDetectionType.Automatic,
                LiftThicknessType.Compacted, new MDPRangePercentage(35.0, 75.0), false, 0.0f, 0, 0, null, null, null, _liftThicknessTarget, null);

            settings.Validate();

            settings = new LiftBuildSettings(
                new CCVRangePercentage(30.0, 70.0), false, 0.0, 0.0, 0.2f, LiftDetectionType.Automatic,
                LiftThicknessType.Compacted, new MDPRangePercentage(35.0, 75.0),
                true, 2.0f, 140, 125, new TargetPassCountRange(3, 3),
                new TemperatureWarningLevels(300, 800), false, _liftThicknessTarget, null);
            settings.Validate();
        }
Esempio n. 19
0
 /// <summary>
 /// Overload constructor with parameters.
 /// </summary>
 /// <param name="projectID"></param>
 /// <param name="projectUid"></param>
 /// <param name="callId"></param>
 /// <param name="liftBuildSettings"></param>
 /// <param name="filter"></param>
 /// <param name="filterID"></param>
 /// <param name="cmvChangeSummaryValues"></param>
 public CMVChangeSummaryRequest(
     long projectID,
     Guid?projectUid,
     Guid?callId,
     LiftBuildSettings liftBuildSettings,
     FilterResult filter,
     int filterID,
     double[] cmvChangeSummaryValues
     )
 {
     ProjectId              = projectID;
     ProjectUid             = projectUid;
     CallId                 = callId;
     LiftBuildSettings      = liftBuildSettings;
     Filter                 = filter;
     FilterId               = filterID;
     CMVChangeSummaryValues = cmvChangeSummaryValues;
 }
Esempio n. 20
0
 public static CompactionReportGridRequest CreateCompactionReportGridRequest(
     long?projectId,
     Guid?projectUid,
     FilterResult filter,
     long filterId,
     LiftBuildSettings liftBuildSettings,
     bool reportElevation,
     bool reportCMV,
     bool reportMDP,
     bool reportPassCount,
     bool reportTemperature,
     bool reportCutFill,
     DesignDescriptor designFile,
     double?gridInterval,
     GridReportOption gridReportOption,
     double startNorthing,
     double startEasting,
     double endNorthing,
     double endEasting,
     double azimuth)
 {
     return(new CompactionReportGridRequest
     {
         ProjectId = projectId,
         ProjectUid = projectUid,
         Filter = filter,
         FilterID = filterId,
         LiftBuildSettings = liftBuildSettings,
         ReportElevation = reportElevation,
         ReportCMV = reportCMV,
         ReportMDP = reportMDP,
         ReportPassCount = reportPassCount,
         ReportTemperature = reportTemperature,
         ReportCutFill = reportCutFill,
         DesignFile = designFile,
         GridInterval = gridInterval ?? ValidationConstants3D.DEFAULT_SPACING_INTERVAL,
         GridReportOption = gridReportOption,
         StartNorthing = startNorthing,
         StartEasting = startEasting,
         EndNorthing = endNorthing,
         EndEasting = endEasting,
         Azimuth = azimuth
     });
 }
Esempio n. 21
0
        public void CPR_CanCreateCellPassesRequestTest()
        {
            var liftThicknessTarget = new LiftThicknessTarget {
                AboveToleranceLiftThickness = (float)0.001,
                BelowToleranceLiftThickness = (float)0.002,
                TargetLiftThickness         = (float)0.05
            };

            var validator = new DataAnnotationsValidator();

            CellPassesRequest cpRequest = CellPassesRequest.CreateCellPassRequest(544, null, null, null, null, 0, 0,
                                                                                  null);

            Assert.IsTrue(validator.TryValidate(cpRequest, out ICollection <ValidationResult> results));

            // invalid projectid
            cpRequest = CellPassesRequest.CreateCellPassRequest(-1, null, null, null, null, 0, 0, null);
            Assert.IsFalse(validator.TryValidate(cpRequest, out results));

            // full data
            CellAddress       cellAddress = CellAddress.CreateCellAddress(1, 2);
            Point             point       = Point.CreatePoint(1.0, 2.0);
            WGSPoint          wgsPoint    = new WGSPoint(1.0, 2.0);
            LiftBuildSettings settings    = new LiftBuildSettings(
                new CCVRangePercentage(30.0, 70.0), false, 0.0, 0.0, 0.2f, LiftDetectionType.Automatic,
                LiftThicknessType.Compacted, new MDPRangePercentage(35.0, 75.0),
                false, 0.0f, 0, 0, null, null, null, liftThicknessTarget, null);

            var filterResult = FilterResult.CreateFilterObsolete(null, null, null, null, null, null, 1, "", new List <long>(), true, false, null,
                                                                 new List <WGSPoint>(),
                                                                 new List <Point>(),
                                                                 false,
                                                                 new DesignDescriptor(1, FileDescriptor.EmptyFileDescriptor, 0),
                                                                 0, 0, 0, 0,
                                                                 null, new DesignDescriptor(1, FileDescriptor.EmptyFileDescriptor, 0),
                                                                 0, 0, 0,
                                                                 new List <MachineDetails>(),
                                                                 new List <long>(),
                                                                 false, GPSAccuracyType.Medium, false, null, null, null,
                                                                 new DesignDescriptor(1, FileDescriptor.EmptyFileDescriptor, 0));

            cpRequest = CellPassesRequest.CreateCellPassRequest(544, cellAddress, point, wgsPoint, settings, 0, 0, filterResult);
            Assert.IsTrue(validator.TryValidate(cpRequest, out results));
        }
Esempio n. 22
0
 public static CompactionReportStationOffsetRequest CreateRequest(
     long?projectId,
     Guid?projectUid,
     FilterResult filter,
     long filterId,
     LiftBuildSettings liftBuildSettings,
     bool reportElevation,
     bool reportCmv,
     bool reportMdp,
     bool reportPassCount,
     bool reportTemperature,
     bool reportCutFill,
     DesignDescriptor cutFillDesignDescriptor,
     DesignDescriptor alignmentDescriptor,
     double crossSectionInterval,
     double startStation,
     double endStation,
     double[] offsets,
     UserPreferenceData userPreferences,
     string projectTimezone)
 {
     return(new CompactionReportStationOffsetRequest
     {
         ProjectId = projectId,
         ProjectUid = projectUid,
         Filter = filter,
         FilterID = filterId,
         LiftBuildSettings = liftBuildSettings,
         ReportElevation = reportElevation,
         ReportCMV = reportCmv,
         ReportMDP = reportMdp,
         ReportPassCount = reportPassCount,
         ReportTemperature = reportTemperature,
         ReportCutFill = reportCutFill,
         DesignFile = cutFillDesignDescriptor,
         AlignmentFile = alignmentDescriptor,
         CrossSectionInterval = crossSectionInterval,
         StartStation = startStation,
         EndStation = endStation,
         Offsets = offsets,
         UserPreferences = userPreferences,
         ProjectTimezone = projectTimezone
     });
 }
Esempio n. 23
0
        /// <summary>
        /// Validates properties.
        /// </summary>
        ///
        public override void Validate()
        {
            base.Validate();

            // Compaction settings
            LiftBuildSettings?.Validate();

            if (ReportCutFill)
            {
                ValidateDesign(DesignFile, DisplayMode.CutFill, VolumesType.None);
            }

            if (!(ReportPassCount || ReportTemperature || ReportMDP || ReportCutFill || ReportCMV || ReportElevation))
            {
                throw new ServiceException(HttpStatusCode.BadRequest,
                                           new ContractExecutionResult(ContractExecutionStatesEnum.ValidationError,
                                                                       "There are no selected fields to be reported on"));
            }
        }
Esempio n. 24
0
 public CompactionProfileProductionDataRequest(
     long?projectID,
     Guid?projectUid,
     Guid?callId,
     ProductionDataType profileType,
     FilterResult filter,
     long?filterID,
     DesignDescriptor alignmentDesign,
     ProfileGridPoints gridPoints,
     ProfileLLPoints wgs84Points,
     double startStation,
     double endStation,
     LiftBuildSettings liftBuildSettings,
     bool returnAllPassesAndLayers,
     DesignDescriptor cutFillDesignDescriptor,
     FilterResult baseFilter,
     FilterResult topFilter,
     VolumeCalcTypes?volumeCalcType,
     DesignDescriptor volumeDesignDescriptor,
     bool explicitFilters = false
     )
 {
     ProjectId                = projectID;
     ProjectUid               = projectUid;
     CallId                   = callId;
     ProfileType              = profileType;
     Filter                   = filter;
     FilterID                 = filterID;
     AlignmentDesign          = alignmentDesign;
     GridPoints               = gridPoints;
     WGS84Points              = wgs84Points;
     base.StartStation        = startStation;
     EndStation               = endStation;
     LiftBuildSettings        = liftBuildSettings;
     ReturnAllPassesAndLayers = returnAllPassesAndLayers;
     CutFillDesignDescriptor  = cutFillDesignDescriptor;
     BaseFilter               = baseFilter;
     TopFilter                = topFilter;
     VolumeCalcType           = volumeCalcType;
     VolumeDesignDescriptor   = volumeDesignDescriptor;
     ExplicitFilters          = explicitFilters;
 }
Esempio n. 25
0
 /// <summary>
 /// Overload constructor with parameters.
 /// </summary>
 public PassCounts(
     long projectId,
     Guid?projectUid,
     PassCountSettings passCountSettings,
     LiftBuildSettings liftBuildSettings,
     FilterResult filter,
     long filterID,
     DateTime?overrideStartUTC,
     DateTime?overrideEndUTC,
     List <long> overrideAssetIds
     )
 {
     ProjectId              = projectId;
     ProjectUid             = projectUid;
     this.passCountSettings = passCountSettings;
     this.liftBuildSettings = liftBuildSettings;
     Filter           = filter;
     FilterID         = filterID;
     OverrideStartUTC = overrideStartUTC;
     OverrideEndUTC   = overrideEndUTC;
     OverrideAssetIds = overrideAssetIds;
 }
Esempio n. 26
0
 /// <summary>
 /// Overload constructor with parameters.
 /// </summary>
 public PatchRequest(
     long?projectId,
     Guid?projectUid,
     Guid?callId,
     DisplayMode mode,
     List <ColorPalette> palettes,
     LiftBuildSettings liftBuildSettings,
     bool renderColorValues,
     VolumesType computeVolType,
     double computeVolNoChangeTolerance,
     DesignDescriptor designDescriptor,
     FilterResult filter1,
     FilterResult filter2,
     FilterLayerMethod filterLayerMethod,
     int patchNumber,
     int patchSize,
     bool includeTimeOffsets = false
     )
 {
     ProjectId                   = projectId;
     ProjectUid                  = projectUid;
     CallId                      = callId;
     Mode                        = mode;
     Palettes                    = palettes;
     LiftBuildSettings           = liftBuildSettings;
     RenderColorValues           = renderColorValues;
     ComputeVolType              = computeVolType;
     ComputeVolNoChangeTolerance = computeVolNoChangeTolerance;
     DesignDescriptor            = designDescriptor;
     Filter1                     = filter1;
     FilterId1                   = filter1?.Id ?? 0;
     Filter2                     = filter2;
     FilterId2                   = filter2?.Id ?? 0;
     FilterLayerMethod           = filterLayerMethod;
     PatchNumber                 = patchNumber;
     PatchSize                   = patchSize;
     IncludeTimeOffsets          = includeTimeOffsets;
 }
Esempio n. 27
0
 /// <summary>
 /// Overload constructor with parameters.
 /// </summary>
 /// <param name="projectID"></param>
 /// <param name="projectUID"></param>
 /// <param name="callId"></param>
 /// <param name="mdpSettings"></param>
 /// <param name="liftBuildSettings"></param>
 /// <param name="filter"></param>
 /// <param name="filterId"></param>
 /// <param name="overrideStartUtc"></param>
 /// <param name="overrideEndUtc"></param>
 /// <param name="overrideAssetIds"></param>
 /// <returns></returns>
 public MDPRequest(
     long projectID,
     Guid?projectUID,
     Guid?callId,
     MDPSettings mdpSettings,
     LiftBuildSettings liftBuildSettings,
     FilterResult filter,
     long filterId,
     DateTime?overrideStartUtc,
     DateTime?overrideEndUtc,
     List <long> overrideAssetIds)
 {
     ProjectId         = projectID;
     ProjectUid        = projectUID;
     CallId            = callId;
     MdpSettings       = mdpSettings;
     LiftBuildSettings = liftBuildSettings;
     Filter            = filter;
     FilterId          = filterId;
     OverrideStartUtc  = overrideStartUtc;
     OverrideEndUtc    = overrideEndUtc;
     OverrideAssetIds  = overrideAssetIds;
 }
Esempio n. 28
0
 /// <summary>
 /// Overload constructor with parameters.
 /// </summary>
 /// <param name="projectID"></param>
 /// <param name="projectUID"></param>
 /// <param name="callId"></param>
 /// <param name="temperatureSettings"></param>
 /// <param name="liftBuildSettings"></param>
 /// <param name="filter"></param>
 /// <param name="filterID"></param>
 /// <param name="overrideStartUTC"></param>
 /// <param name="overrideEndUTC"></param>
 /// <param name="overrideAssetIds"></param>
 /// <returns></returns>
 public TemperatureRequest(
     long projectID,
     Guid?projectUID,
     Guid?callId,
     TemperatureSettings temperatureSettings,
     LiftBuildSettings liftBuildSettings,
     FilterResult filter,
     long filterID,
     DateTime?overrideStartUTC,
     DateTime?overrideEndUTC,
     List <long> overrideAssetIds
     )
 {
     ProjectId           = projectID;
     ProjectUid          = projectUID;
     CallId              = callId;
     TemperatureSettings = temperatureSettings;
     LiftBuildSettings   = liftBuildSettings;
     Filter              = filter;
     FilterID            = filterID;
     OverrideStartUTC    = overrideStartUTC;
     OverrideEndUTC      = overrideEndUTC;
     OverrideAssetIds    = overrideAssetIds;
 }
Esempio n. 29
0
        private CompactionProfileResult <CompactionProfileCell> ProcessProductionDataProfileCells(List <ProfileCellData> profileCells, double gridDistanceBetweenProfilePoints, LiftBuildSettings liftBuildSettings)
        {
            var profile = new CompactionProfileResult <CompactionProfileCell>();

            profile.results = new List <CompactionProfileCell>();
            ProfileCellData prevCell = null;

            foreach (var currCell in profileCells)
            {
                var gapExists = ProfilesHelper.CellGapExists(prevCell, currCell, out double prevStationIntercept);

                if (gapExists)
                {
                    var gapCell = new CompactionProfileCell(GapCell);
                    gapCell.station = prevStationIntercept;
                    profile.results.Add(gapCell);
                }

                var lastPassHeight = currCell.LastPassHeight == VelociraptorConstants.NULL_SINGLE
          ? float.NaN
          : currCell.LastPassHeight;
                var lastCompositeHeight = currCell.CompositeLastPassHeight == VelociraptorConstants.NULL_SINGLE
        ? float.NaN
          : currCell.CompositeLastPassHeight;

                var designHeight = currCell.DesignHeight == VelociraptorConstants.NULL_SINGLE
        ? float.NaN
          : currCell.DesignHeight;
                bool noCCVValue = currCell.TargetCCV == 0 || currCell.TargetCCV == VelociraptorConstants.NO_CCV ||
                                  currCell.CCV == VelociraptorConstants.NO_CCV;
                bool noCCVElevation = currCell.CCVElev == VelociraptorConstants.NULL_SINGLE || noCCVValue;
                bool noMDPValue     = currCell.TargetMDP == 0 || currCell.TargetMDP == VelociraptorConstants.NO_MDP ||
                                      currCell.MDP == VelociraptorConstants.NO_MDP;
                bool noMDPElevation         = currCell.MDPElev == VelociraptorConstants.NULL_SINGLE || noMDPValue;
                bool noTemperatureValue     = currCell.MaterialTemperature == VelociraptorConstants.NO_TEMPERATURE;
                bool noTemperatureElevation = currCell.MaterialTemperatureElev == VelociraptorConstants.NULL_SINGLE ||
                                              noTemperatureValue;
                bool noPassCountValue = currCell.TopLayerPassCount == VelociraptorConstants.NO_PASSCOUNT;

                //Either have none or both speed values
                var noSpeedValue = currCell.CellMaxSpeed == VelociraptorConstants.NO_SPEED;
                var speedMin     = noSpeedValue ? float.NaN : (float)(currCell.CellMinSpeed / ConversionConstants.KM_HR_TO_CM_SEC);
                var speedMax     = noSpeedValue ? float.NaN : (float)(currCell.CellMaxSpeed / ConversionConstants.KM_HR_TO_CM_SEC);

                var cmvPercent = noCCVValue
          ? float.NaN
          : (float)currCell.CCV / (float)currCell.TargetCCV * 100.0F;

                var mdpPercent = noMDPValue
          ? float.NaN
          : (float)currCell.MDP / (float)currCell.TargetMDP * 100.0F;

                var firstPassHeight = currCell.FirstPassHeight == VelociraptorConstants.NULL_SINGLE
        ? float.NaN
          : currCell.FirstPassHeight;

                var highestPassHeight = currCell.HighestPassHeight == VelociraptorConstants.NULL_SINGLE
        ? float.NaN
          : currCell.HighestPassHeight;

                var lowestPassHeight = currCell.LowestPassHeight == VelociraptorConstants.NULL_SINGLE
        ? float.NaN
          : currCell.LowestPassHeight;

                var cutFill = float.IsNaN(lastCompositeHeight) || float.IsNaN(designHeight)
          ? float.NaN
          : lastCompositeHeight - designHeight;

                var cmv         = noCCVValue ? float.NaN : currCell.CCV / 10.0F;
                var cmvHeight   = noCCVElevation ? float.NaN : currCell.CCVElev;
                var mdpHeight   = noMDPElevation ? float.NaN : currCell.MDPElev;
                var temperature =
                    noTemperatureValue
            ? float.NaN
            : currCell.MaterialTemperature / 10.0F; // As temperature is reported in 10th...
                var temperatureHeight = noTemperatureElevation ? float.NaN : currCell.MaterialTemperatureElev;
                var topLayerPassCount = noPassCountValue ? -1 : currCell.TopLayerPassCount;
                var cmvPercentChange  = currCell.CCV == VelociraptorConstants.NO_CCV
          ? float.NaN
          : (currCell.PrevCCV == VelociraptorConstants.NO_CCV
            ? 100.0f
            : (float)(currCell.CCV - currCell.PrevCCV) / (float)currCell.PrevCCV * 100.0f);

                var passCountIndex = noPassCountValue || float.IsNaN(lastPassHeight)
          ? ValueTargetType.NoData
          : (currCell.TopLayerPassCount < currCell.TopLayerPassCountTargetRangeMin
            ? ValueTargetType.BelowTarget
            : (currCell.TopLayerPassCount > currCell.TopLayerPassCountTargetRangeMax
              ? ValueTargetType.AboveTarget
              : ValueTargetType.OnTarget));

                var temperatureIndex = noTemperatureValue || noTemperatureElevation
          ? ValueTargetType.NoData
          : (currCell.MaterialTemperature < currCell.MaterialTemperatureWarnMin
            ? ValueTargetType.BelowTarget
            : (currCell.MaterialTemperature > currCell.MaterialTemperatureWarnMax
              ? ValueTargetType.AboveTarget
              : ValueTargetType.OnTarget));

                var cmvIndex = noCCVValue || noCCVElevation
          ? ValueTargetType.NoData
          : (cmvPercent < liftBuildSettings.CCVRange.Min
            ? ValueTargetType.BelowTarget
            : (cmvPercent > liftBuildSettings.CCVRange.Max ? ValueTargetType.AboveTarget : ValueTargetType.OnTarget));

                var mdpIndex = noMDPValue || noMDPElevation
          ? ValueTargetType.NoData
          : (mdpPercent < liftBuildSettings.MDPRange.Min
            ? ValueTargetType.BelowTarget
            : (mdpPercent > liftBuildSettings.MDPRange.Max ? ValueTargetType.AboveTarget : ValueTargetType.OnTarget));

                var speedIndex = noSpeedValue || float.IsNaN(lastPassHeight)
          ? ValueTargetType.NoData
          : (currCell.CellMaxSpeed > liftBuildSettings.MachineSpeedTarget.MaxTargetMachineSpeed
            ? ValueTargetType.AboveTarget
            : (currCell.CellMinSpeed < liftBuildSettings.MachineSpeedTarget.MinTargetMachineSpeed &&
               currCell.CellMaxSpeed < liftBuildSettings.MachineSpeedTarget.MinTargetMachineSpeed
              ? ValueTargetType.BelowTarget
              : ValueTargetType.OnTarget));

                profile.results.Add(new CompactionProfileCell
                {
                    cellType = prevCell == null ? ProfileCellType.MidPoint : ProfileCellType.Edge,

                    station = currCell.Station,

                    firstPassHeight   = firstPassHeight,
                    highestPassHeight = highestPassHeight,
                    lastPassHeight    = lastPassHeight,
                    lowestPassHeight  = lowestPassHeight,

                    lastCompositeHeight = lastCompositeHeight,
                    designHeight        = designHeight,

                    cutFill = cutFill,

                    cmv        = cmv,
                    cmvPercent = cmvPercent,
                    cmvHeight  = cmvHeight,

                    mdpPercent = mdpPercent,
                    mdpHeight  = mdpHeight,

                    temperature       = temperature,
                    temperatureHeight = temperatureHeight,

                    topLayerPassCount = topLayerPassCount,

                    cmvPercentChange = cmvPercentChange,

                    minSpeed = speedMin,
                    maxSpeed = speedMax,

                    passCountIndex   = passCountIndex,
                    temperatureIndex = temperatureIndex,
                    cmvIndex         = cmvIndex,
                    mdpIndex         = mdpIndex,
                    speedIndex       = speedIndex
                });

                prevCell = currCell;
            }

            //Add a last point at the intercept length of the last cell so profiles are drawn correctly
            if (prevCell != null && prevCell.InterceptLength > ProfilesHelper.ONE_MM)
            {
                var lastCell = new CompactionProfileCell(profile.results[profile.results.Count - 1])
                {
                    station = prevCell.Station + prevCell.InterceptLength
                };

                profile.results.Add(lastCell);
            }

            if (profile.results.Count > 0)
            {
                profile.results[profile.results.Count - 1].cellType = ProfileCellType.MidPoint;
            }

            profile.gridDistanceBetweenProfilePoints = gridDistanceBetweenProfilePoints;

            var sb = new StringBuilder();

            sb.Append($"After profile conversion: {profile.results.Count}");
            foreach (var cell in profile.results)
            {
                sb.Append($",{cell.cellType}");
            }

            log.LogDebug(sb.ToString());
            return(profile);
        }
Esempio n. 30
0
        /// <summary>
        /// Convert TRex data to the data to return from the Web API
        /// </summary>
        /// <param name="trexResult">Result data from TRex.</param>
        /// <param name="calcType"></param>
        /// <returns>The profile data</returns>
        private CompactionProfileResult <CompactionProfileCell> ConvertTRexProductioDataProfileResult(ProfileDataResult <ProfileCellData> trexResult, LiftBuildSettings liftBuildSettings)
        {
            log.LogDebug("Converting production data profile TRex result");

            return(ProcessProductionDataProfileCells(trexResult.ProfileCells, trexResult.GridDistanceBetweenProfilePoints, liftBuildSettings));
        }