Exemplo n.º 1
0
        public override void Write(BinaryWriter writer, IMultiPartGeometry <IPointZ> value, WordCount origin)
        {
            Box.Write(writer, value.Box, origin);

            var partCount = value.Parts.Count;

            NumParts.Write(writer, partCount, origin);

            var points = value.Parts.SelectMany(part => part.Points).ToArray();

            NumPoints.Write(writer, points.Length, origin);

            int pointCount = 0;

            for (int i = 0; i < partCount; i++)
            {
                Part(i).Write(writer, pointCount, origin);

                pointCount += value.Parts[i].Points.Count;
            }

            var pointsOffset = OffsetPoints(partCount);

            for (int i = 0; i < points.Length; i++)
            {
                Point(pointsOffset, pointCount, i).Write(writer, points[i], origin);
            }

            MinZ(pointsOffset, pointCount).Write(writer, value.Box.Min.Z, origin);
            MaxZ(pointsOffset, pointCount).Write(writer, value.Box.Max.Z, origin);

            MinM(pointsOffset, pointCount).Write(writer, value.Box.Min.M, origin);
            MaxM(pointsOffset, pointCount).Write(writer, value.Box.Max.M, origin);
        }
Exemplo n.º 2
0
        public override void Write(BinaryWriter writer, IMultiPartGeometry <IPoint> value, WordCount origin)
        {
            Box.Write(writer, value.Box, origin);

            var partCount = value.Parts.Count;

            NumParts.Write(writer, partCount, origin);

            var points = value.Parts.SelectMany(part => part.Points).ToArray();

            NumPoints.Write(writer, points.Length, origin);

            int pointCount = 0;

            for (int i = 0; i < partCount; i++)
            {
                Part(i).Write(writer, pointCount, origin);

                pointCount += value.Parts[i].Points.Count;
            }

            for (int i = 0; i < pointCount; i++)
            {
                Point(partCount, i).Write(writer, points[i], origin);
            }
        }