Have fun with sci.dog

大地坐标转换问题

前段时间,同事碰到一个问题,关于经纬度和大地坐标的转换问题。

简单来说,由于地球是椭球,经纬度是球面坐标,而我们的地图呢,通常都是笛卡尔坐标,因此,经纬度和大地坐标之间的转换需要一个映射。

1、投影变换

目前,通常采用的是Gauss-Krugerprojection投影变换,关于这个投影变换,网上资料很多。简单来说,就是把地球切成120份或者60份,每一份上建立一个局部坐标系。

2、关于椭球模型

这就是通常来讲的WGS84,西安80,北京54,WCGS2000一类的。简单来说,就是地球不是一个标准的椭球,如果用一个椭球去拟合地球的形状,要求整体误差最小,那就是WGS84。如果要求某个特定的区域误差最小,那就是特定的椭球了,因此,不同的国家为了让椭球更好的表征自己国家的地貌,都建立了不同的椭球,那么中国最早是北京54,后来是西安80,显然,西安更靠近中国中心,整体误差更小,2020年后,中国推广的都是WCGS2000了。

这个椭球模型干啥呢?其实不同的椭球就是球心坐标和长、短轴三个参数不同了。这些参数是投影变换所需要的参数。

3、投影变换所需数据

显然,一需要椭球模型,二需要知道要转换的位置属于哪个局部坐标系。这里有个网站,可以查询

EPSG Geodetic Parameter Dataset

看这个表,里面有椭球类型,有3-degree,或者6-degree,还有经度范围,因此,我们根据这些信息,最后确定自己的code,matlab会根据这个code确定椭球参数和其他转换参数

4、matlab转换

首先,确定一个code,转换很简单,使用地图工具图

code = 4507;
pro  = projcrs(code);
[x,y] = pro.projfwd(lat,lon); % 经纬度转大地坐标
[lat,lon] = pro.projinv(x,y); % 大地坐标转经纬度

5、同事的问题

如果这个问题如此简单,那么网上其实是有许多免费的小软件可以转换的,还需要matlab?

同事的问题其实是他有一套地形坐标,简单理解为一个多边形吧,这个多边形的大部分点是位于18带的,但有几个位于19带,如果用网上的转换工具,那么转换后的坐标里既有18带的,又有19带的,问题就出来了,18带和19带是俩坐标系,没法花在一张图上的。

这种问题怎么解决呢?显然我们需要把个别19带的坐标点以18带的坐标系进行投影!。

赞(0)
未经允许不得转载:SciDog » 大地坐标转换问题

评论 抢沙发