墨卡托投影正反转换程序说明

一、编者语

二、地图投影的选择

三、大地基准面的选择

四、墨卡托投影

五、单点转换

六、批量转换

一、编者语

    本程序是常用地图投影系列小程序之一,程序能用于不同基准面上单点及批量数据的墨卡托投影正、反转换,正投影时的输入经纬度数据可以是度、度分及度分秒格式。

    墨卡托投影正、反转换动态连接库接口:

正投影接口:MT(latitude,longitude:double; var xx,yy:Double; centralat,centralon:Double; Datum:integer)

反投影接口:MTinv(xx,yy:double;var latitude,longitude:Double;centralat,centralon:Double; Datum:integer)

参数说明:latitude,longitude--纬度与经度,单位度;xx,yy--横向(经度方向)及纵向(纬度方向)坐标,单位米;centralat,centralon--标准纬度及原点经度(一般为0),单位度;Datum--椭球体,1-北京54,2-西安80,3-WGS84。

    本套系列程序最初在2004年4月完成,包括“3°、6°带高斯-克吕格投影正反转换程序”、“墨卡托投影正反转换程序”及“兰勃特等角投影正反转换程序”。2005年3月根据用户反馈作了更新,更新后增加了“UTM投影正反转换程序”,其中包括UTM直接转高斯-克吕格投影的功能,更新后反投影精度提高,反算能完全精确到小数后六位的度。2005年4月根据北京航遥一用户需求增加了“Albers等面积投影正、反转换程序”。2006年11月根据大连环境检测中心一用户要求增加了“UTM与墨卡托投影正反转换程序”,用于多波束数据的坐标转换。

    此次更新在帮助文件中增加了动态连接库接口说明,供开发调用。另外在打包文件中增加了“常用地图投影转换公式”及翻译的“坐标系转换公式”,供参考。需要说明的是本套程序没有涉及坐标系的转换,只是同坐标系的投影转换。

    编制这套程序原因有三:之一,本人工作中常需要投影计算,现有软件使用不太方便;之二,常发现用十进制度坐标数据作正式成果图的现象,可能是手头没有合适的投影软件所至;之三,常发现WGS84定位数据被当作北京54(克拉索夫斯基椭球体)坐标数据投影,可能是沿用早年的投影转换程序所至。这些原因促成了我编制一套简单实用、在Windows环境下的常用地图投影小程序的想法。编制完成后放在兔八哥的GIS空间站上 http://www.gissky.net,收到了不少用户反馈,我写“常用地图投影转换公式”及翻译“坐标系转换公式”应该说也是在用户建议下完成的,有个陕西的用户还给我发来了最新的Coordinate Conversions and Transformation including Formulas”(POSChttp://www.posc.org ,国际石油技术软件开放公司),在此一并表示感谢。

    有用户建议将这些小程序合并成一个总的投影转换软件,我考虑了一下最后还是保留了原来状态,一方面实际中同时用多种投影的情况不多,另一方面我的初衷是做小程序,简单而实用。

                                          2006年12月,青岛海洋地质研究所 戴勤奋,Email:qddqinfen@cgs.gov.cn

返回

二、地图投影的选择

    选择投影的目的在于使所选投影的性质、特点适合于地图的用途,同时考虑地图在图廓范围内变形较小而且变形分布均匀。

    我国的基本比例尺地形图(1:5千,1:1万,1:2.5万,1:5万,1:10万,1:25万,1:50万,1:100万)中,大于等于50万的多采用高斯-克吕格投影(Gauss-Kruger),这是一个等角横切椭圆柱投影,是横轴墨卡托投影(Transverse Mercator)的一个变种;小于50万的地形图采用等角正轴割园锥投影,又叫兰勃特等角投影(Lambert Conformal Conic);海上小于50万的地形图多用等角正轴圆柱投影,又叫墨卡托投影(Mercator)。一般应该采用与我国基本比例尺地形图系列一致的地图投影系统。   

返回

