public void TestSTRotate() { var expected = new double[][] { new[] { -50.0, -160.0 }, new[] { -50.0, -50.0 }, new[] { -100.0, -50.0 } }; using (var db = new PostGisTestDataConnection(TestDatabaseConnectionString)) { const string Wkt = "LINESTRING (50 160, 50 50, 100 50)"; db.TestGeometries .Value(g => g.Id, 1) .Value(g => g.Geometry, () => GeometryInput.STGeomFromEWKT(Wkt)) .Insert(); var result = db.TestGeometries .Where(g => g.Id == 1) .Select(g => g.Geometry.STRotate(Math.PI)) .Single() as NTSGS.LineString; CheckLineEquals(expected, result, 1.0E-8); var result2 = db .Select(() => AffineTransformations.STRotate(Wkt, Math.PI)) as NTSGS.LineString; CheckLineEquals(expected, result2, 1.0E-8); } }
public void TestSTRotateOriginGeom() { var expected = new double[][] { new[] { 116.42245883568916, 130.67207346706593 }, new[] { 21.15966441940092, 75.67207346706593 }, new[] { 46.15966441940093, 32.370803277844 } }; using (var db = new PostGisTestDataConnection(TestDatabaseConnectionString)) { const string Wkt = "LINESTRING (50 160, 50 50, 100 50)"; db.TestGeometries .Value(g => g.Id, 1) .Value(g => g.Geometry, () => GeometryInput.STGeomFromEWKT(Wkt)) .Insert(); var result = db.TestGeometries .Where(g => g.Id == 1) .Select(g => g.Geometry.STRotate(-1.0 * Math.PI / 3.0, g.Geometry.STCentroid())) .Single() as NTSGS.LineString; CheckLineEquals(expected, result, 1.0E-8); var origin = db.TestGeometries .Where(g => g.Id == 1) .Select(g => g.Geometry.STCentroid()) .Single() as NTSGS.Point; var result2 = db .Select(() => AffineTransformations.STRotate(Wkt, -1.0 * Math.PI / 3.0, origin)) as NTSGS.LineString; CheckLineEquals(expected, result2, 1.0E-8); } }