public static GeoAPI.Geometries.ILinearRing CreateEllipse(GeoAPI.Geometries.IGeometryFactory factory, GeoAPI.Geometries.Coordinate center, System.Drawing.SizeF size, int segmentsPerQuadrant) { const double piHalf = System.Math.PI * 0.5d; var step = piHalf / segmentsPerQuadrant; var pts = new GeoAPI.Geometries.Coordinate[4 * segmentsPerQuadrant + 1]; var angle = 0d; for (var i = 0; i < 4 * segmentsPerQuadrant; i++) { pts[i] = new GeoAPI.Geometries.Coordinate(center.X + System.Math.Cos(angle) * size.Width, center.Y + System.Math.Sin(angle) * size.Height); angle += step; } pts[pts.Length - 1] = pts[0]; return factory.CreateLinearRing(pts); }
public static GeoAPI.Geometries.ILinearRing CreateRectangle(GeoAPI.Geometries.IGeometryFactory factory, GeoAPI.Geometries.Coordinate leftTop, GeoAPI.Geometries.Coordinate rightBottom) { var pts = new[] { leftTop, new GeoAPI.Geometries.Coordinate(rightBottom.X, leftTop.Y), rightBottom, new GeoAPI.Geometries.Coordinate(leftTop.X, rightBottom.Y), leftTop }; return factory.CreateLinearRing(pts); }