using DotSpatial.Projections;
using NetTopologySuite.Geometries.Utilities;
using NetTopologySuite.Geometries;
private static readonly string localProj4String = "+proj=sterea +lat_0=6.52392520 +lon_0=53.19926215 +units=m +no_defs";
private static readonly ProjectionInfo _localProjection = ProjectionInfo.FromProj4String(localProj4String);
private static readonly ProjectionInfo _wgs84 = KnownCoordinateSystems.Geographic.World.WGS1984;
private static readonly Coordinate rotationCenterPoint = new Coordinate(53.19926215, 6.52392520);
private static readonly double rotationAngleInRadians = 0.0174532925 * -25.0;
private static readonly AffineTransformation rotationTransform = AffineTransformation.RotationInstance(rotationAngleInRadians, rotationCenterPoint.X, rotationCenterPoint.Y);
public static void Main()
var points = new Coordinate[]
foreach(var point in points)
var translatedPoint = ReprojectCoordinate(point);
var rotatedPoint = RotateCoordinate(translatedPoint);
Console.WriteLine(rotatedPoint.ToString());
public static Coordinate ReprojectCoordinate(Coordinate coordinate)
var xy = new double[] { coordinate.X, coordinate.Y };
var z = new double[] { coordinate.Z };
Reproject.ReprojectPoints(xy, z, _localProjection, _wgs84, 0, z.Length);
return new Coordinate(xy[0], xy[1], z[0]);
public static Coordinate RotateCoordinate(Coordinate pointToRotate)
var geom = Geometry.DefaultFactory.CreatePoint((Coordinate)pointToRotate.Clone());
geom.Apply(rotationTransform);