在Matlab中从Popular Visualization Pseudo Mercator转换为球形(WGS84)坐标

问题描述 投票:1回答:2

我在Popular Visualization Pseudo Mercator投影(EPSG 3857)中有一个x和y坐标数组,并希望在Matlab中将其转换为普通的lat / long球形投影系统(EPSG:4326)。在Open Earth Toolbox中有一个用于转换坐标的例程,但是尚不支持与Popular Visualization Pseudo Mercator的转换。

有没有人有关于转换的任何信息?一个指导的公式也可以是有用的,我可以集成在Matlab中。

谢谢!

matlab coordinate-transformation
2个回答
1
投票

灵性? http://georepository.com/projection_3856/Popular-Visualisation-Pseudo-Mercator.html

注意:这些公式已经从EPSG指导说明#7-2转录。鼓励用户使用该文档而不是随后的文本作为参考,因为将避免转录的限制。

一些流行的Web映射和可视化应用程序使用此方法。它将标准墨卡托(球面)公式(方法代码1026)应用于椭圆体坐标,并且球体半径被认为是椭球体的半长轴。这种方法仅近似于椭球公式对椭球坐标的更严格应用(如EPSG数据集坐标操作方法代码9804和9805中所给出的)。与球形或椭圆形墨卡托投影方法不同,此方法不是保形的:比例因子随方位角的变化而变化,从而产生角度失真。尽管角度失真,但子午线中没有会聚。

从椭圆体纬度(纬度)和经度(lon)导出投影东方和北方坐标的公式首先从以下公式得出球体(R)的半径:R = a

然后应用球形墨卡托公式:

E = FE + R(lon - lonO)N = FN + R ln [tan(pi / 4 + lat / 2)]其中FE和FN是假向东,在投影原点没有任何错误,其他符号如上所列,对数很自然。

如果纬度lat =90º,则N为无穷大。 N的上述公式将在极点附近失效,不应在88º的极向上使用。

从E和N值导出球体上的纬度和经度的反公式为:D = - (N-FN)/ R =(FN-N)/ R lat = pi / 2 - 2 atan(e ^ D)其中e =自然对数的基数,2.7182818 ... lon = [(E - FE)/ R] + lonO

如果q_alpha是给定方位角α的比例因子,则它是R'的函数,该方位角的曲率半径来自:R'= rho nu /(nu cos ^ 2alpha + rho sin ^ 2alpha)q_alpha = R /(R'cos lat)其中rho和nu分别是子午线平面中纬度纬度和垂直于子午线的椭圆体的曲率半径; rho = a(1 - e ^ 2)/(1 - e ^ 2 sin ^ 2(lat))^ 3/2 nu = a /(1 - e ^ 2 sin ^ 2(lat))^ 1/2

然后当方位角为0º,180º,90º或270º时,子午线(h)和平行(k)上的比例因子为:q_0 = q_180 = h = R /(rho cos(lat))q_90 = q_270 = k = R /(nu cos(lat)),它证明了伪墨卡托方法的非共形性。

最大角度失真omega是纬度的函数,可以从:omega = 2 asin {[ABS(h - k)] /(h + k)}找到


0
投票

我在尝试获取我的模型在R中生成的一些空间点的坐标时遇到了同样的问题,并且花了我几个小时才找到解决方案。

毕竟,我所做的是将我的地图导入QGIS(安装非常简单),然后将地图(右键单击 - >另存为)保存为实际的WGS84而不是psedo Merc。

我希望这也能帮助别人。

© www.soinside.com 2019 - 2024. All rights reserved.