public void CanConvertEnvelopeToFromShapeMsg() { IEnvelope env = GeometryFactory.CreateEnvelope(2600000.1234, 1200000.987654, 2601000.12, 1201000.98); EnvelopeMsg envelopeMsg = ProtobufGeometryUtils.ToEnvelopeMsg(env); IEnvelope rehydrated = ProtobufGeometryUtils.FromEnvelopeMsg(envelopeMsg); Assert.IsTrue(GeometryUtils.AreEqual(env, rehydrated)); }
private static bool UpdateParallelProgress(VerificationProgressMsg currentProgress, VerificationProgressEventArgs e) { SetOverallStep(currentProgress, e); if (e.CurrentBox != null) { currentProgress.CurrentBox = ProtobufGeometryUtils.ToEnvelopeMsg(e.CurrentBox); } return(true); }
private static bool UpdateContainerProgress(VerificationProgressMsg currentProgress, VerificationProgressEventArgs e) { VerificationProgressStep newProgressStep = ToVerificationStep(e.ProgressStep); switch (newProgressStep) { case VerificationProgressStep.TileProcessing: // New tile: SetOverallStep(currentProgress, e); ResetDetailStep(currentProgress); currentProgress.CurrentBox = ProtobufGeometryUtils.ToEnvelopeMsg(e.CurrentBox); break; case VerificationProgressStep.DataLoading: //SetOverallStep(currentProgress, e); SetDetailStep(currentProgress, e); currentProgress.ProcessingStepMessage = "Loading data"; currentProgress.Message = ((IDataset)e.Tag).Name; break; case VerificationProgressStep.Testing: if (currentProgress.ProgressStep != (int)newProgressStep) { // First time ResetDetailStep(currentProgress); currentProgress.ProcessingStepMessage = "Testing rows"; } double relativeProgress = ((double)e.Current - currentProgress.DetailedProgressCurrentStep) / e.Total; if (relativeProgress > 0.05) { SetDetailStep(currentProgress, e); var testRow = e.Tag as TestRow; currentProgress.Message = testRow?.DataReference.DatasetName; } else { return(false); } break; case VerificationProgressStep.TileCompleting: SetDetailStep(currentProgress, e); currentProgress.ProcessingStepMessage = "Completing tile"; currentProgress.Message = ((QualityCondition)e.Tag).Name; break; } currentProgress.ProgressStep = (int)newProgressStep; string message = e.Tag as string; CallbackUtils.DoWithNonNull(message, s => currentProgress.Message = s); return(true); }
public void CanReshapeAlongFilteredLinesByExtent() { GetOverlappingPolygons(out GdbFeature sourceFeature, out GdbFeature targetFeature); CalculateReshapeLinesRequest calculationRequest = CreateCalculateReshapeLinesRequest(sourceFeature, targetFeature); IEnvelope visibleExtent = sourceFeature.Shape.Envelope; visibleExtent.Expand(10, 10, false); calculationRequest.FilterOptions = new ReshapeLineFilterOptionsMsg(); calculationRequest.FilterOptions.ClipLinesOnVisibleExtent = true; calculationRequest.FilterOptions.VisibleExtents.Add( ProtobufGeometryUtils.ToEnvelopeMsg(visibleExtent)); CalculateReshapeLinesResponse calculateResponse = ChangeAlongServiceUtils.CalculateReshapeLines(calculationRequest, null); Assert.AreEqual((int)ReshapeAlongCurveUsability.CanReshape, calculateResponse.ReshapeLinesUsability); // 1 inside-line and 2 extent-intersecting dangles to the outside within the extent. AssertReshapeLineCount(calculateResponse.ReshapeLines, 3, 1); int insideLineIndex = GetInsideReshapeLineIndex(calculateResponse.ReshapeLines, sourceFeature.Shape); IPolyline insideLine = (IPolyline)ProtobufGeometryUtils.FromShapeMsg( calculateResponse.ReshapeLines[insideLineIndex].Path); Assert.NotNull(insideLine); Assert.AreEqual(1000, insideLine.Length); // // Reshape the non-default side (should be possible): // ApplyReshapeLinesRequest applyRequest = new ApplyReshapeLinesRequest(); applyRequest.ReshapeLines.Add(calculateResponse.ReshapeLines[insideLineIndex]); applyRequest.CalculationRequest = calculationRequest; applyRequest.InsertVerticesInTarget = false; applyRequest.UseNonDefaultReshapeSide = true; ApplyReshapeLinesResponse applyResponse = ChangeAlongServiceUtils.ApplyReshapeLines(applyRequest, null); Assert.AreEqual(1, applyResponse.ResultFeatures.Count); GdbObjectMsg updatedFeatureMsg = applyResponse.ResultFeatures[0].Update; GdbObjectReference resultFeatureObjRef = new GdbObjectReference( updatedFeatureMsg.ClassHandle, updatedFeatureMsg.ObjectId); Assert.AreEqual(new GdbObjectReference(sourceFeature), resultFeatureObjRef); IGeometry updatedGeometry = ProtobufGeometryUtils.FromShapeMsg(updatedFeatureMsg.Shape); Assert.IsNotNull(updatedGeometry); Assert.AreEqual(1000 * 1000 * 1 / 4, ((IArea)updatedGeometry).Area); // Check the new reshape line - there should be 2 non-reshapable dangles AssertReshapeLineCount(applyResponse.NewReshapeLines, 2, 0); Assert.AreEqual(ReshapeAlongCurveUsability.InsufficientOrAmbiguousReshapeCurves, (ReshapeAlongCurveUsability)applyResponse.ReshapeLinesUsability); }