using NetTopologySuite.Geometries;
using NetTopologySuite.IO;
using NetTopologySuite.Operation.Distance;
public static void Main()
var gf32632 = NetTopologySuite.NtsGeometryServices.Instance.CreateGeometryFactory(32632);
var jpLineString = gf32632.CreateLineString(
new NetTopologySuite.Geometries.Coordinate[]
var pntStart = gf32632.CreatePoint(new NetTopologySuite.Geometries.Coordinate(133, 88));
var pntEnd = gf32632.CreatePoint(new NetTopologySuite.Geometries.Coordinate(227, 158));
double minDistance = double.MaxValue;
NetTopologySuite.Geometries.Coordinate breakpoint = null;
for(int i = 1;i < jpLineString.Count;i++)
var prev = jpLineString[i - 1];
var curr = jpLineString[i];
var pairLine = gf32632.CreateLineString(
new NetTopologySuite.Geometries.Coordinate[]
DistanceOp distOp = new DistanceOp(pairLine, pntStart);
var distance = distOp.Distance();
Console.WriteLine("Distance from pair = " + distance);
NetTopologySuite.Geometries.Coordinate[] closestPt = distOp.NearestPoints();
Console.WriteLine("Closest points: " + closestPt[0]);
if (distance < minDistance)
breakpoint = closestPt[0];
Console.WriteLine("min Distance = " + minDistance);
Console.WriteLine("breakindex = " + breakindex);
Console.WriteLine("breakpoint = " + breakpoint);