using System.Collections.Generic;
using NetTopologySuite.Geometries;
using NetTopologySuite.IO;
using NetTopologySuite.Operation.Polygonize;
using NetTopologySuite.Features;
using NetTopologySuite.Operation.Union;
using NetTopologySuite.Geometries.Utilities;
public static void Main()
var geometry = "GEOMETRYCOLLECTION(POLYGON((-0.328794689 50.897369966,-0.320831211 50.896106249,-0.320624681 50.896894595,-0.323505372492192 50.89326741259052,-0.328794689 50.897369966)))";
string fixedWkt = FixSelfIntersectingGeometry(geometry);
Console.WriteLine($"Fixed Geometry (WKT): {fixedWkt}");
Console.WriteLine("Geometry could not be fixed.");
public static string FixSelfIntersectingGeometry(string wktGeometry)
var wktReader = new WKTReader();
Geometry geom = wktReader.Read(wktGeometry);
Geometry fixedGeom = GeometryFixer.Fix(geom);
var wktWriter = new WKTWriter();
return wktWriter.Write(fixedGeom);
Console.WriteLine($"Error fixing geometry: {ex.Message}");