地图投影中的墨卡托投影

文章详细介绍了地图投影中的墨卡托投影,这是一种等角正轴圆柱投影方法。内容包括投影的基础定义、变形类型(长度、面积、角度)以及变形椭圆的概念。特别地,文章通过数学推导展示了如何从球面坐标转换到平面坐标,同时保持角度不变形,适合航海和地图制作。此外,还提供了两种不同的计算墨卡托投影的实现代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

地图投影中的墨卡托投影

1、基础和定义
  • R R R 地球半径
  • 弧长公式 l = R α l = R \alpha l=Rα
2、地图投影的定义

地图投影: 一种将球面上的点转换为平面上的点的方法。

请添加图片描述

目标是建立平面上的点(平面直角坐标系)和球面上的点(经纬度)之间的函数关系。
x = f 1 ( ϕ , γ ) y = f 2 ( ϕ , γ ) x = f1(\phi, \gamma) \\ y = f2(\phi, \gamma) \\ x=f1(ϕ,γ)y=f2(ϕ,γ)

2、地图投影变形

投影变形分为: 长度变形, 面积变形, 角度变形。

请添加图片描述

1) 长度变形

长度比 : μ = d s ′ / d s = A ′ B ′ A B 长度比: \mu = ds'/ds = \frac{A'B'}{AB} 长度比:μ=ds/ds=ABAB

2) 面积变形

面积比 : P = d F ′ / d F = S A ′ B ′ C ′ D ′ S A B C D 面积比: P = dF'/dF = \frac{S_{A'B'C'D'}}{S_{ABCD}} 面积比:P=dF/dF=SABCDSABCD

