UTM坐标系

UTM(Universal Transverse Mercator Grid System, 通用横墨卡托网格系统)

1、UTM坐标系是投影坐标系

如何投影:墨卡托投影

这个投影简单来说就是从地心发出一条射线,经地表一点,在向外,与地球的外切圆柱体(南北方向交于一点),这个交点就是地表的这个点的墨卡托投影点。

显然极点附近的点在无穷远,因此不会取完整的纬度,而是只取中间的纬度。

这个视频说的比较明白:

墨卡托投影是怎么把一个“球”变成一张“图纸”的呢?

UTM的好处之一是,在这个UTM地图上连接两点画一条直线,再投影回地球上,如果有一条船在这两点之间航行,那么它不需要动罗盘就可以直达(墨卡托投影是等角投影,也就是地图上的两条直线的夹角投影回去仍然是这个夹角)。

2、UTM坐标系在经度方向分为60个区,每个区6度,一共360度

编号1-60

纬度分区:编号C-X(不含I,O,共20个区),每个区的南北跨度为 8°

3、UTM坐标的表示

在每个UTM坐标的分区内,UTM坐标以正东,正北的米值单位来表示位置(由于地球的投影畸变,实际的UTM坐标与米值单位之间还有一个0.9996的倍数关系,在高精度场合需要考虑),UTM的东向坐标的计算方式是,先取所在区域的经度中心线,令经度中心线的X0为500000,再取距离经度中心线向东的偏移量,如果在经度中心线东边,X坐标就大于X0,如果在经度中心线西边,X坐标就小于X0,但仍然是一个正数。

北向坐标的计算方式是,取距离赤道的向东的偏移量,在北半球一般取向东为X轴,向北为Y轴,向上为Z轴,这样也符合东北天的习惯,当然也可以取北东地。

这里看一个实际的UTM坐标的结构体定义例子:

struct UTMCoordinate {
    UTMCoordinate() = default;
    explicit UTMCoordinate(int zone, const Vec2d& xy = Vec2d::Zero(), bool north = true)
        : zone_(zone), xy_(xy), north_(north) {}

    int zone_ = 0;              // utm 区域
    Vec2d xy_ = Vec2d::Zero();  // utm xy
    double z_ = 0;              // z 高度
    bool north_ = true;         // 是否在北半球
};

这里的XYZ即上述东北天定义的XYZ坐标

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值