三、大地基准面的选择

    地图坐标系由大地基准面和地图投影确定,大地基准面是利用特定椭球体对特定地区地球表面的逼近,因此每个国家或地区均有各自的大地基准面,我们通常称谓的北京54坐标系、西安80坐标系实际上指的是我国的两个大地基准面。我国参照前苏联从1953年起采用克拉索夫斯基(Krassovsky)椭球体建立了我国的北京54坐标系,1978年采用国际大地测量协会推荐的IAG 75地球椭球体建立了我国新的大地坐标系--西安80坐标系, 目前GPS定位所得出的结果都属于WGS84坐标系统,WGS84基准面采用WGS84椭球体,它是一地心坐标系,即以地心作为椭球体中心的坐标系。相对同一地理位置,不同的大地基准面,它们的经纬度坐标是有差异的。需要说明的是,在常用地图投影系列小程序”中,程序界面上的所谓“北京1954西安1980”及“WGS 84”在实际计算中只涉及了相应的椭球体参数,与实际基准面无关。

   本程序中采用的3个椭球体参数如下(源自“全球定位系统测量规范 GB/T 18314-2001”):

椭球体 长半轴  短半轴
Krassovsky  6378245 6356863.0188
IAG 75 6378140 6356755.2882
WGS 84 6378137 6356752.3142

    椭球体与大地基准面之间的关系是一对多的关系,也就是基准面是在椭球体基础上建立的,但椭球体不能代表基准面,同样的椭球体能定义不同的基准面,如前苏联的Pulkovo 1942、索马里的Afgooye基准面都采用了Krassovsky椭球体,但它们的大地基准面显然是不同的。在目前的GIS商用软件中,大地基准面都通过当地基准面向WGS84的转换7参数来定义,即三个平移参数ΔX、ΔY、ΔZ表示两坐标原点的平移值;三个旋转参数εx、εy、εz表示当地坐标系旋转至与地心坐标系平行时,分别绕Xt、Yt、Zt的旋转角;最后是比例校正因子,用于调整椭球大小。我国的北京54、西安80相对WGS84的转换参数保密,至今没有公开。实际工作中可通过当地测绘部门获取相应参数,或利用工作区内已知的北京54或西安80坐标控制点计算,计算方法有“三参数莫洛金斯基(Molodenski)”法,“七参数布尔莎(Bursa-Wolf)”法,及多项式或线性转换等。

    以(32°,121°)的30°标准纬度墨卡托投影结果为例,北京54及WGS84基准面,两者投影结果在东西方向差距约196米,南北方向差距约57米(见下表),对于几十或几百万的地图来说,这一误差无足轻重,但在工程地图中还是应该加以考虑的,西安80与WGS84投影结果非常接近。    

  输入坐标(度)

北京54 墨卡托(米)

西安80 墨卡托(米) WGS84 墨卡托(米)
纬度值(X) 32 3242287 3242231 3242230
经度值(Y) 121 11675036 11674845 11674840



返回

四、墨卡托投影

(1)墨卡托投影性质

    墨卡托(Mercator)投影,是一"等角正轴圆柱投影”,荷兰地图学家墨卡托(Gerhardus Mercator 1512-1594)在1569年拟定,假设地球被围在一中空的圆柱里,其标准纬线与圆柱相切接触,然后再假想地球中心有一盏灯,把球面上的图形投影到圆柱体上,再把圆柱体展开,这就是一幅选定标准纬线的“墨卡托投影”绘制出的世界地图。

    墨卡托投影没有角度变形,由每一点向各方向的长度比相等,它的经纬线都是平行直线,且相交成直角,经线间隔相等,纬线间隔从标准纬线向两极逐渐增大。墨卡托投影的地图上长度和面积变形明显,标准纬线无变形,从标准纬线向两极变形逐渐增大,但因为它具有各个方向均等扩大的特性,保持了方向和相互位置关系的正确。在地图上保持方向和角度的正确是墨卡托投影的优点,墨卡托投影地图常用作航海图和航空图,如果循着墨卡托投影图上两点间的直线航行,方向不变可以一直到达目的地,因此它对船舰在航行中定位、确定航向都具有有利条件,给航海者带来很大方便。

  “海底地形图编绘规范”(GB/T 17834-1999,海军航保部起草)中规定125万及更小比例尺的海图采用墨卡托投影,其中基本比例尺海底地形图(15万,125万,1100万)采用统一基准纬线30°,非基本比例尺图以制图区域中纬为基准纬线。基准纬线取至整度或整分。

