static public IGeometry SqlBytesToGeometry(SqlBytes sqlbytes) { try { GeometryDef geomDef = new GeometryDef(); geomDef.HasZ = geomDef.HasM = false; using (BinaryReader r = new BinaryReader(new MemoryStream())) { r.BaseStream.Write(sqlbytes.Buffer, 0, sqlbytes.Buffer.Length); r.BaseStream.Position = 0; switch ((geometryType)r.ReadInt32()) { case geometryType.Aggregate: AggregateGeometry ageom = new AggregateGeometry(); ageom.Deserialize(r, geomDef); return(ageom); case geometryType.Envelope: Envelope env = new Envelope(); env.Deserialize(r, geomDef); return(env); case geometryType.Multipoint: MultiPoint mp = new MultiPoint(); mp.Deserialize(r, geomDef); return(mp); case geometryType.Point: Point p = new Point(); p.Deserialize(r, geomDef); return(p); case geometryType.Polygon: Polygon polygon = new Polygon(); polygon.Deserialize(r, geomDef); return(polygon); case geometryType.Polyline: Polyline line = new Polyline(); line.Deserialize(r, geomDef); return(line); default: return(null); } } } catch { return(null); } }