Victoria, miembro de este equipo, nos ha hecho el favor de escribir este escrito porque controla a la perfección dicho tema.
Solución:
Al final encuentro una fórmula matemática para convertir las coordenadas.
Lo implementé en un procedimiento almacenado porque tengo una lista de puntos y este procedimiento almacenado calcula la distancia.
DECLARE @e FLOAT=2.7182818284
DECLARE @X DECIMAL(18,2) =20037508.34
SET @StartLat3857 =(SELECT TOP 1 Latitude FROM Coordinates WHERE [email protected] ORDER By IdTDFPath ASC)
SET @StartLng3857=(SELECT TOP 1 Longitude FROM Coordinates WHERE [email protected] ORDER By IdTDFPath ASC)
--converting the logitute from epsg 3857 to 4326
SET @StartLng=(@StartLng3857*180)/@X
--converting the latitude from epsg 3857 to 4326
SET @StartLat = @StartLat3857/(@X/180)
SET @StartLat = ((ATAN(POWER(@e,((PI()/180)*@StartLat))))/(PI()/360))-90
Es un poco complicado proyectar. EPSG 3857
coordenadas a EPSG 4326
sistema coordinado. Microsoft recomienda usar ProjNet4GeoAPI
así que decidí usar eso.
https://docs.microsoft.com/en-us/ef/core/modeling/spatial#srid-ignored-durante-las-operaciones-del-cliente
He comprobado que funciona aquí:
http://epsg.io/transform#s_srs=3857&t_srs=4326&x=1530088.9600000&y=5085240.8300000
Ejemplo de conversión:
var x = 1530088.96d;
var y = 5085240.83d;
var epsg3857ProjectedCoordinateSystem = ProjNet.CoordinateSystems.ProjectedCoordinateSystem.WebMercator;
var epsg4326GeographicCoordinateSystem = ProjNet.CoordinateSystems.GeographicCoordinateSystem.WGS84;
var coordinateTransformationFactory = new ProjNet.CoordinateSystems.Transformations.CoordinateTransformationFactory();
var coordinateTransformation = coordinateTransformationFactory.CreateFromCoordinateSystems(epsg3857ProjectedCoordinateSystem, epsg4326GeographicCoordinateSystem);
var epsg3857Coordinate = new GeoAPI.Geometries.Coordinate(x, y);
var epsg4326Coordinate = coordinateTransformation.MathTransform.Transform(epsg3857Coordinate);
Te mostramos las comentarios y valoraciones de los usuarios
Si haces scroll puedes encontrar las explicaciones de otros desarrolladores, tú incluso eres capaz mostrar el tuyo si te apetece.