如何计算等角投影的畸变?


28

我正在尝试计算变形,以便使重叠的文本和表格变形以精确匹配等角投影的图像。

那么,如何在给定的纬度上以1:45,000,000(例如2000像素宽x 1000像素高)计算在给定纬度下的失真?

我一直在试图找出这篇文章及其链接无济于事: 如何创建一个准确的天梭Indicatrix?

我不是专业人士,只是一个非常感兴趣的业余爱好者,所以请为我哑巴!

非常感谢!


感谢您的及时答复!长话短说;我希望情况更清楚。

我正在使用Processing编程语言来可视化/映射数据,并希望将2D映射的数据(不同大小的字体和圆圈)包装到3D地球时看起来没有变形。数据是使用等角x,y映射的,而我要用作背景的地图都是这种投影,所以我假设我想“匹配”这种失真(例如,通过使用Tissot方程通过纬度计算失真)。使用编程语言,我可以精确地扭曲文本和圆圈。我认为我所需要的只是方程式,以正确地做到这一点。

这是原始的2D数据图:

在此处输入图片说明

包装后,它看起来像是扭曲的:

在此处输入图片说明

10,000美元的问题:当包裹在3D球体上时,如何使2D图像看起来不失真?

作为参考,以下在“处理”论坛上提出的同一问题

再次感谢!


如果我对您的理解正确,那么我不确定是否要重新投影为正交投影。我希望我的2D数据贴图可以包装到可以与之交互(即旋转)的3D球体模型。

我正在使用3D建模程序(电影院4D),用来自NASA 的2MB “蓝色大理石”图像(矩形矩形投影)包裹一个球体。

包裹后,它看起来与所有半球都没有变形(正射投影不只是一个半球?),请参见:仍来自上面的3D模型。(我猜想,建模程序正在旋转对象时为我做正投影。)因此,我认为,如果我以类似的方式扭曲2D数据贴图,它在3D球体上也将不会失真。这是我使用近似等矩形畸变的方程式拍摄的。您会注意到,包裹在3D球体上的2D图像中的卵形椭圆看起来像一个圆形。类似地,天梭椭圆形在3D球体上也显示为圆形。

天梭Indicatrix扭曲的圆圈 包裹到3D球面的扭曲圆

这就是为什么我一直在看Tissot方程的原因……为了更精确地找出在不同纬度上等矩形投影的变形,因此我可以相应地使叠加层变形。

希望这一切都有道理。

也许您是对的,我应该使用GIS程序。我刚刚下载了Cartographica,然后看看是否可以解决。Mac软件对从事此任务的新手有何建议?

再次感谢。


1
您是真的要计算失真,还是真的想知道如何计算投影本身?也许您可以使图像在Web上可用以说明您要完成的工作。您使用“匹配”时,建议您确定如何将一个图像转换为另一图像,这表明您需要指定您要开始的内容以及要结束的内容。
ub

1
我们知道在不知道专业术语的情况下很难描述您想做什么,但是听起来您正在尝试描述过程而不是结果。尝试从您要解决的问题开始,然后从您想要的结果开始,我们将尝试填补空白:)
MerseyViking 2012年

用技术术语来说:您想从等角投影重新投影为正投影(“空间世界”)投影。您可以使用什么软件?如果您拥有GIS软件或愿意根据投影库进行编码,则工作基本上已经为您完成。否则,你需要实现方程unprojecting的方形投影(容易)和投影的正投影(不太难,但要求在编码的数字程序的一些技巧)。
ub

1
我看到了这篇文章,并且我试图基本上做同样的事情。我想绘制在投影到3D球体上时会正确变形的2D圆。我想知道您是否愿意分享用于2D圆失真的算法?本来应该是评论而不是答案,但我写错了地方。抱歉。
HankTurbo 2012年

您应该在3D空间中绘制数据,然后将其投影回球体。
AngelLeliel 2012年

Answers:


5

包装到3D球体后,如何使2D图像看起来不失真?

图像坐标是经度和纬度,因此您要么

(a)取消投影,然后使用正投影或垂直近侧投影(即从太空看起来像世界的投影)重新投影,或

(b)使用lat-lon作为纹理坐标将其纹理映射到球的3D模型上,并使用3D图形渲染设备显示该球。