(2)墨卡托投影坐标系

    取零子午线或自定义原点经线与赤道交点的投影为原点,零子午线或自定义原点经线的投影为纵坐标X轴,赤道的投影为横坐标Y轴,构成墨卡托平面直角坐标系,此投影标准纬线无变形。 

返回

五、单点转换

    单点转换步骤如下:    

   (1)选择是墨卡托正转换还是反转换,缺省为经纬度转换到墨卡托投影坐标,投影坐标单位为米。

   (2)选择大地基准面,缺省北京54,如果是GPS定位数据别忘了切换为WGS84。

   (3)输入标准纬度,单位度。

   (4)输入原点经度,单位度,缺省为零。

   (5)如正向投影,选择经纬度输入数据格式,有三个选项,缺省为十进制度格式。具体输入方式如下例:

格 式 原始纬度值 原始经度值 输入纬度值 输入经度值
十进制度 35.445901° 122.997344° 35.445901 122.997344
度分 35°26.7541′ 122°59.8406′ 3526.7541 12259.8406
度分秒 35°26′45.245″

122°59′50.438″

352645.245

1225950.438

   (6)正投影按选定格式在“输入”栏输入经纬度值,反投影输入以米为单位的X、Y坐标值。

   (7)单击“单点转换”按钮。

   (8)在“输出”栏查看计算结果。      

返回     

六、批量转换  

    批量转换步骤如下:    

   (1)准备好需要转换的输入数据文件,要求是文本文件,分两列,第一列纬度值或纵向坐标值,第二列经度值或横向坐标值,两列之间用分隔符分开。正向投影时,纬度值及经度值格式可以有三种选择(见表),缺省当作十进制度处理;反向投影时,纵向及横向坐标值必须以米为单位。

         下例为度分秒格式(WGS84)的墨卡托正投影输入数据文件 testdata.txt

         350000.000  1220000.000
         351600.519  1225959.506
         345800.101  1225959.8
         343600.336  1230000.26
         341400.018  1225959.897
         335159.17   1225959.46
         333000.08   1230000.28
         332300.674  1232000.103

   (2)选择是墨卡托正转换还是反转换,缺省为经纬度转换到墨卡托投影坐标,投影坐标单位为米。

   (3)选择大地基准面,缺省为WGS84。

   (4)输入标准纬度,单位度,如“30”,表示标准纬度30°。

   (5)输入原点经度,单位度,缺省为零。

   (6)如正向投影,选择输入数据文件中的经纬度输入数据格式,有三个选项,缺省为十进制度格式。

   (7)单击“批量转换”按钮。弹出打开文件对话框,输入你的数据文件名。

   (8)输入转换结果文件名,单击“保存”后,程序开始进行计算。

   (9)打开输出文件查看计算结果,结果分五列,第一序号,第二列输入纬度值或纵向坐标值,第三列输入经度值或横向坐标值,第四列转换后纬度值或纵向坐标值,第五列转换后经度值或横向坐标值。   

    下例为度分秒格式(WGS84)的标准纬度30°,原点经度0°的正投影转换结果数据文件 result.txt 

      1  350000      1220000      3587805.49  11771326.19
      2  351600.519  1225959.506  3619142.82  11867799.23
      3  345800.101  1225959.8    3583900.99  11867807.11
      4  343600.336  1230000.26   3541028.21  11867819.44
      5  341400.018  1225959.897  3498328.12  11867809.71
      6  335159.17   1225959.46   3455798.28  11867798
      7  333000.08   1230000.28   3413508.75  11867819.98
      8  332300.674  1232000.103  3400100.68  11899977.32

返回