Index: src/Common/NetTopologySuite/IO/WKBReader.cs =================================================================== diff -u -r8f6ae890fed8e8eae3a32f9c0498a10f82e0ddf9 -r5fc71a385897af92ccb092f2f969b5709afab85a --- src/Common/NetTopologySuite/IO/WKBReader.cs (.../WKBReader.cs) (revision 8f6ae890fed8e8eae3a32f9c0498a10f82e0ddf9) +++ src/Common/NetTopologySuite/IO/WKBReader.cs (.../WKBReader.cs) (revision 5fc71a385897af92ccb092f2f969b5709afab85a) @@ -4,27 +4,27 @@ using GisSharpBlog.NetTopologySuite.Geometries; namespace GisSharpBlog.NetTopologySuite.IO -{ +{ /// /// Converts a Well-Known Binary byte data to a Geometry. /// [Serializable] public class WKBReader { - private IGeometryFactory factory = null; - - /// - /// Geometry builder. - /// - protected IGeometryFactory Factory + protected enum CoordinateSystem { - get { return factory; } - } + XY = 1, + XYZ = 2, + XYM = 3, + XYZM = 4 + }; + private readonly IGeometryFactory factory = null; + /// /// Initialize reader with a standard GeometryFactory. /// - public WKBReader() : this(GeometryFactory.Default) { } + public WKBReader() : this(GeometryFactory.Default) {} /// /// Initialize reader with the given GeometryFactory. @@ -42,8 +42,10 @@ /// public IGeometry Read(byte[] data) { - using (Stream stream = new MemoryStream(data)) + using (Stream stream = new MemoryStream(data)) + { return Read(stream); + } } /// @@ -58,26 +60,42 @@ try { if (byteOrder == ByteOrder.BigEndian) - reader = new BEBinaryReader(stream); - else reader = new BinaryReader(stream); + { + reader = new BEBinaryReader(stream); + } + else + { + reader = new BinaryReader(stream); + } return Read(reader); } finally { - if (reader != null) + if (reader != null) + { reader.Close(); + } } } - protected enum CoordinateSystem { XY=1, XYZ=2, XYM=3, XYZM=4}; + /// + /// Geometry builder. + /// + protected IGeometryFactory Factory + { + get + { + return factory; + } + } /// /// /// /// /// protected IGeometry Read(BinaryReader reader) - { + { WKBGeometryTypes geometryType = (WKBGeometryTypes) reader.ReadInt32(); switch (geometryType) { @@ -202,7 +220,9 @@ int numPoints = reader.ReadInt32(); ICoordinate[] coordinates = new ICoordinate[numPoints]; for (int i = 0; i < numPoints; i++) + { coordinates[i] = ReadCoordinate(reader, cs); + } return Factory.CreateLinearRing(coordinates); } @@ -228,7 +248,9 @@ int numPoints = reader.ReadInt32(); ICoordinate[] coordinates = new ICoordinate[numPoints]; for (int i = 0; i < numPoints; i++) + { coordinates[i] = ReadCoordinate(reader, cs); + } return Factory.CreateLineString(coordinates); } @@ -244,7 +266,9 @@ ILinearRing exteriorRing = ReadRing(reader, cs); ILinearRing[] interiorRings = new ILinearRing[numRings - 1]; for (int i = 0; i < numRings - 1; i++) + { interiorRings[i] = ReadRing(reader, cs); + } return Factory.CreatePolygon(exteriorRing, interiorRings); } @@ -261,9 +285,11 @@ for (int i = 0; i < numGeometries; i++) { ReadByteOrder(reader); - WKBGeometryTypes geometryType = (WKBGeometryTypes)reader.ReadInt32(); + WKBGeometryTypes geometryType = (WKBGeometryTypes) reader.ReadInt32(); if (geometryType != WKBGeometryTypes.WKBPoint) + { throw new ArgumentException("IPoint feature expected"); + } points[i] = ReadPoint(reader, cs) as IPoint; } return Factory.CreateMultiPoint(points); @@ -284,8 +310,10 @@ ReadByteOrder(reader); WKBGeometryTypes geometryType = (WKBGeometryTypes) reader.ReadInt32(); if (geometryType != WKBGeometryTypes.WKBLineString) + { throw new ArgumentException("ILineString feature expected"); - strings[i] = ReadLineString(reader, cs) as ILineString ; + } + strings[i] = ReadLineString(reader, cs) as ILineString; } return Factory.CreateMultiLineString(strings); } @@ -305,8 +333,10 @@ ReadByteOrder(reader); WKBGeometryTypes geometryType = (WKBGeometryTypes) reader.ReadInt32(); if (geometryType != WKBGeometryTypes.WKBPolygon && - geometryType != WKBGeometryTypes.WKBPolygonZ ) + geometryType != WKBGeometryTypes.WKBPolygonZ) + { throw new ArgumentException("IPolygon feature expected"); + } polygons[i] = ReadPolygon(reader, cs) as IPolygon; } return Factory.CreateMultiPolygon(polygons); @@ -422,9 +452,9 @@ break; default: throw new ArgumentException("Should never reach here!"); - } + } } return Factory.CreateGeometryCollection(geometries); } } -} +} \ No newline at end of file