public void EndFigure()
            {
                GeometryType type=_CurrentType.Peek();
                switch (type)
                {
                case GeometryType.GeometryCollection:
                    {
                        var g=new SmGeometries.GeometryCollection();
                        g.Collection=_Figures;
                        _Figures=new SmGeometries.Geometry[] { g };
                    }
                    break;
                case GeometryType.LineString:
                    _Figures.Add(new SmGeometries.LineString(_CurrentPoints));
                    break;
                case GeometryType.MultiLineString:
                    {
                        var g=new SmGeometries.MultiLineString();
                        g.LineStrings=_Figures.Cast<SmGeometries.LineString>().ToList<SmGeometries.LineString>();
                        _Figures=new SmGeometries.Geometry[] { g };
                    }
                    break;
                case GeometryType.MultiPoint:
                    {
                        var g=new SmGeometries.MultiPoint();
                        g.Points=_Figures.Cast<SmGeometries.Point>().ToList<SmGeometries.Point>();
                        _Figures=new SmGeometries.Geometry[] { g };
                    }
                    break;
                case GeometryType.MultiPolygon:
                    {
                        var g=new SmGeometries.MultiPolygon();
                        g.Polygons=_Figures.Cast<SmGeometries.Polygon>().ToList<SmGeometries.Polygon>();
                        _Figures=new SmGeometries.Geometry[] { g };
                    }
                    break;
                case GeometryType.Point:
                    if (_CurrentPoints.Count>0)
                        _Figures.Add(_CurrentPoints[0]);
                    else
                        _Figures.Add(new SmGeometries.Point());
                    break;
                case GeometryType.Polygon:
                    _Figures.Add(new SmGeometries.LinearRing(_CurrentPoints));
                    break;
                default:
                    throw new NotSupportedException(
                        string.Format(
                            CultureInfo.CurrentCulture,
                            SR.UnsupportedGeometryTypeException,
                            type
                        )
                    );
                }

                _CurrentPoints.Clear();
            }
Beispiel #2
0
            public void EndFigure()
            {
                GeometryType type = _CurrentType.Peek();

                switch (type)
                {
                case GeometryType.GeometryCollection:
                {
                    var g = new SmGeometries.GeometryCollection();
                    g.Collection = _Figures;
                    _Figures     = new SmGeometries.Geometry[] { g };
                }
                break;

                case GeometryType.LineString:
                    _Figures.Add(new SmGeometries.LineString(_CurrentPoints));
                    break;

                case GeometryType.MultiLineString:
                {
                    var g = new SmGeometries.MultiLineString();
                    g.LineStrings = _Figures.Cast <SmGeometries.LineString>().ToList <SmGeometries.LineString>();
                    _Figures      = new SmGeometries.Geometry[] { g };
                }
                break;

                case GeometryType.MultiPoint:
                {
                    var g = new SmGeometries.MultiPoint();
                    g.Points = _Figures.Cast <SmGeometries.Point>().ToList <SmGeometries.Point>();
                    _Figures = new SmGeometries.Geometry[] { g };
                }
                break;

                case GeometryType.MultiPolygon:
                {
                    var g = new SmGeometries.MultiPolygon();
                    g.Polygons = _Figures.Cast <SmGeometries.Polygon>().ToList <SmGeometries.Polygon>();
                    _Figures   = new SmGeometries.Geometry[] { g };
                }
                break;

                case GeometryType.Point:
                    if (_CurrentPoints.Count > 0)
                    {
                        _Figures.Add(_CurrentPoints[0]);
                    }
                    else
                    {
                        _Figures.Add(new SmGeometries.Point());
                    }
                    break;

                case GeometryType.Polygon:
                    _Figures.Add(new SmGeometries.LinearRing(_CurrentPoints));
                    break;

                default:
                    throw new NotSupportedException(
                              string.Format(
                                  CultureInfo.CurrentCulture,
                                  SR.UnsupportedGeometryTypeException,
                                  type
                                  )
                              );
                }

                _CurrentPoints.Clear();
            }