public static IGeometry BufferWithParams(IGeometry g, Double?distance, int?quadrantSegments, int?capStyle, int?joinStyle, Double?mitreLimit) { double dist = 0; if (distance != null) { dist = distance.Value; } var bufParams = new BufferParameters(); if (quadrantSegments != null) { bufParams.QuadrantSegments = quadrantSegments.Value; } if (capStyle != null) { bufParams.EndCapStyle = (EndCapStyle)capStyle.Value; } if (joinStyle != null) { bufParams.JoinStyle = (JoinStyle)joinStyle.Value; } if (mitreLimit != null) { bufParams.MitreLimit = mitreLimit.Value; } return(BufferOp.Buffer(g, dist, bufParams)); }
public static IGeometry LogoBuffer(IGeometry g, double distance) { var lines = LogoLines(g); var bufParams = new BufferParameters(); bufParams.EndCapStyle = EndCapStyle.Square; return(BufferOp.Buffer(lines, distance, bufParams)); }
public static Geometry bufferMitredJoin(Geometry g, double distance) { var bufParams = new BufferParameters(); bufParams.JoinStyle = JoinStyle.Mitre; return(BufferOp.Buffer(g, distance, bufParams)); }
public static IGeometry SingleSidedBuffer(IGeometry geom, double distance) { var bufParams = new BufferParameters { IsSingleSided = true }; return(BufferOp.Buffer(geom, distance, bufParams)); }
public static Geometry BufferWithSimplify(Geometry g, double?distance, double?simplifyFactor) { double dist = 0; if (distance != null) { dist = distance.Value; } var bufParams = new BufferParameters(); if (simplifyFactor != null) { bufParams.SimplifyFactor = simplifyFactor.Value; } return(BufferOp.Buffer(g, dist, bufParams)); }
/// <summary> /// Given a linestring, a polygon feature class, and a buffer distance (given in feet), returns the length of the linestring contained within the buffer distance of a polygon in the feature class. /// </summary> /// <param name="lineGeometry"></param> /// <param name="polygonsToCheck"></param> /// <param name="bufferDistance"></param> /// <returns></returns> public static double CalculateLengthOfLineWithinPolygon(Geometry lineGeometry, IEnumerable <Geometry> polygonsToCheck, int bufferDistance) { if (!(bufferDistance > 0)) { return(CalculateLengthOfLineWithinPolygon(lineGeometry, polygonsToCheck)); } var bufferedLine = BufferOp.Buffer(lineGeometry, bufferDistance); var intersectingPolygon = polygonsToCheck.FirstOrDefault(x => x.Intersects(bufferedLine)); if (intersectingPolygon == null) { return(0); } // buffer the geometry that intersects and calculate its intersection with the original line var bufferedIntersectingPolygon = BufferOp.Buffer(intersectingPolygon, bufferDistance); return(bufferedIntersectingPolygon.Intersection(lineGeometry).Length); }
public void BufferAroundLine() { var form = new Form { BackColor = Color.White, Size = new Size(500, 200) }; form.Paint += delegate { Graphics g = form.CreateGraphics(); List <Coordinate> vertices = new List <Coordinate>(); vertices.Add(new Coordinate(0, 4)); vertices.Add(new Coordinate(40, 15)); vertices.Add(new Coordinate(50, 50)); vertices.Add(new Coordinate(100, 62)); vertices.Add(new Coordinate(240, 45)); vertices.Add(new Coordinate(350, 5)); IGeometry geometry = new LineString(vertices.ToArray()); g.DrawLines(new Pen(Color.Blue, 1), GetPoints(geometry)); BufferParameters bp = new BufferParameters { QuadrantSegments = 6, EndCapStyle = EndCapStyle.Flat }; IGeometry bufGeo = BufferOp.Buffer(geometry, 5d, bp); bufGeo = bufGeo.Union(geometry); g.FillPolygon(new SolidBrush(Color.Pink), GetPoints(bufGeo)); }; WindowsFormsTestHelper.ShowModal(form); }