public void BeginGeometry(OpenGisGeometryType type) { if (m_root) { m_root = false; m_sink.BeginGeometry(type); } else { m_types.Enqueue(type); } }
/// <summary>Applies a geometry type call sequence to the specified <paramref name="sink" />.</summary> /// <param name="sink">The sink to populate.</param> public void Populate(IGeometrySink sink) { sink.BeginGeometry(GeometryType); foreach (SeriesNode series in _PolygonsSeries) { sink.BeginGeometry(GeometryType.Polygon); List<SeriesNode> lineStrings=series.Select<ParseTreeNode, SeriesNode>(n => (SeriesNode)n.AstNode).ToList<SeriesNode>(); MultiLineStringNode.Populate(sink, lineStrings, GeometryType.Polygon); sink.EndGeometry(); } sink.EndGeometry(); }
/// <summary>Applies a geometry type call sequence to the specified <paramref name="sink" />.</summary> /// <param name="sink">The sink to populate.</param> public void Populate(IGeometrySink sink) { sink.BeginGeometry(GeometryType); foreach (SeriesNode series in _PolygonsSeries) { sink.BeginGeometry(GeometryType.Polygon); List <SeriesNode> lineStrings = series.Select <ParseTreeNode, SeriesNode>(n => (SeriesNode)n.AstNode).ToList <SeriesNode>(); MultiLineStringNode.Populate(sink, lineStrings, GeometryType.Polygon); sink.EndGeometry(); } sink.EndGeometry(); }
/// <summary>Applies a geometry type call sequence to the specified <paramref name="sink" />.</summary> /// <param name="sink">The sink to populate.</param> /// <remarks> /// <para>The call sequence is a set of figures, lines, and points for geometry types.</para> /// </remarks> public void Populate(IGeometrySink sink) { sink.SetCoordinateSystem(CoordinateSystem); switch (_Geometry.GeometryType) { case SmGeometries.GeometryType2.LineString: case SmGeometries.GeometryType2.Point: case SmGeometries.GeometryType2.Polygon: _PopulateSimpleType(sink, _Geometry); break; case SmGeometries.GeometryType2.GeometryCollection: case SmGeometries.GeometryType2.MultiLineString: case SmGeometries.GeometryType2.MultiPoint: case SmGeometries.GeometryType2.MultiPolygon: sink.BeginGeometry(GeometryTypeUtils.Convert(_Geometry.GeometryType)); foreach (SmGeometries.Geometry g in (IEnumerable <SmGeometries.Geometry>)_Geometry) { _PopulateSimpleType(sink, g); } sink.EndGeometry(); break; default: throw new NotSupportedException( string.Format( CultureInfo.CurrentCulture, SR.UnsupportedGeometryTypeException, _Geometry.GeometryType ) ); } }
internal static void Populate(IGeometrySink sink, IList<PointNode> points, GeometryType type) { if (points.Count>0) { if (type!=GeometryType.LineString) sink.BeginGeometry(GeometryType.Point); sink.BeginFigure(points[0].X, points[0].Y, null); if (type==GeometryType.MultiPoint) sink.EndFigure(); for (int i=1; i<points.Count; ++i) if (type==GeometryType.MultiPoint) { sink.BeginFigure(points[i].X, points[i].Y, null); sink.EndFigure(); } else sink.AddLine(points[i].X, points[i].Y, null); if (type!=GeometryType.MultiPoint) sink.EndFigure(); if (type!=GeometryType.LineString) sink.EndGeometry(); } }
public void Populate(IGeometrySink sink) { sink.SetCoordinateSystem(CoordinateSystem); sink.BeginGeometry(GeometryType.Polygon); if ( (lowerCorner!=null) && (lowerCorner.TypedValue!=null) && (lowerCorner.TypedValue.Count==2) && (upperCorner!=null) && (upperCorner.TypedValue!=null) && (upperCorner.TypedValue.Count==2) ) { double minlon=Math.Min(lowerCorner.TypedValue[0], upperCorner.TypedValue[0]); double maxlon=Math.Max(lowerCorner.TypedValue[0], upperCorner.TypedValue[0]); double minlat=Math.Min(lowerCorner.TypedValue[1], upperCorner.TypedValue[1]); double maxlat=Math.Max(lowerCorner.TypedValue[1], upperCorner.TypedValue[1]); sink.BeginFigure(minlon, minlat, null); sink.AddLine(maxlon, minlat, null); sink.AddLine(maxlon, maxlat, null); sink.AddLine(minlon, maxlat, null); sink.AddLine(minlon, minlat, null); sink.EndFigure(); } sink.EndGeometry(); }
public void Populate(IGeometrySink sink) { sink.SetCoordinateSystem(CoordinateSystem); sink.BeginGeometry(GeometryType.Polygon); if ( (lowerCorner != null) && (lowerCorner.TypedValue != null) && (lowerCorner.TypedValue.Count == 2) && (upperCorner != null) && (upperCorner.TypedValue != null) && (upperCorner.TypedValue.Count == 2) ) { double minlon = Math.Min(lowerCorner.TypedValue[0], upperCorner.TypedValue[0]); double maxlon = Math.Max(lowerCorner.TypedValue[0], upperCorner.TypedValue[0]); double minlat = Math.Min(lowerCorner.TypedValue[1], upperCorner.TypedValue[1]); double maxlat = Math.Max(lowerCorner.TypedValue[1], upperCorner.TypedValue[1]); sink.BeginFigure(minlon, minlat, null); sink.AddLine(maxlon, minlat, null); sink.AddLine(maxlon, maxlat, null); sink.AddLine(minlon, maxlat, null); sink.AddLine(minlon, minlat, null); sink.EndFigure(); } sink.EndGeometry(); }
/// <summary>Applies a geometry type call sequence to the specified <paramref name="sink" />.</summary> /// <param name="sink">The sink to populate.</param> public void Populate(IGeometrySink sink) { sink.BeginGeometry(GeometryType.GeometryCollection); foreach (IGeometryTap g in _Geometries) g.Populate(sink); sink.EndGeometry(); }
internal protected override void InternalPopulate(IGeometrySink sink) { int dim = 2; if (srsDimension.HasValue) { dim = Convert.ToInt32(srsDimension.Value); } sink.BeginGeometry(GeometryType.Point); //if (pos!=null) if (Untyped.Descendants("{http://www.opengis.net/gml}pos").Any <XElement>()) { if (pos.srsDimension.HasValue) { dim = Convert.ToInt32(pos.srsDimension.Value); } if ((pos.TypedValue != null) && (pos.TypedValue.Count >= dim)) { sink.BeginFigure(pos.TypedValue[0], pos.TypedValue[1], dim > 2 ? pos.TypedValue[2] : (double?)null); sink.EndFigure(); } } sink.EndGeometry(); }
public void BeginGeometry(OpenGisGeometryType type) { if (type == OpenGisGeometryType.Point || type == OpenGisGeometryType.MultiPoint) { if (m_root) { m_root = false; m_sink.BeginGeometry(OpenGisGeometryType.GeometryCollection); m_sink.EndGeometry(); } m_depth++; } else { m_sink.BeginGeometry(type); } }
/// <summary>Applies a geometry type call sequence to the specified <paramref name="sink" />.</summary> /// <param name="sink">The sink to populate.</param> public void Populate(IGeometrySink sink) { sink.BeginGeometry(GeometryType.GeometryCollection); foreach (IGeometryTap g in _Geometries) { g.Populate(sink); } sink.EndGeometry(); }
/// <summary>Applies a geometry type call sequence to the specified <paramref name="sink" />.</summary> /// <param name="sink">The sink to populate.</param> public void Populate(IGeometrySink sink) { sink.BeginGeometry(GeometryType.Point); if (_Point!=null) { sink.BeginFigure(_Point.X, _Point.Y, null); sink.EndFigure(); } sink.EndGeometry(); }
/// <summary>Applies a geometry type call sequence to the specified <paramref name="sink" />.</summary> /// <param name="sink">The sink to populate.</param> public void Populate(IGeometrySink sink) { sink.BeginGeometry(GeometryType.Point); if (_Point != null) { sink.BeginFigure(_Point.X, _Point.Y, null); sink.EndFigure(); } sink.EndGeometry(); }
protected internal override void InternalPopulate(IGeometrySink sink) { sink.BeginGeometry(GeometryType.MultiLineString); //if ((lineStringMember!=null) if (Untyped.Descendants("{http://www.opengis.net/gml}lineStringMember").Any<XElement>()) foreach (lineStringMember l in lineStringMember) l.LineString.Populate(sink); sink.EndGeometry(); }
protected internal override void InternalPopulate(IGeometrySink sink) { sink.BeginGeometry(GeometryType.MultiPoint); //if ((pointMember!=null) if (Untyped.Descendants("{http://www.opengis.net/gml}pointMember").Any<XElement>()) foreach (pointMember p in pointMember) p.Point.Populate(sink); sink.EndGeometry(); }
protected internal override void InternalPopulate(IGeometrySink sink) { sink.BeginGeometry(GeometryType.GeometryCollection); //if ((geometryMember!=null) if (Untyped.Descendants("{http://www.opengis.net/gml}geometryMember").Any<XElement>()) foreach (geometryMember g in geometryMember) g._Geometry.Populate(sink); sink.EndGeometry(); }
internal protected override void InternalPopulate(IGeometrySink sink) { sink.BeginGeometry(GeometryType.Polygon); if ((exterior!=null) && (exterior._Ring!=null)) exterior._Ring.Populate(sink); if (interior!=null) foreach (interior intr in interior) intr._Ring.Populate(sink); sink.EndGeometry(); }
internal static void Populate(IGeometrySink sink, IList<SeriesNode> pointSeries, GeometryType type) { foreach (SeriesNode series in pointSeries) { if (type!=GeometryType.Polygon) sink.BeginGeometry(GeometryType.LineString); List<PointNode> points=series.Select<ParseTreeNode, PointNode>(n => (PointNode)n.AstNode).ToList<PointNode>(); MultiPointNode.Populate(sink, points, GeometryType.LineString); if (type!=GeometryType.Polygon) sink.EndGeometry(); } }
protected internal override void InternalPopulate(IGeometrySink sink) { sink.BeginGeometry(GeometryType.MultiPolygon); //if ((polygonMember!=null) if (Untyped.Descendants("{http://www.opengis.net/gml}polygonMember").Any <XElement>()) { foreach (polygonMember p in polygonMember) { p.Polygon.Populate(sink); } } sink.EndGeometry(); }
protected internal override void InternalPopulate(IGeometrySink sink) { sink.BeginGeometry(GeometryType.MultiLineString); //if ((lineStringMember!=null) if (Untyped.Descendants("{http://www.opengis.net/gml}lineStringMember").Any <XElement>()) { foreach (lineStringMember l in lineStringMember) { l.LineString.Populate(sink); } } sink.EndGeometry(); }
protected internal override void InternalPopulate(IGeometrySink sink) { sink.BeginGeometry(GeometryType.GeometryCollection); //if ((geometryMember!=null) if (Untyped.Descendants("{http://www.opengis.net/gml}geometryMember").Any <XElement>()) { foreach (geometryMember g in geometryMember) { g._Geometry.Populate(sink); } } sink.EndGeometry(); }
/// <summary>Applies a geometry type call sequence to the specified <paramref name="sink" />.</summary> /// <param name="sink">The sink to populate.</param> /// <remarks> /// <para>The call sequence is a set of figures, lines, and points for geometry types.</para> /// </remarks> public void Populate(IGeometrySink sink) { sink.SetCoordinateSystem(CoordinateSystem); sink.BeginGeometry(GeometryType.Polygon); sink.BeginFigure(_Envelope.MinX, _Envelope.MinY, null); sink.AddLine(_Envelope.MaxX, _Envelope.MinY, null); sink.AddLine(_Envelope.MaxX, _Envelope.MaxY, null); sink.AddLine(_Envelope.MinX, _Envelope.MaxY, null); sink.AddLine(_Envelope.MinX, _Envelope.MinY, null); sink.EndFigure(); sink.EndGeometry(); }
private static void _PopulateSimpleType(IGeometrySink sink, FGeometry.IGeometry geometry) { sink.BeginGeometry(GeometryTypeUtils.Convert(geometry.DerivedType)); switch (geometry.DerivedType) { case FCommon.GeometryType.GeometryType_LineString: using (FGeometry.DirectPositionCollection positions = ((FGeometry.ILineString)geometry).Positions) CreateFigure(sink, positions); break; case FCommon.GeometryType.GeometryType_Point: using (FGeometry.DirectPositionCollection positions = new FGeometry.DirectPositionCollection()) using (FGeometry.IDirectPosition dp = ((FGeometry.IPoint)geometry).Position) { positions.Add(dp); CreateFigure(sink, positions); } break; case FCommon.GeometryType.GeometryType_Polygon: { var polygon = (FGeometry.IPolygon)geometry; using (FGeometry.ILinearRing exterior = polygon.ExteriorRing) using (FGeometry.DirectPositionCollection positions = exterior.Positions) CreateFigure(sink, positions); for (int i = 0; i < polygon.InteriorRingCount; ++i) { using (FGeometry.ILinearRing interior = polygon.GetInteriorRing(i)) using (FGeometry.DirectPositionCollection positions = interior.Positions) CreateFigure(sink, positions); } } break; default: throw new NotSupportedException( string.Format( CultureInfo.CurrentCulture, SR.UnsupportedGeometryTypeException, geometry.DerivedType ) ); } sink.EndGeometry(); }
internal protected override void InternalPopulate(IGeometrySink sink) { sink.BeginGeometry(GeometryType.LineString); //if (posList!=null) if (Untyped.Descendants("{http://www.opengis.net/gml}posList").Any<XElement>()) if ((posList.TypedValue!=null) && (posList.TypedValue.Count>=2)) { sink.BeginFigure(posList.TypedValue[0], posList.TypedValue[1], null); for (int i=2; i<posList.TypedValue.Count; i+=2) sink.AddLine(posList.TypedValue[i], posList.TypedValue[i+1], null); sink.EndFigure(); } sink.EndGeometry(); }
internal static void Populate(IGeometrySink sink, IList <SeriesNode> pointSeries, GeometryType type) { foreach (SeriesNode series in pointSeries) { if (type != GeometryType.Polygon) { sink.BeginGeometry(GeometryType.LineString); } List <PointNode> points = series.Select <ParseTreeNode, PointNode>(n => (PointNode)n.AstNode).ToList <PointNode>(); MultiPointNode.Populate(sink, points, GeometryType.LineString); if (type != GeometryType.Polygon) { sink.EndGeometry(); } } }
internal protected override void InternalPopulate(IGeometrySink sink) { sink.BeginGeometry(GeometryType.Polygon); if ((exterior != null) && (exterior._Ring != null)) { exterior._Ring.Populate(sink); } if (interior != null) { foreach (interior intr in interior) { intr._Ring.Populate(sink); } } sink.EndGeometry(); }
internal protected override void InternalPopulate(IGeometrySink sink) { sink.BeginGeometry(GeometryType.LineString); //if (posList!=null) if (Untyped.Descendants("{http://www.opengis.net/gml}posList").Any <XElement>()) { if ((posList.TypedValue != null) && (posList.TypedValue.Count >= 2)) { sink.BeginFigure(posList.TypedValue[0], posList.TypedValue[1], null); for (int i = 2; i < posList.TypedValue.Count; i += 2) { sink.AddLine(posList.TypedValue[i], posList.TypedValue[i + 1], null); } sink.EndFigure(); } } sink.EndGeometry(); }
private static void _PopulateSimpleType(IGeometrySink sink, SmGeometries.Geometry geometry) { sink.BeginGeometry(GeometryTypeUtils.Convert(geometry.GeometryType)); switch (geometry.GeometryType) { case SmGeometries.GeometryType2.LineString: CreateFigure(sink, ((SmGeometries.LineString)geometry).Vertices); break; case SmGeometries.GeometryType2.Point: CreateFigure(sink, new SmGeometries.Point[] { (SmGeometries.Point)geometry }); break; case SmGeometries.GeometryType2.Polygon: { var pol = (SmGeometries.Polygon)geometry; CreateFigure(sink, pol.ExteriorRing.Vertices); if (pol.InteriorRings != null) { foreach (SmGeometries.LinearRing lr in pol.InteriorRings) { CreateFigure(sink, lr.Vertices); } } } break; default: throw new NotSupportedException( string.Format( CultureInfo.CurrentCulture, SR.UnsupportedGeometryTypeException, geometry.GeometryType ) ); } sink.EndGeometry(); }
internal static void Populate(IGeometrySink sink, IList <PointNode> points, GeometryType type) { if (points.Count > 0) { if (type != GeometryType.LineString) { sink.BeginGeometry(GeometryType.Point); } sink.BeginFigure(points[0].X, points[0].Y, null); if (type == GeometryType.MultiPoint) { sink.EndFigure(); } for (int i = 1; i < points.Count; ++i) { if (type == GeometryType.MultiPoint) { sink.BeginFigure(points[i].X, points[i].Y, null); sink.EndFigure(); } else { sink.AddLine(points[i].X, points[i].Y, null); } } if (type != GeometryType.MultiPoint) { sink.EndFigure(); } if (type != GeometryType.LineString) { sink.EndGeometry(); } } }
internal protected override void InternalPopulate(IGeometrySink sink) { int dim=2; if (srsDimension.HasValue) dim=Convert.ToInt32(srsDimension.Value); sink.BeginGeometry(GeometryType.Point); //if (pos!=null) if (Untyped.Descendants("{http://www.opengis.net/gml}pos").Any<XElement>()) { if (pos.srsDimension.HasValue) dim=Convert.ToInt32(pos.srsDimension.Value); if ((pos.TypedValue!=null) && (pos.TypedValue.Count>=dim)) { sink.BeginFigure(pos.TypedValue[0], pos.TypedValue[1], dim>2 ? pos.TypedValue[2] : (double?)null); sink.EndFigure(); } } sink.EndGeometry(); }
// Just pass through without change. public void BeginGeometry(OpenGisGeometryType type) { _target.BeginGeometry(type); }
private static void _PopulateSimpleType(IGeometrySink sink, SmGeometries.Geometry geometry) { sink.BeginGeometry(GeometryTypeUtils.Convert(geometry.GeometryType)); switch (geometry.GeometryType) { case SmGeometries.GeometryType2.LineString: CreateFigure(sink, ((SmGeometries.LineString)geometry).Vertices); break; case SmGeometries.GeometryType2.Point: CreateFigure(sink, new SmGeometries.Point[] { (SmGeometries.Point)geometry }); break; case SmGeometries.GeometryType2.Polygon: { var pol=(SmGeometries.Polygon)geometry; CreateFigure(sink, pol.ExteriorRing.Vertices); if (pol.InteriorRings!=null) foreach (SmGeometries.LinearRing lr in pol.InteriorRings) CreateFigure(sink, lr.Vertices); } break; default: throw new NotSupportedException( string.Format( CultureInfo.CurrentCulture, SR.UnsupportedGeometryTypeException, geometry.GeometryType ) ); } sink.EndGeometry(); }
public void BeginGeography(OpenGisGeographyType type) { _sink.BeginGeometry((OpenGisGeometryType)type); }
/// <summary>Applies a geometry type call sequence to the specified <paramref name="sink" />.</summary> /// <param name="sink">The sink to populate.</param> public void Populate(IGeometrySink sink) { sink.BeginGeometry(GeometryType); Populate(sink, _PointSeries, GeometryType); sink.EndGeometry(); }
public void BeginGeography(OpenGisGeographyType type) { // Convert geography to geometry types... _target.BeginGeometry((OpenGisGeometryType)type); }
/// <summary>Applies a geometry type call sequence to the specified <paramref name="sink" />.</summary> /// <param name="sink">The sink to populate.</param> /// <remarks> /// <para>The call sequence is a set of figures, lines, and points for geometry types.</para> /// </remarks> public void Populate(IGeometrySink sink) { sink.SetCoordinateSystem(CoordinateSystem); switch (_Geometry.DerivedType) { case FCommon.GeometryType.GeometryType_LineString: case FCommon.GeometryType.GeometryType_Point: case FCommon.GeometryType.GeometryType_Polygon: _PopulateSimpleType(sink, _Geometry); break; case FCommon.GeometryType.GeometryType_MultiLineString: sink.BeginGeometry(GeometryTypeUtils.Convert(_Geometry.DerivedType)); { var multiLineString = (FGeometry.IMultiLineString)_Geometry; for (int i = 0; i < multiLineString.Count; ++i) { using (FGeometry.ILineString lineString = multiLineString[i]) _PopulateSimpleType(sink, lineString); } } sink.EndGeometry(); break; case FCommon.GeometryType.GeometryType_MultiPoint: sink.BeginGeometry(GeometryTypeUtils.Convert(_Geometry.DerivedType)); { var multiPoint = (FGeometry.IMultiPoint)_Geometry; using (FGeometry.DirectPositionCollection positions = new FGeometry.DirectPositionCollection()) for (int i = 0; i < multiPoint.Count; ++i) { using (FGeometry.IPoint point = multiPoint[i]) _PopulateSimpleType(sink, point); } } sink.EndGeometry(); break; case FCommon.GeometryType.GeometryType_MultiPolygon: sink.BeginGeometry(GeometryTypeUtils.Convert(_Geometry.DerivedType)); { var multiPolygon = (FGeometry.IMultiPolygon)_Geometry; for (int i = 0; i < multiPolygon.Count; ++i) { using (FGeometry.IPolygon polygon = multiPolygon[i]) _PopulateSimpleType(sink, polygon); } } sink.EndGeometry(); break; case FCommon.GeometryType.GeometryType_MultiGeometry: sink.BeginGeometry(GeometryTypeUtils.Convert(_Geometry.DerivedType)); { var multiGeometry = (FGeometry.IMultiGeometry)_Geometry; for (int i = 0; i < multiGeometry.Count; ++i) { using (FGeometry.IGeometry geometry = multiGeometry[i]) _PopulateSimpleType(sink, geometry); } } sink.EndGeometry(); break; default: throw new NotSupportedException( string.Format( CultureInfo.CurrentCulture, SR.UnsupportedGeometryTypeException, _Geometry.DerivedType ) ); } }
/// <summary>Applies a geometry type call sequence to the specified <paramref name="sink" />.</summary> /// <param name="sink">The sink to populate.</param> public void Populate(IGeometrySink sink) { sink.BeginGeometry(GeometryType); Populate(sink, _Points, GeometryType); sink.EndGeometry(); }
public void BeginGeometry(OpenGisGeometryType type) { _sink.BeginGeometry(type); }
/// <summary>Applies a geometry type call sequence to the specified <paramref name="sink" />.</summary> /// <param name="sink">The sink to populate.</param> /// <remarks> /// <para>The call sequence is a set of figures, lines, and points for geometry types.</para> /// </remarks> public void Populate(IGeometrySink sink) { sink.SetCoordinateSystem(CoordinateSystem); switch (_Geometry.GeometryType) { case SmGeometries.GeometryType2.LineString: case SmGeometries.GeometryType2.Point: case SmGeometries.GeometryType2.Polygon: _PopulateSimpleType(sink, _Geometry); break; case SmGeometries.GeometryType2.GeometryCollection: case SmGeometries.GeometryType2.MultiLineString: case SmGeometries.GeometryType2.MultiPoint: case SmGeometries.GeometryType2.MultiPolygon: sink.BeginGeometry(GeometryTypeUtils.Convert(_Geometry.GeometryType)); foreach (SmGeometries.Geometry g in (IEnumerable<SmGeometries.Geometry>)_Geometry) _PopulateSimpleType(sink, g); sink.EndGeometry(); break; default: throw new NotSupportedException( string.Format( CultureInfo.CurrentCulture, SR.UnsupportedGeometryTypeException, _Geometry.GeometryType ) ); } }
private static void _PopulateSimpleType(IGeometrySink sink, FGeometry.IGeometry geometry) { sink.BeginGeometry(GeometryTypeUtils.Convert(geometry.DerivedType)); switch (geometry.DerivedType) { case FCommon.GeometryType.GeometryType_LineString: using (FGeometry.DirectPositionCollection positions=((FGeometry.ILineString)geometry).Positions) CreateFigure(sink, positions); break; case FCommon.GeometryType.GeometryType_Point: using (FGeometry.DirectPositionCollection positions=new FGeometry.DirectPositionCollection()) using (FGeometry.IDirectPosition dp=((FGeometry.IPoint)geometry).Position) { positions.Add(dp); CreateFigure(sink, positions); } break; case FCommon.GeometryType.GeometryType_Polygon: { var polygon=(FGeometry.IPolygon)geometry; using (FGeometry.ILinearRing exterior=polygon.ExteriorRing) using (FGeometry.DirectPositionCollection positions=exterior.Positions) CreateFigure(sink, positions); for (int i=0; i<polygon.InteriorRingCount; ++i) using (FGeometry.ILinearRing interior=polygon.GetInteriorRing(i)) using (FGeometry.DirectPositionCollection positions=interior.Positions) CreateFigure(sink, positions); } break; default: throw new NotSupportedException( string.Format( CultureInfo.CurrentCulture, SR.UnsupportedGeometryTypeException, geometry.DerivedType ) ); } sink.EndGeometry(); }
public void BeginGeometry(OpenGisGeometryType type) { m_sink.BeginGeometry(type); m_insideLineString = type == OpenGisGeometryType.LineString; }
public void BeginGeometry(OpenGisGeometryType type) { m_sink.BeginGeometry(type); m_insidePolygon = type == OpenGisGeometryType.Polygon; }
/// <summary>Applies a geometry type call sequence to the specified <paramref name="sink" />.</summary> /// <param name="sink">The sink to populate.</param> /// <remarks> /// <para>The call sequence is a set of figures, lines, and points for geometry types.</para> /// </remarks> public void Populate(IGeometrySink sink) { sink.SetCoordinateSystem(CoordinateSystem); switch (_Geometry.DerivedType) { case FCommon.GeometryType.GeometryType_LineString: case FCommon.GeometryType.GeometryType_Point: case FCommon.GeometryType.GeometryType_Polygon: _PopulateSimpleType(sink, _Geometry); break; case FCommon.GeometryType.GeometryType_MultiLineString: sink.BeginGeometry(GeometryTypeUtils.Convert(_Geometry.DerivedType)); { var multiLineString=(FGeometry.IMultiLineString)_Geometry; for (int i=0; i<multiLineString.Count; ++i) using (FGeometry.ILineString lineString=multiLineString[i]) _PopulateSimpleType(sink, lineString); } sink.EndGeometry(); break; case FCommon.GeometryType.GeometryType_MultiPoint: sink.BeginGeometry(GeometryTypeUtils.Convert(_Geometry.DerivedType)); { var multiPoint=(FGeometry.IMultiPoint)_Geometry; using (FGeometry.DirectPositionCollection positions=new FGeometry.DirectPositionCollection()) for (int i=0; i<multiPoint.Count; ++i) using (FGeometry.IPoint point=multiPoint[i]) _PopulateSimpleType(sink, point); } sink.EndGeometry(); break; case FCommon.GeometryType.GeometryType_MultiPolygon: sink.BeginGeometry(GeometryTypeUtils.Convert(_Geometry.DerivedType)); { var multiPolygon=(FGeometry.IMultiPolygon)_Geometry; for (int i=0; i<multiPolygon.Count; ++i) using (FGeometry.IPolygon polygon=multiPolygon[i]) _PopulateSimpleType(sink, polygon); } sink.EndGeometry(); break; case FCommon.GeometryType.GeometryType_MultiGeometry: sink.BeginGeometry(GeometryTypeUtils.Convert(_Geometry.DerivedType)); { var multiGeometry=(FGeometry.IMultiGeometry)_Geometry; for (int i=0; i<multiGeometry.Count; ++i) using (FGeometry.IGeometry geometry=multiGeometry[i]) _PopulateSimpleType(sink, geometry); } sink.EndGeometry(); break; default: throw new NotSupportedException( string.Format( CultureInfo.CurrentCulture, SR.UnsupportedGeometryTypeException, _Geometry.DerivedType ) ); } }