等角投影中的大圆线


12

只是为了检查我是否在正确的轨道上:

球体上和等矩形投影中的所有大圆(即纬度,经度对)是否为:

  1. 经络(即极点)
  2. 的形式 tan latitude = sin360(longitude + rotation) * amplitude + offset

(对偏移/振幅组合有附加限制-显然,所有振幅为0的大圆路径也都具有偏移0-赤道)。

还是存在不适合该方案的大圆路径(再次,仅在经纬度坐标系中,而不在其他地图投影上)。

注意:我tan在发布问题后添加了上述内容,以回应胡夫们的出色答复。事实证明,offset则始终为0。


形式2不是一组(纬度,经度)对。这是什么意思?当大圆自然只有两个参数时(为什么每个参数对应于一对“相对”的完全相反的点),为什么它取决于三个参数(rotationamplitudeoffset)?
whuber

是的,这是多余的,但是我还没有准备好公式。如前所述,amplitude==0暗含offset=0; 这两个显然是耦合的。有关缺失的信息latitude,请参见更新的问题,以使关系保持良好状态。
Erich Schubert

Answers:


11

尽管在某些投影中,大地测量学的确看起来有点像正弦波,但该公式是错误的。

这是等角投影中的一个测地线。显然这不是正弦波:

在此处输入图片说明

(背景图片取自http://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Equirectangular-projection.jpg/800px-Equirectangular-projection.jpg。)

由于所有等角投影都是该坐标的仿射变换(其中x坐标是经度,y坐标是纬度),而正弦波的仿射变换仍然是正弦波,因此我们不能期望任何形式的测地线等角投影为正弦波(赤道绘制为水平线除外)。因此,让我们从头开始,制定正确的公式。

让这样的测地线的方程式为

latitude = f(longitude)

以便找到功能f。(这种方法已经放弃了子午线,不能以这种形式编写,但是完全可以通用。)转换为3D笛卡尔坐标(x,y,z)可以得出

x = cos(l) cos(f(l))
y = sin(l) cos(f(l))
z = sin(f(l))

其中l是经度,假定单位半径(不失一般性)。由于球体上的测地线是与平面的交点(穿过其中心),因此必须存在一个恒定的向量(a,b,c),该向量指向测地线的极点之间,为此

a x + b y + c z = 0

无论l的值是多少。求解f(l)得到

f(l) = ArcTan(-(a cos(l) + b sin(l)) / c)

如果c为非零。显然,当c接近0时,我们在极限中获得了一相差180度的子午线,准确地说就是我们一开始就放弃的测地线。所以一切都很好。顺便说一句,尽管有出现,它仅使用了两个等于a / c和b / c的参数。

请注意,所有测地线都可以旋转,直到它们以零度经度越过赤道。这表明f(l)可以用f0(1-l0)来表示,其中l0是赤道交叉点的经度,f0是本初子午线测地线交叉点的表达式。由此我们得出等效公式

f(l) = ArcTan(gamma * sin(l - l0))

其中-180 <= l0 <180度是赤道交叉点的经度(当测地线向东移动时进入北半球),伽马为正实数。这不包括子午线对。当gamma = 0时,它指定赤道的起始点为经度l0;在这种情况下,如果我们希望唯一的参数化,我们可能总是取l0 = 0。仍然只有两个参数,这次由l0和gamma给出。


使用Mathematica 8.0创建图像。实际上,它创建了一种“动态操纵”,其中可以控制矢量(a,b,c)并立即显示相应的测地线。(这很酷。)首先,我们获得背景图像:

i = Import[
   "http://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/\
    Equirectangular-projection.jpg/800px-Equirectangular-projection.jpg"]

这是完整的代码:

Manipulate[
 {a, b, c} = {Cos[u] Cos[v], Sin[u] Cos[v], Sin[v]};
 Show[Graphics[{Texture[i], 
    Polygon[{{-\[Pi], -\[Pi]/2}, {\[Pi], -\[Pi]/2}, {\[Pi], \[Pi]/2}, {-\[Pi], \[Pi]/2}}, 
     VertexTextureCoordinates -> {{0, 0}, {1, 0}, {1, 1}, {0, 1}}]}], 
  Plot[ArcTan[(a Cos[\[Lambda]] + b Sin[\[Lambda]]) / (-c)], {\[Lambda], -\[Pi], \[Pi]}, 
   PlotRange -> {Automatic, {-\[Pi]/2, \[Pi]/2}}, PlotStyle -> {Thick, Red}]],
   {u, 0, 2 \[Pi]}, {v, -\[Pi]/2, \[Pi]}]

谢谢。我在arctan某个地方丢了那个。猜猜我是从arctan latitude某个地方开始的。
Erich Schubert

我希望我可以一次以上投票!
伊恩·特顿
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.