3) 角度变形
Δ u = μ − μ ′ = ( 180 − 2 α ) − ( 180 − 2 α ′ ) = 2 ( α − α ′ ) \begin{aligned} \Delta u &= \mu - \mu' \\ &= (180 - 2 \alpha) - (180 - 2 \alpha') \\ &= 2(\alpha - \alpha') \end{aligned} Δu=μμ=(1802α)(1802α)=2(αα)

请添加图片描述

A点的坐标为(x, y)
A’点的坐标为(x’, y’)

t a n   α = y x , t a n   α ′ = y ′ x ′ tan \thinspace \alpha = \frac{y}{x}, \quad tan \thinspace \alpha' = \frac{y'}{x'} tanα=xy,tanα=xy

a极大经度长度比, b极大纬度长度比,有:
a = y x , b = y ′ y a = \frac{y}{x}, \quad b = \frac{y'}{y} a=xy,b=yy

有:
t a n   α ′ = b y a x = b a t a n   α tan \thinspace \alpha' = \frac{by}{ax} = \frac{b}{a} tan \thinspace \alpha tanα=axby=abtanα

将上式两边用 t a n   α tan \thinspace \alpha tanα 各减和加 即:
t a n   α − t a n   α ′ = t a n   α − b a t a n   α = t a n   α ( 1 − b a ) tan \thinspace \alpha - tan \thinspace \alpha' = tan \thinspace \alpha - \frac{b}{a} tan \thinspace \alpha = tan \thinspace \alpha(1-\frac{b}{a}) tanαtanα=tanαabtanα=tanα(1ab)

t a n   α + t a n   α ′ = t a n   α + b a t a n   α = t a n   α ( 1 + b a ) tan \thinspace \alpha + tan \thinspace \alpha' = tan \thinspace \alpha + \frac{b}{a} tan \thinspace \alpha= tan \thinspace \alpha(1 + \frac{b}{a}) tanα+tanα=tanα+abtanα=tanα(1+ab)

因为:
t a n   a + t a n   b = s i n   a c o s   a + s i n   b c o s   b = s i n   a   c o s   b + s i n   b   c o s   a c o s   a   c o s   b = s i n   ( a + b ) c o s   a   c o s   b \begin{aligned} tan \thinspace a + tan \thinspace b &= \frac{sin \thinspace a}{cos \thinspace a} + \frac{sin \thinspace b}{cos \thinspace b} \\ &= \frac{sin \thinspace a \thinspace cos \thinspace b + sin \thinspace b \thinspace cos \thinspace a}{cos \thinspace a \thinspace cos \thinspace b} \\ &= \frac{sin \thinspace (a+b)}{cos \thinspace a \thinspace cos \thinspace b} \end{aligned} tana+tanb=cosasina+cosbsinb=cosacosbsinacosb+sinbcosa=cosacosbsin(a+b)

所以:
s i n ( α − α ′ ) c o s α   c o s α ′ = a − b a t a n α \frac{sin(\alpha - \alpha')}{cos \alpha \thinspace cos \alpha'} = \frac{a-b}{a} tan \alpha cosαcosαsin(αα)=aabtanα

s i n ( α + α ′ ) c o s α   c o s α ′ = a + b a t a n α \frac{sin(\alpha + \alpha')}{cos \alpha \thinspace cos \alpha'} = \frac{a+b}{a} tan \alpha cosαcosαsin(α+α)=aa+btanα

将上面两个式子相除有:
s i n ( α − α ′ ) s i n ( α + α ′ ) = a − b a + b \frac{sin(\alpha - \alpha')}{sin(\alpha + \alpha')} = \frac{a-b}{a+b} \\ sin(α+α)sin(αα)=a+bab

有:
s i n ( α − α ′ ) = a − b a + b s i n ( α + α ′ ) sin(\alpha - \alpha') = \frac{a-b}{a+b} sin(\alpha + \alpha') sin(αα)=a+babsin(α+α)

那么任意角度变形 Δ u \Delta u Δu:
s i n ( Δ u 2 ) = a − b a + b s i n ( α + α ′ ) sin(\frac{\Delta u}{2}) = \frac{a-b}{a+b} sin(\alpha + \alpha') sin(2Δu)=a+babsin(α+α)

那么最大度变形 ω \omega ω:
s i n ( ω 2 ) = a − b a + b sin(\frac{\omega}{2}) = \frac{a-b}{a+b} sin(2ω)=a+bab

等角变换
如果是等角变换,那么 Δ u = ω = 0 \Delta u = \omega = 0 Δu=ω=0, 那么 a = b a = b a=b
请添加图片描述

4) 变形椭圆
上面三种变形都可以使用变形椭圆来刻画。

在球面上取一个微分圆,投影到球面上会变成一个椭圆。这种方法叫变形椭圆。
请添加图片描述

图片出处-新编地图学教程第二章

m m m经线长度比, n n n纬线长度比。
X ′ X = m Y ′ Y = n \frac{X'}{X} = m \quad\frac{Y'}{Y} = n XX=mYY=n

带入到圆公式 x 2 + y 2 = 1 x^2 + y^2 = 1 x2+y2=1, 有:
X ′ 2 m 2 + Y ′ 2 n 2 = 1 \frac{X'^2}{m^2} + \frac{Y'^2}{n^2} = 1 m2X′2+n2Y′2=1

因此说明, 地球面上的微小圆,投影后通常会变为椭圆。

3、圆柱投影

当圆柱的中心轴与地球自转轴重合时, 称为正圆柱投影。
当圆柱的中心轴与地球自转轴垂直时, 横为正圆柱投影。

请添加图片描述

正圆柱投影特点:

  • 纬线是一组彼此平行的直线。
  • 经线是一组垂直于纬线的直线,且经线间隔相等

请添加图片描述

4、墨卡托投影

等角正轴圆柱投影。由荷兰地图学家墨卡托(Mercator Gerardus,1512—1594)于1569年所创设,故又名墨卡托投影。
请添加图片描述

推导方式1

参考

其中 R R R 是地球半径, 经度 λ \lambda λ,纬度 ϕ \phi ϕ:
ϕ ∈ ( − π 2 , π 2 ) \phi\in(-\frac{\pi}{2},\frac{\pi}{2}) \\ ϕ(2π,2π)

λ ∈ ( − π , π ) \lambda\in(-\pi,\pi) \\ λ(π,π)

B、C所在纬线圈的半径:
r = R c o s ϕ r = R cos \phi r=Rcosϕ

BC的弧长为纬线圈半径与两点经度差之积:
B C = r Δ λ = R c o s ϕ Δ λ BC = r \Delta \lambda = R cos \phi \Delta \lambda BC=rΔλ=RcosϕΔλ

A B = R Δ ϕ AB = R \Delta \phi AB=RΔϕ

投影到平面后:
B ′ C ′ = Δ x A ′ B ′ = Δ y B'C' = \Delta x \\ A'B' = \Delta y \\ BC=ΔxAB=Δy

因为投影后将每一个纬线圈都放大到与赤道圆相同大小,所以投影后 Δ x \Delta x Δx长度就是A’D’经度夹角与赤道圆半径的乘积,即:
Δ x = R Δ λ \Delta x = R \Delta \lambda Δx=RΔλ

由于投影后需要保证航线角相同,所以:
B C A B = B ′ C ′ A ′ B ′ \frac{BC}{AB} = \frac{B'C'}{A'B'} ABBC=ABBC

带人有:
R c o s ϕ Δ λ R Δ ϕ = Δ x Δ y \frac{R cos \phi \Delta \lambda}{R \Delta \phi} = \frac{\Delta x}{\Delta y} \\ RΔϕRcosϕΔλ=ΔyΔx

⇒ Δ y Δ ϕ = Δ x Δ λ cos ⁡ ϕ \Rightarrow \frac{\Delta y}{\Delta\phi} = \frac{\Delta x}{\Delta\lambda\cos \phi} \\ ΔϕΔy=ΔλcosϕΔx

⇒ Δ y Δ ϕ = R Δ λ Δ λ cos ⁡ ϕ = R c o s ϕ \Rightarrow \frac{\Delta y}{\Delta\phi} = \frac{R \Delta \lambda}{\Delta\lambda\cos \phi} = \frac{R}{cos \phi} ΔϕΔy=ΔλcosϕRΔλ=cosϕR

根据导数定义,上式即:
y ′ ( ϕ ) = R cos ⁡ ϕ y^\prime(\phi)=\frac{R}{\cos \phi} y(ϕ)=cosϕR

下面积分求 y ( ϕ ) y(\phi) y(ϕ)就可以了:
y ( ϕ ) = ∫ y ′ ( ϕ ) d ϕ = R ∫ 1 cos ⁡ ϕ d ϕ = R ∫ 1 cos ⁡ 2 ϕ d sin ⁡ ϕ = R ∫ 1 1 − sin ⁡ 2 ϕ d sin ⁡ ϕ \begin{aligned} y(\phi) &= \int y^\prime(\phi)d\phi=R\int\frac{1}{\cos\phi}d\phi \\ &= R\int\frac{1}{\cos^2\phi}d\sin\phi=R\int\frac{1}{1-\sin^2\phi}d\sin\phi \end{aligned} y(ϕ)=y(ϕ)dϕ=Rcosϕ1dϕ=Rcos2ϕ1dsinϕ=R1sin2ϕ1dsinϕ

t = sin ⁡ ϕ t = \sin \phi t=sinϕ:
y ( ϕ ) = R ∫ 1 1 − t 2 d t = R 2 ∫ ( 1 1 + t + 1 1 − t ) d t y(\phi)=R\int\frac{1}{1-t^2}dt=\frac{R}{2}\int(\frac{1}{1+t}+\frac{1}{1-t})dt y(ϕ)=R1t21dt=2R(1+t1+1t1)dt

易得:
y ( ϕ ) = R 2 ln ⁡ ∣ 1 + t 1 − t ∣ = R 2 ln ⁡ ∣ 1 + sin ⁡ ϕ 1 − sin ⁡ ϕ ∣ y(\phi)=\frac{R}{2}\ln|\frac{1+t}{1-t}|=\frac{R}{2}\ln|\frac{1+\sin\phi}{1-\sin\phi}|\\ y(ϕ)=2Rln1t1+t=2Rln1sinϕ1+sinϕ

y ( ϕ ) = R 2 ln ⁡ ∣ ( 1 + sin ⁡ ϕ ) 2 1 − sin ⁡ 2 ϕ ∣ = R ln ⁡ 1 + sin ⁡ ϕ cos ⁡ ϕ y(\phi) = \frac{R}{2}\ln|\frac{(1+\sin \phi)^2}{1-\sin^2\phi}|=R\ln\frac{1+\sin \phi}{\cos \phi} y(ϕ)=2Rln1sin2ϕ(1+sinϕ)2=Rlncosϕ1+sinϕ

推导方式2

参考1

参考2
纬度使用 $\theta $ 表示。

x = λ y = f ( ϕ ) \begin{aligned} x &= \lambda \\ y &= f(\phi) \end{aligned} xy=λ=f(ϕ)

投影后的 y y y 坐标是关于纬度 ϕ \phi ϕ 的函数。

请添加图片描述

赤道的周长:
2 π R 2\pi R 2πR

D点所在纬度圆的周长:
2 π R cos ⁡ θ 2 \pi R \cos \theta 2πRcosθ

因为所有纬度投影后都与赤道长度相同, 所以纬度处的任何线 θ \theta θ 最终都会水平拉伸 1 / cos ⁡ θ 1/\cos \theta 1/cosθ

最后,为了满足等角的性质, 地图中水平拉伸某个因子的任何部分,例如 k k k ,必须由相同的因子 $k $垂直拉伸。这样做可以保留地图该部分的角度:
请添加图片描述

因此, 水平方向(x)被拉伸了 1 / cos ⁡ θ 1/\cos \theta 1/cosθ, 那么垂直方向(x)也会被拉伸 1 / cos ⁡ θ 1/\cos \theta 1/cosθ

但是 k x kx kx k y ky ky 这种线性等比缩放只有在这个面积非常小的情况小才成立。用极限表示就是:
l i m Δ θ → 0 Δ y Δ θ = d y d θ = 1 c o s θ lim_{\Delta \theta \to 0} \frac{\Delta y}{\Delta \theta} = \frac{dy}{d\theta} = \frac{1}{cos \theta} limΔθ0ΔθΔy=dθdy=cosθ1

请添加图片描述

实现代码
//方法一
  //[114.32894, 30.585748]
function latLng2WebMercator(lng, lat) {
    var earthRad = 6378137.0;
    var x = lng * Math.PI / 180 * earthRad;
    var a = lat * Math.PI / 180;
    var y = earthRad / 2 * Math.log((1.0 + Math.sin(a)) / (1.0 - Math.sin(a)));

    //[12727039.383734727, 3579066.6894065146]
    return [x, y];
}
//方法二
function latLng2WebMercator2 (lng, lat)
{
    var x = lng *20037508.34/180;
    var y = Math.log(Math.tan((90+lat)*Math.PI/360))/(Math.PI/180);
    y = y *20037508.34/180;
    return [x, y];
}
### RT-DETRv3 网络结构分析 RT-DETRv3 是一种基于 Transformer 的实时端到端目标检测算法,其核心在于通过引入分层密集正监督方法以及一系列创新性的训练策略,解决了传统 DETR 模型收敛慢和解码器训练不足的问题。以下是 RT-DETRv3 的主要网络结构特点: #### 1. **基于 CNN 的辅助分支** 为了增强编码器的特征表示能力,RT-DETRv3 引入了一个基于卷积神经网络 (CNN) 的辅助分支[^3]。这一分支提供了密集的监督信号,能够与原始解码器协同工作,从而提升整体性能。 ```python class AuxiliaryBranch(nn.Module): def __init__(self, in_channels, out_channels): super(AuxiliaryBranch, self).__init__() self.conv = nn.Conv2d(in_channels, out_channels, kernel_size=3, padding=1) self.bn = nn.BatchNorm2d(out_channels) def forward(self, x): return F.relu(self.bn(self.conv(x))) ``` 此部分的设计灵感来源于传统的 CNN 架构,例如 YOLO 系列中的 CSPNet 和 PAN 结构[^2],这些技术被用来优化特征提取效率并减少计算开销。 --- #### 2. **自注意力扰动学习策略** 为解决解码器训练不足的问题,RT-DETRv3 提出了一种名为 *self-att 扰动* 的新学习策略。这种策略通过对多个查询组中阳性样本的标签分配进行多样化处理,有效增加了阳例的数量,进而提高了模型的学习能力和泛化性能。 具体实现方式是在训练过程中动态调整注意力权重分布,确保更多的高质量查询可以与真实标注 (Ground Truth) 进行匹配。 --- #### 3. **共享权重解编码器分支** 除了上述改进外,RT-DETRv3 还引入了一个共享权重的解编码器分支,专门用于提供密集的正向监督信号。这一设计不仅简化了模型架构,还显著降低了参数量和推理时间,使其更适合实时应用需求。 ```python class SharedDecoderEncoder(nn.Module): def __init__(self, d_model, nhead, num_layers): super(SharedDecoderEncoder, self).__init__() decoder_layer = nn.TransformerDecoderLayer(d_model=d_model, nhead=nhead) self.decoder = nn.TransformerDecoder(decoder_layer, num_layers=num_layers) def forward(self, tgt, memory): return self.decoder(tgt=tgt, memory=memory) ``` 通过这种方式,RT-DETRv3 实现了高效的目标检测流程,在保持高精度的同时大幅缩短了推理延迟。 --- #### 4. **与其他模型的关系** 值得一提的是,RT-DETRv3 并未完全抛弃经典的 CNN 技术,而是将其与 Transformer 结合起来形成混合架构[^4]。例如,它采用了 YOLO 系列中的 RepNCSP 模块替代冗余的多尺度自注意力层,从而减少了不必要的计算负担。 此外,RT-DETRv3 还借鉴了 DETR 的一对一匹配策略,并在此基础上进行了优化,进一步提升了小目标检测的能力。 --- ### 总结 综上所述,RT-DETRv3 的网络结构主要包括以下几个关键组件:基于 CNN 的辅助分支、自注意力扰动学习策略、共享权重解编码器分支以及混合编码器设计。这些技术创新共同推动了实时目标检测领域的发展,使其在复杂场景下的表现更加出色。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值