Exemple #1
0
        /// <summary>
        /// Записать данные геометрического  объекта в указанный поток
        /// </summary>
        /// <param name="geometry">Геометрический объект для записи</param>
        /// <param name="file">Поток записи</param>
        public override void Write(IGeometry geometry, BinaryWriter file)
        {
            if (!(geometry is MultiPoint))
            {
                throw new ArgumentException("Geometry Type error: MultiPoint expected, but the type retrieved is " + geometry.GetType().Name);
            }

            MultiPoint mpoint = geometry as MultiPoint;

            file.Write(int.Parse(Enum.Format(typeof(ShapeType), ShapeType, "d")));

            BoundingRectangle bounds = geometry.GetBoundingRectangle();//GetEnvelopeExternal(/*geometryFactory.PrecisionModel,*/ box);

            file.Write(bounds.MinX);
            file.Write(bounds.MinY);
            file.Write(bounds.MaxX);
            file.Write(bounds.MaxY);

            int numPoints = mpoint.ExtractCoordinates().Length;//.NumPoints;

            file.Write(numPoints);

            // write the points
            for (int i = 0; i < numPoints; i++)
            {
                PointD point = new PointD(mpoint.Points[i]);// Geometries[i];
                file.Write(point.X);
                file.Write(point.Y);
            }
        }