Exemplo n.º 1
0
 public TranslatedChanges Translate(ZipArchiveEntry entry, IEnumerator <ShapeRecord> records, TranslatedChanges changes)
 {
     if (entry == null)
     {
         throw new ArgumentNullException(nameof(entry));
     }
     if (records == null)
     {
         throw new ArgumentNullException(nameof(records));
     }
     if (changes == null)
     {
         throw new ArgumentNullException(nameof(changes));
     }
     while (records.MoveNext())
     {
         var record = records.Current;
         if (record != null && record.Content is PolyLineMShapeContent content)
         {
             if (changes.TryTranslateToRoadSegmentId(record.Header.RecordNumber, out var id))
             {
                 if (changes.TryFindAddRoadSegment(id, out var change))
                 {
                     changes = changes.Replace(change, change.WithGeometry(GeometryTranslator.ToGeometryMultiLineString(content.Shape)));
                 }
             }
         }
     }
     return(changes);
 }
Exemplo n.º 2
0
 public static RoadSegmentBoundingBox From(PolyLineM shape) => new RoadSegmentBoundingBox
 {
     MinimumX = GeometryTranslator.ToGeometryMultiLineString(shape).EnvelopeInternal.MinX,
     MinimumY = GeometryTranslator.ToGeometryMultiLineString(shape).EnvelopeInternal.MinY,
     MaximumX = GeometryTranslator.ToGeometryMultiLineString(shape).EnvelopeInternal.MaxX,
     MaximumY = GeometryTranslator.ToGeometryMultiLineString(shape).EnvelopeInternal.MaxY,
     MinimumM = GeometryTranslator.ToGeometryMultiLineString(shape).GetOrdinates(Ordinate.M).DefaultIfEmpty(double.NegativeInfinity).Min(),
     MaximumM = GeometryTranslator.ToGeometryMultiLineString(shape).GetOrdinates(Ordinate.M).DefaultIfEmpty(double.PositiveInfinity).Max()
 };
        public void TranslateWithRecordsReturnsExpectedResult()
        {
            var segment = _fixture.Create <AddRoadSegment>();
            var record  = _fixture.Create <ShapeRecord>().Content.RecordAs(segment.RecordNumber);
            var records = new List <ShapeRecord> {
                record
            };
            var enumerator = records.GetEnumerator();
            var changes    = TranslatedChanges.Empty.Append(segment);

            var result = _sut.Translate(_entry, enumerator, changes);

            var expected = TranslatedChanges.Empty.Append(
                segment.WithGeometry(
                    GeometryTranslator.ToGeometryMultiLineString(
                        ((PolyLineMShapeContent)record.Content).Shape)
                    )
                );

            Assert.Equal(expected, result, new TranslatedChangeEqualityComparer());
        }