private static Binary GetBinary(ISimpleGeometry geometry)
        {
            if (geometry == null)
            {
                return(null);
            }

            Binary ret = null;

            var sgw = geometry as SqlServer.SqlGeography;

            if ((sgw == null) || !sgw.CoordinateSystem.IsEquivalentTo(ServiceLocator.Current.GetInstance <ICoordinateSystemProvider>().Wgs84))
            {
                var b = new SqlServer.SqlGeometryBuilder(ServiceLocator.Current.GetInstance <ICoordinateSystemProvider>().Wgs84);
                geometry.Populate(b);
                sgw = (SqlServer.SqlGeography)b.ConstructedGeometry;
            }

            using (var ms = new MemoryStream())
                using (var bw = new BinaryWriter(ms))
                {
                    ((SqlTypes.SqlGeography)sgw).Write(bw);
                    ret = new Binary(ms.ToArray());
                }

            return(ret);
        }
Пример #2
0
        private static SharpGeometry Convert(ISimpleGeometry geometry)
        {
            var sg = geometry as SharpGeometry;

            if (sg != null)
            {
                return(sg);
            }

            var sgb = new SharpGeometryBuilder();

            geometry.Populate(sgb);
            return((SharpGeometry)sgb.ConstructedGeometry);
        }
Пример #3
0
        /// <summary>Fills the current bounding box with the specified geometry information.</summary>
        /// <param name="g">THe geometry to fill this bounding box with.</param>
        public void InitFromGeometry(ISimpleGeometry g)
        {
            if (g == null)
            {
                LowerCorner = null;
                UpperCorner = null;
                return;
            }

            CoordinateSystem = g.CoordinateSystem;

            var lc = new List <double>(2);
            var uc = new List <double>(2);

            ISimpleGeometry env = g.Envelope();

            var envelope = env as Gml.V311.Envelope;

            if (envelope == null)
            {
                envelope = new Gml.V311.Envelope();
                env.Populate(envelope);
            }
            Debug.Assert(envelope != null);

            lc.Add(envelope.lowerCorner.TypedValue[0]);
            lc.Add(envelope.lowerCorner.TypedValue[1]);
            uc.Add(envelope.upperCorner.TypedValue[0]);
            uc.Add(envelope.upperCorner.TypedValue[1]);

            // Bug in LinqToXsd : serialization is culture dependent...
            //LowerCorner=lc;
            //UpperCorner=uc;
            LowerCorner = new List <double>();
            foreach (XElement el in Untyped.Descendants("{http://www.opengis.net/ows}LowerCorner"))
            {
                el.Value = string.Join(
                    " ",
                    lc.Select <double, string>(d => d.ToString(CultureInfo.InvariantCulture))
                    );
            }
            UpperCorner = new List <double>();
            foreach (XElement el in Untyped.Descendants("{http://www.opengis.net/ows}UpperCorner"))
            {
                el.Value = string.Join(
                    " ",
                    uc.Select <double, string>(d => d.ToString(CultureInfo.InvariantCulture))
                    );
            }
        }
Пример #4
0
        /// <summary>Converts the specified <paramref name="geometry" /> into a <see cref="SqlGeometry" />.</summary>
        /// <param name="geometry">The geometry to convert.</param>
        /// <returns>The converted geometry.</returns>
        public static SqlGeometry ToGeometry(ISimpleGeometry geometry)
        {
            var sg = geometry as SqlGeometry;

            if (sg != null)
            {
                return(sg);
            }

            var sgb = new SqlGeometryBuilderWrapper();

            geometry.Populate(sgb);
            return(sgb.ConstructedGeometry);
        }
Пример #5
0
        private static FdoGeometry Convert(ISimpleGeometry geometry)
        {
            var sg = geometry as FdoGeometry;

            if (sg != null)
            {
                return(sg.Clone());
            }

            var sgb = new FdoGeometryBuilder();

            geometry.Populate(sgb);
            return(sgb.ConstructedGeometry);
        }
Пример #6
0
        /// <summary>Converts the specified <paramref name="geometry" /> into a <see cref="SpatialGeography" />.</summary>
        /// <param name="geometry">The geometry to convert.</param>
        /// <returns>The converted geometry.</returns>
        public static SpatialGeography ToGeography(ISimpleGeometry geometry)
        {
            var sg = geometry as SpatialGeography;

            if (sg != null)
            {
                return(sg);
            }

            var sgb = new SpatialGeometryBuilder();

            geometry.Populate(sgb);
            return(sgb.ConstructedGeometry as SpatialGeography);
        }
Пример #7
0
        /// <summary>Fills the current bounding box with the specified geometry information.</summary>
        /// <param name="g">THe geometry to fill this bounding box with.</param>
        public void InitFromGeometry(ISimpleGeometry g)
        {
            if (g == null)
            {
                westBoundLongitude = null;
                eastBoundLongitude = null;
                southBoundLatitude = null;
                northBoundLatitude = null;
                return;
            }

            var lc = new List <decimal>(2);
            var uc = new List <decimal>(2);

            // Make sure it is WGS 84, and a GML 3.1.1 instance
            var builder = new Ogc.Gml.V311.GmlGeometryBuilder(CommonServiceLocator.GetCoordinateSystemProvider().Wgs84);

            g.Populate(builder);

            var envelope = builder.ConstructedGeometry.Envelope() as Ogc.Gml.V311.Envelope;

            lc.Add(Convert.ToDecimal(envelope.lowerCorner.TypedValue[0]));
            lc.Add(Convert.ToDecimal(envelope.lowerCorner.TypedValue[1]));
            uc.Add(Convert.ToDecimal(envelope.upperCorner.TypedValue[0]));
            uc.Add(Convert.ToDecimal(envelope.upperCorner.TypedValue[1]));

            westBoundLongitude = new Gco.Decimal_PropertyType()
            {
                Decimal = new Gco.Decimal(lc[0])
            };
            eastBoundLongitude = new Gco.Decimal_PropertyType()
            {
                Decimal = new Gco.Decimal(uc[0])
            };
            southBoundLatitude = new Gco.Decimal_PropertyType()
            {
                Decimal = new Gco.Decimal(lc[1])
            };
            northBoundLatitude = new Gco.Decimal_PropertyType()
            {
                Decimal = new Gco.Decimal(uc[1])
            };
        }
