Exemple #1
0
        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);
            }
        }