public byte[] WriteShapeToBytes(Shape shape)
{
var p = shape as Shapes.Point;
if (p != null)
{
using (var stream = new MemoryStream(1 + (2 * 8)))
using (var bytes = new BinaryWriter(stream))
{
bytes.Write(TYPE_POINT);
bytes.Write(p.GetX());
bytes.Write(p.GetY());
return stream.ToArray();
}
}
var rect = shape as Rectangle;
if (rect != null)
{
using (var stream = new MemoryStream(1 + (4 * 8)))
using (var bytes = new BinaryWriter(stream))
{
bytes.Write(TYPE_BBOX);
bytes.Write(rect.GetMinX());
bytes.Write(rect.GetMaxX());
bytes.Write(rect.GetMinY());
bytes.Write(rect.GetMaxY());
return stream.ToArray();
}
}
var ntsShape = shape as NtsGeometry;
if (ntsShape != null)
{
var writer = new WKBWriter();
byte[] bb = writer.Write(ntsShape.GetGeom());
using (var stream = new MemoryStream(1 + bb.Length))
using (var bytes = new BinaryWriter(stream))
{
bytes.Write(TYPE_GEOM);
bytes.Write(bb);
return stream.ToArray();
}
}
throw new ArgumentException("unsuported shape:" + shape);
}