Пример #8
0
            private void _WriteBox()
            {
                var geometry = _Tap as ISimpleGeometry;

                if (geometry != null)
                {
                    ISimpleGeometry envelope = null;
                    try
                    {
                        envelope = geometry.Envelope();
                    } catch
                    {
                        // Empty
                    }
                    if (envelope != null)
                    {
                        var sink = new JsonEnvelopeSink(_Writer);
                        envelope.Populate(sink);
                    }
                }
            }
Пример #9
0
        /// <summary>Fills the current bounding box with the specified geometry information.</summary>
        /// <param name="g">THe geometry to fill this bounding box with.</param>
        public void InitFromGeometry(ISimpleGeometry g)
        {
            if (g==null)
            {
                westBoundLongitude=null;
                eastBoundLongitude=null;
                southBoundLatitude=null;
                northBoundLatitude=null;
                return;
            }

            var lc=new List<decimal>(2);
            var uc=new List<decimal>(2);

            // Make sure it is WGS 84, and a GML 3.1.1 instance
            var builder=new Ogc.Gml.V311.GmlGeometryBuilder(CommonServiceLocator.GetCoordinateSystemProvider().Wgs84);
            g.Populate(builder);

            var envelope=builder.ConstructedGeometry.Envelope() as Ogc.Gml.V311.Envelope;

            lc.Add(Convert.ToDecimal(envelope.lowerCorner.TypedValue[0]));
            lc.Add(Convert.ToDecimal(envelope.lowerCorner.TypedValue[1]));
            uc.Add(Convert.ToDecimal(envelope.upperCorner.TypedValue[0]));
            uc.Add(Convert.ToDecimal(envelope.upperCorner.TypedValue[1]));

            westBoundLongitude=new Gco.Decimal_PropertyType() {
                Decimal=new Gco.Decimal(lc[0])
            };
            eastBoundLongitude=new Gco.Decimal_PropertyType() {
                Decimal=new Gco.Decimal(uc[0])
            };
            southBoundLatitude=new Gco.Decimal_PropertyType() {
                Decimal=new Gco.Decimal(lc[1])
            };
            northBoundLatitude=new Gco.Decimal_PropertyType() {
                Decimal=new Gco.Decimal(uc[1])
            };
        }
Пример #10
0
        /// <summary>Converts the specified <paramref name="geometry" /> into a <see cref="SpatialGeometry" />.</summary>
        /// <param name="geometry">The geometry to convert.</param>
        /// <returns>The converted geometry.</returns>
        public static SpatialGeometry ToGeometry(ISimpleGeometry geometry)
        {
            var sg=geometry as SpatialGeometry;
            if (sg!=null)
                return sg;

            var sgb=new SpatialGeometryBuilder();
            geometry.Populate(sgb);
            return sgb.ConstructedGeometry as SpatialGeometry;
        }
Пример #11
0
        /// <summary>Converts the specified <paramref name="geometry" /> into a <see cref="SqlGeography" />.</summary>
        /// <param name="geometry">The geometry to convert.</param>
        /// <returns>The converted geometry.</returns>
        public static SqlGeography ToGeography(ISimpleGeometry geometry)
        {
            var sg=geometry as SqlGeography;
            if (sg!=null)
                return sg;

            var sgb=new SqlGeographyBuilderWrapper();
            geometry.Populate(sgb);
            return sgb.ConstructedGeometry;
        }
        private static byte[] GetBinary(ISimpleGeometry geometry)
        {
            if (geometry==null)
                return null;

            byte[] ret=null;

            var sgw=geometry as SqlServer.SqlGeometry;
            if ((sgw==null) || !sgw.CoordinateSystem.IsEquivalentTo(ServiceLocator.Current.GetInstance<ICoordinateSystemProvider>().Wgs84))
            {
                var b=new SqlServer.SqlGeometryBuilder(ServiceLocator.Current.GetInstance<ICoordinateSystemProvider>().Wgs84);
                geometry.Populate(b);
                sgw=(SqlServer.SqlGeometry)b.ConstructedGeometry;
            }

            using (var ms=new MemoryStream())
                using (var bw=new BinaryWriter(ms))
                {
                    ((SqlTypes.SqlGeometry)sgw).Write(bw);
                    ret=ms.ToArray();
                }

            return ret;
        }
Пример #13
0
        private static FdoGeometry Convert(ISimpleGeometry geometry)
        {
            var sg=geometry as FdoGeometry;
            if (sg!=null)
                return sg.Clone();

            var sgb=new FdoGeometryBuilder();
            geometry.Populate(sgb);
            return sgb.ConstructedGeometry;
        }
Пример #14
0
        private static SharpGeometry Convert(ISimpleGeometry geometry)
        {
            var sg=geometry as SharpGeometry;
            if (sg!=null)
                return sg;

            var sgb=new SharpGeometryBuilder();
            geometry.Populate(sgb);
            return (SharpGeometry)sgb.ConstructedGeometry;
        }