大多数GIS通常(a)定期执行。为了说明(b),这是从围绕纹理贴图球体的视点拍摄的问题中的“平面”贴图得出的一组图像:

太空世界

(如果您仔细观察最右边的图像,您会在太平洋上看到一个突出的子午线:这是通过将地图的左右两侧包裹在一起而形成的“接缝”。)

产生其中之一的基本Mathematica命令是

SphericalPlot3D[1, {a, 0, \[Pi]}, {b, 0, 2 \[Pi]}, Mesh -> None, 
 PlotStyle -> {Texture[i]}, TextureCoordinateFunction -> ({#5, -#4} &), 
 Lighting -> {{"Ambient", White}}, 
 Boxed -> False, Axes -> False, Background -> Black]

这样可以减少原始问题(在球体上绘制“数据图”)来生成可正确显示圆的图。 最好的投影是Stereographic,因为它将球体上的所有圆(无论大小)投影到地图上的圆上。因此,如问题所示,一种在等角投影中正确绘制大圆的方法是在立体投影中创建它们,然后将其取消投影到地理坐标(纬度,经度)。使用(lon,lat)作为(x,y)直角坐标来制作地图等同于等角投影,因此适用于在球体上进行纹理贴图或应用正交投影。


请注意,天梭d度不适用于解决方案:它们仅代表无限小圆的局部变形。在大多数投影中,即使大到可以在全球范围内看到的圆圈也将不再显示圆形:在问题地图中见证其圆滑的外观。这就是为什么玩具有投影的游戏(如此处所示)对于获得良好解决方案至关重要。


感谢您提供的信息非常丰富!我采用(b)作为方法,手头有一个正确生成的等矩形贴图,但是在将贴图映射到3D球体时会遇到丑陋的极点畸变。您能帮忙吗?gis.stackexchange.com/questions/245315/...
Sibbs赌博

2

假设绘制的形状覆盖了球体的一小部分,则应该能够通过将宽度缩放1 / cos(lat)并保持高度不变来实现。

形状越大,越靠近杆子,效果越差。


你能解释为什么这行得通吗?在示例图像中,即使在球体渲染边缘附近的一小部分,它也似乎会严重失效。
ub

谢谢你的编辑;因此,我删除了弃权票,因为您的回答对我而言似乎是正确的,并且将来可能对某些人有用。不过,在审查这个问题时,似乎没有人会把这么小的形状包裹在球体上,而当他们这样做时,他们将需要处理两极以及其他任何地方。
whuber

0

我不知道如何添加评论,因此将其添加到解决方案中,让主持人争先恐后地找出为什么我无法评论。

在阅读您的问题时,我的第一印象是“为什么不像墨卡托那样在保形投影中设计圆”。您可以将此地图投影到Mercator投影中,查看圆和文本变形,将所有内容固定为看起来不错,并且在将其投影到地球上时,形状应保持正确(即共形投影的定义)。


2
这听起来像是对我的答案,所以我将其保留。但这是基于错误的理解,是不正确的:保形投影不能将所有圆都投影到各个圆上。他们只是无限地这样做两者之间的区别是巨大的:例如,考虑墨卡托对绕地球轴的任何圆所做的操作。它不可能将其映射为圆-必须在某个位置将其断开。有关此的更多讨论,请在我们的网站上搜索天梭
ub

1
“他们只是无限地这样做。” ->“它们只对极小的人这样做。”
Martin F

0

请参阅,您的第一个2D地图没有绘制地理特征。将它们添加到此地图(例如非洲等高线)中,然后将您正在考虑的变形立即应用于所有内容。地理也会被修改,当您将其放到球体上时,那是错误的。因此,我相信这个带有一些失真的想法是行不通的。

通过在面积有限且可接受的变形的小型2D地图中绘制图形,您可能会获得2D效果。您可以将2D地图切成图块,对于每个图块,使用它自己的“最佳”投影。

另一方面,在2D地图上给定半径的测地圆上创建点很容易。为此,您需要找到一个函数,该函数可以计算给定点与另一点之间的距离和方位角的经度/纬度(搜索“直接问题Vincenty”)。一旦知道了这一点,就可以通过将方位角从0更改为360来在距该点给定距离的位置生成一堆等距点。如果测地线圆包含一个极点或相交,则在2D中用这些点制作多边形需要更多的工作地图的左边界或右边界。在此处查看测地圆在平面地图上的外观。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.