/// <summary> /// Computes a geometric profile across the design given a series of vertices describing the path to be profiled. /// </summary> public async Task <(List <XYZS> profile, DesignProfilerRequestResult errorCode)> ComputeProfile(Guid projectUid, WGS84Point startPoint, WGS84Point endPoint, double cellSize, double offset, bool arePositionsGrid) { // Query the DesignProfiler service to get the patch of elevations calculated try { var profileRequest = new DesignProfileRequest(); var arg = new CalculateDesignProfileArgument { ProjectID = projectUid, CellSize = cellSize, StartPoint = startPoint, EndPoint = endPoint, PositionsAreGrid = arePositionsGrid, ReferenceDesign = { DesignID = DesignDescriptor.DesignID, Offset = offset } }; var profileResult = await profileRequest.ExecuteAsync(arg); return(profileResult.Profile, profileResult.RequestResult); } catch { return(null, DesignProfilerRequestResult.UnknownError); } }
private async Task <CompactionProfileResult <CompactionProfileVertex> > PerformProductionDataProfilePostWithTRexGateway(CompactionProfileDesignRequest request) { ProfilesHelper.ConvertProfileEndPositions(request.GridPoints, request.WGS84Points, out WGSPoint startPt, out var endPt, out bool positionsAreGrid); var designProfileRequest = new DesignProfileRequest(request.ProjectUid ?? Guid.Empty, request.DesignDescriptor?.FileUid ?? Guid.Empty, request.DesignDescriptor?.Offset ?? 0, startPt.Lon, startPt.Lat, endPt.Lon, endPt.Lat, positionsAreGrid); var trexResult = await trexCompactionDataProxy.SendDataPostRequest <DesignProfileResult, DesignProfileRequest>(designProfileRequest, "/profile/design", customHeaders); return(trexResult?.Code == ContractExecutionStatesEnum.ExecutedSuccessfully ? ConvertTRexProfileResult(trexResult) : null); }
public Task <ContractExecutionResult> PostDesignProfile([FromBody] DesignProfileRequest designProfileRequest) { Log.LogInformation($"{nameof(PostDesignProfile)}: {Request.QueryString}"); designProfileRequest.Validate(); return(WithServiceExceptionTryExecuteAsync(() => RequestExecutorContainer .Build <DesignProfileExecutor>(ConfigStore, LoggerFactory, ServiceExceptionHandler) .ProcessAsync(designProfileRequest))); }
[InlineData(247645, 193072, 247680, 193054, 3, 0)] // Profile line between two adjacent triangles, one edge crossed. public async Task Test_DesignProfileRequest_OverTTM_NoFilter(double startX, double startY, double endX, double endY, int expectedPointCount, int resultIndex) { const double EPSILON = 0.001; AddDesignProfilerGridRouting(); var siteModel = DITAGFileAndSubGridRequestsWithIgniteFixture.NewEmptyModel(); var designUid = DITAGFileAndSubGridRequestsWithIgniteFixture.AddDesignToSiteModel(ref siteModel, TestHelper.CommonTestDataPath, "Bug36372.ttm", false); var referenceDesign = new DesignOffset(designUid, 0); var request = new DesignProfileRequest(); var response = await request.ExecuteAsync(new CalculateDesignProfileArgument { ProjectID = siteModel.ID, CellSize = SubGridTreeConsts.DefaultCellSize, ReferenceDesign = referenceDesign, Filters = new FilterSet(new CombinedFilter()), StartPoint = new WGS84Point(startX, startY), EndPoint = new WGS84Point(endX, endY), TRexNodeID = Guid.NewGuid(), PositionsAreGrid = true }); response.RequestResult.Should().Be(DesignProfilerRequestResult.OK); response.Profile.Count.Should().Be(expectedPointCount); var profile = DesignProfileResult(resultIndex); response.Profile.Count.Should().Be(profile.Length); for (int i = 0; i < response.Profile.Count - 1; i++) { profile[i].X.Should().BeApproximately(response.Profile[i].X, EPSILON); profile[i].Y.Should().BeApproximately(response.Profile[i].Y, EPSILON); profile[i].Z.Should().BeApproximately(response.Profile[i].Z, EPSILON); profile[i].Station.Should().BeApproximately(response.Profile[i].Station, EPSILON); } }
public void Test_DesignProfileRequest_Creation() { var request = new DesignProfileRequest(); request.Should().NotBeNull(); }