Пример #1
0
        /// <summary>
        /// Reads Geometry from the reader.
        /// </summary>
        /// <param name="reader">The reader used to read data from input stream.</param>
        /// <returns>Geometry read from the input.</returns>
        private static Geometry ReadGeometry(BinaryReader reader)
        {
            WkbGeometryType geometryType = (WkbGeometryType)reader.ReadUInt32();

            bool            is3D, isMeasured;
            WkbGeometryType basicType;

            WkbReader.GetGeometryTypeDetails(geometryType, out basicType, out is3D, out isMeasured);

            switch (basicType)
            {
            case WkbGeometryType.Point: return(WkbReader.ReadPoint(reader, is3D, isMeasured));

            case WkbGeometryType.LineString: return(WkbReader.ReadLineString(reader, is3D, isMeasured));

            case WkbGeometryType.Polygon: return(WkbReader.ReadPolygon(reader, is3D, isMeasured));

            case WkbGeometryType.MultiPoint: return(WkbReader.ReadMultiPoint(reader, is3D, isMeasured));

            case WkbGeometryType.MultiLineString: return(WkbReader.ReadMultiLineString(reader, is3D, isMeasured));

            case WkbGeometryType.MultiPolygon: return(WkbReader.ReadMultiPolygon(reader, is3D, isMeasured));

            case WkbGeometryType.GeometryCollection: return(WkbReader.ReadGeometryCollection(reader, is3D, isMeasured));

            default: throw new WkbFormatException("Unknown geometry type.");
            }
        }
Пример #2
0
        /// <summary>
        /// Reads MultiLineString from the reader.
        /// </summary>
        /// <param name="reader">The reader used to read data from input stream.</param>
        /// <param name="is3D">bool value indicating whether multilinestring beeing read has Z-dimension.</param>
        /// <param name="isMeasured">bool value indicating whether multilinestring beeing read has M-value.</param>
        /// <returns>MultiLineString read from the input</returns>
        private static MultiLineString ReadMultiLineString(BinaryReader reader, bool is3D, bool isMeasured)
        {
            int pointsCount = (int)reader.ReadUInt32();

            MultiLineString result = new MultiLineString();

            for (int i = 0; i < pointsCount; i++)
            {
                result.Geometries.Add(WkbReader.ReadLineString(reader, is3D, isMeasured));
            }

            return(result);
        }