Saltar al contenido

Convertir coordenadas de EPSG 3857 a 4326 DotSpatial

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *