using System; using System.IO; using GeoAPI.Geometries; namespace GisSharpBlog.NetTopologySuite.IO { /// /// Writes features as ESRI GeoDatabase binary format in a SqlServer database, /// and converts this features to Geometry format. /// public class GDBWriter : ShapeWriter { /// /// Creates a GDBWriter that creates objects using a basic GeometryFactory. /// public GDBWriter() : base() {} /// /// Returns a byte array containing binary data for the given Geometry. /// /// /// Byte[] data public byte[] Write(IGeometry geometry) { byte[] bytes = GetBytes(geometry); Write(geometry, new MemoryStream(bytes)); return bytes; } /// /// Writes a Geometry into a given Stream. /// /// /// public void Write(IGeometry geometry, Stream stream) { using (BinaryWriter writer = new BinaryWriter(stream)) { Writer(geometry, writer); } } /// /// /// /// /// public void Writer(IGeometry geometry, BinaryWriter writer) { if (geometry is IPoint) { Write(geometry as IPoint, writer); } else if (geometry is ILineString) { Write(geometry as ILineString, writer); } else if (geometry is IPolygon) { Write(geometry as IPolygon, writer); } else if (geometry is IMultiPoint) { Write(geometry as IMultiPoint, writer); } else if (geometry is IMultiLineString) { Write(geometry as IMultiLineString, writer); } else if (geometry is IMultiPolygon) { Write(geometry as IMultiPolygon, writer); } else if (geometry is IGeometryCollection) { throw new NotSupportedException("GeometryCollection not supported!"); } else { throw new ArgumentException("Geometry not recognized: " + geometry.ToString()); } } } }