Esempio n. 1
0
            public void EndGeometry()
            {
                GeometryType type = _CurrentType.Peek();

                switch (type)
                {
                case GeometryType.Polygon:
                    if (_Figures.Count > 0)
                    {
                        var g = new SmGeometries.Polygon(
                            (SmGeometries.LinearRing)_Figures[0],
                            _Figures.Skip(1).Cast <SmGeometries.LinearRing>().ToList <SmGeometries.LinearRing>()
                            );
                        _Figures = new SmGeometries.Geometry[] { g };
                    }
                    else
                    {
                        _Figures = new SmGeometries.Geometry[] { new SmGeometries.Polygon() }
                    };
                    break;
                }

                _CurrentType.Pop();

                if (_CurrentType.Count == 0)
                {
                    _Figures[0].SpatialReference = CoordinateSystemUtils.Convert(_SpatialReference);
                }
            }
Esempio n. 2
0
        /// <summary>Returns the geometry defined by the specified WKB representation, in the specified coordinate system.</summary>
        /// <param name="data">The WKB representation of the geometry.</param>
        /// <param name="system">The coordinate system of the WKB representation.</param>
        public void Parse(byte[] data, ICoordinateSystem system)
        {
            Debug.Assert(system != null);
            if (system == null)
            {
                throw new ArgumentNullException("system");
            }

            var g = SmGeometries.Geometry.GeomFromWKB(data);

            g.SpatialReference = CoordinateSystemUtils.Convert(system);

            if ((TargetSystem != null) && !system.IsEquivalentTo(TargetSystem))
            {
                _Geometry = null;
                var orig = new SharpGeometry(g);
                orig.Populate(this);
            }
            else
            {
                _Geometry = new SharpGeometry(g);
            }
        }