aboutsummaryrefslogtreecommitdiff
path: root/src/Costasdev.Busurbano.Backend/Services/ShapeTraversalService.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Costasdev.Busurbano.Backend/Services/ShapeTraversalService.cs')
-rw-r--r--src/Costasdev.Busurbano.Backend/Services/ShapeTraversalService.cs20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/Costasdev.Busurbano.Backend/Services/ShapeTraversalService.cs b/src/Costasdev.Busurbano.Backend/Services/ShapeTraversalService.cs
index 63f4a2e..c3c66f4 100644
--- a/src/Costasdev.Busurbano.Backend/Services/ShapeTraversalService.cs
+++ b/src/Costasdev.Busurbano.Backend/Services/ShapeTraversalService.cs
@@ -95,6 +95,26 @@ public class ShapeTraversalService
return FindClosestPointIndex(shape.Points, location);
}
+ public Shape CreateShapeFromWgs84(List<Position> points)
+ {
+ var shape = new Shape();
+ var inverseTransform = _transformation.MathTransform.Inverse();
+
+ foreach (var point in points)
+ {
+ var transformed = inverseTransform.Transform(new[] { point.Longitude, point.Latitude });
+ shape.Points.Add(new Epsg25829 { X = transformed[0], Y = transformed[1] });
+ }
+ return shape;
+ }
+
+ public Epsg25829 TransformToEpsg25829(double lat, double lon)
+ {
+ var inverseTransform = _transformation.MathTransform.Inverse();
+ var transformed = inverseTransform.Transform(new[] { lon, lat });
+ return new Epsg25829 { X = transformed[0], Y = transformed[1] };
+ }
+
/// <summary>
/// Calculates the bus position by reverse-traversing the shape from the stop location
/// </summary>