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(); }
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(); }