public void Buffer3() { var geometry = reader.Read( @"LINESTRING(1250.7665 446.9385,1137.8786 170.4488,1136.3666106287267 166.74557327980631,1139.485009866369 125.36515638486206,1137.8786 121.7019)"); Assert.IsNotNull(geometry); Assert.IsTrue(geometry.IsValid); BufferParameters parameters = new BufferParameters() { EndCapStyle = EndCapStyle.Round }; var curveBuilder = new OffsetCurveBuilder( geometry.PrecisionModel, parameters); var curveSetBuilder = new OffsetCurveSetBuilder(geometry, 5, curveBuilder); var bufferSegStrList = curveSetBuilder.GetCurves(); Assert.AreEqual(1, bufferSegStrList.Count); var segmentString = (NodedSegmentString)bufferSegStrList[0]; Assert.AreEqual(45, segmentString.Count); for (var i = 0; i < segmentString.Coordinates.Length; i++) { var coord = segmentString.Coordinates[i]; Debug.WriteLine(String.Format("{1:R} {2:R}", i, coord.X, coord.Y)); } }
private static IGeometry BuildCurveSet(IGeometry g, double dist, IBufferParameters bufParams) { // --- now construct curve var ocb = new OffsetCurveBuilder(g.Factory.PrecisionModel, bufParams); var ocsb = new OffsetCurveSetBuilder(g, dist, ocb); var curves = ocsb.GetCurves(); var lines = new List <IGeometry>(); foreach (var ss in curves) { var pts = ss.Coordinates; lines.Add(g.Factory.CreateLineString(pts)); } IGeometry curve = g.Factory.BuildGeometry(lines); return(curve); }