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