gpt4 book ai didi

javascript - 将坐标从 EPSG 3857 转换为 4326

转载 作者:行者123 更新时间:2023-11-30 14:50:05 25 4
gpt4 key购买 nike

我的数据库中有一个 EPSG 3857 格式的坐标列表。我需要将它们转换为 EPSG 4326我正在尝试使用 DotSpatial,但我的代码总是重新调整无限大的双数组。

public double[] ConvertCoodinates()
{
double[] xy = new double[2];
xy[0] = 5085240.8300000000;
xy[1] = 1530088.9600000000;
//An array for the z coordinate
double[] z = new double[1];
z[0] = 0;
ProjectionInfo pStart = KnownCoordinateSystems.Geographic.World.WGS1984;
pStart.AuthorityCode = 3857;
ProjectionInfo pEnd = KnownCoordinateSystems.Geographic.World.WGS1984;
pEnd.AuthorityCode = 4326;
Reproject.ReprojectPoints(xy, z, pStart, pEnd, 0, 1);
return xy;
}

xy 数组总是包含无穷大;有人可以帮助我吗?

最佳答案

最后我找到了一个数学公式来转换坐标。

我在一个存储过程中实现它,因为我有一个点列表,这个存储过程计算距离。

DECLARE @e FLOAT=2.7182818284
DECLARE @X DECIMAL(18,2) =20037508.34

SET @StartLat3857 =(SELECT TOP 1 Latitude FROM Coordinates WHERE IdCoord=@IdCoord ORDER By IdTDFPath ASC)
SET @StartLng3857=(SELECT TOP 1 Longitude FROM Coordinates WHERE IdCoord=@IdCoord 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

最后只是一个可以在所有语言中使用的数学公式。例如是 Javascript 它将是

const e = 2.7182818284
const X = 20037508.34

const lat3857 = 1743704.947843
const long3857 = 16978473.105100

//converting the logitute from epsg 3857 to 4326
const long4326 = (lat3857*180)/X

//converting the latitude from epsg 3857 to 4326 split in multiple lines for readability

let lat4326 = lat3857/(X / 180)
const exponent = (Math.PI / 180) * lat4326

lat4326 = Math.atan(e ** exponent)
lat4326 = lat4326 / (Math.PI / 360)
lat4326 = lat4326 - 90

关于javascript - 将坐标从 EPSG 3857 转换为 4326,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37523872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com