本程序是常用地图投影系列小程序之一,程序能用于不同基准面上单点及批量数据的兰勃特投影正、反转换,正投影时的输入经纬度数据可以是度、度分及度分秒格式。
兰勃特投影正、反转换动态连接库接口:
正投影接口:LT(latitude,longitude:double; var xx,yy:Double; centralat,centralon:Double; lat1,lat2:Double;Datum:integer)
反投影接口:LTinv(xx,yy:double;var latitude,longitude:Double;centralat,centralon:Double; lat1,lat2:Double; Datum:integer)
参数说明:latitude,longitude--纬度与经度,单位度;xx,yy--横向(经度方向)及纵向(纬度方向)坐标,单位米;centralat,centralon--原点纬度(一般为左下角纬度)及原点经度(一般为图幅中央经度),单位度;lat1,lat2--第一及第二标准纬度,单位度;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”(POSC,http://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°)的25°,40°双标准纬度,原点纬度10°,原点经度110°的兰勃特投影结果为例,北京54及WGS84基准面,两者投影结果在东西方向差距约18米,南北方向差距约45米(见下表),西安80与WGS84投影结果基本一致。
| 输入坐标(度) |
北京54 兰勃特(米) |
西安80 兰勃特(米) | WGS84 兰勃特(米) | |
| 纬度值(X) | 32 | 2531235 | 2531191 | 2531190 |
| 经度值(Y) | 121 | 1028805 | 1028788 | 1028787 |
(1)兰勃特投影性质
兰勃特等角(Lambert Conformal Conic)投影,是一"等角正割圆锥投影”,由德国数学家兰勃特(J.H.Lambert)在1772年拟定。设想用一个正圆锥切于或割于球面,应用等角条件将地球面投影到圆锥面上,然后沿一母线展开,即为兰勃特投影平面。投影后纬线为同心圆弧,经线为同心圆半径。
兰勃特投影采用双标准纬线相割,与采用单标准纬线相切比较,其投影变形小而均匀,兰勃特投影的变形分布规律是:
a) 角度没有变形,即投影前后对应的微分面积保持图形相似,故亦可称为正形投影;
b)
等变形线和纬线一致,即同一条纬线上的变形处处相等;
c) 两条标准纬线上没有任何变形;
d)
在同一经线上,两标准纬线外侧为正变形(长度比大于1),而两标准纬线之间为负变形(长度比小于1)。因此,变形比较
均匀,变形绝对值也比较小;
e) 同一纬线上等经差的线段长度相等,两条纬线间的经纬线长度处处相等。
兰勃特投影常用于小比例尺地形图。“1:1000000地形图编绘规范及图式 GB/T 14515-93”中规定1:100万地形图采用正轴等角圆锥投影(兰勃特等角投影),并采用了国际地理学会规定的全球统一使用的国际百万分之一地图的分幅原则,按纬差4°从赤道向北、经差6°从-180°向东分幅,每个投影分幅单独计算坐标,每幅两条标准纬线,第一标准纬线为图幅南端纬度加30′的纬线,第二标准纬线为图幅北端纬度减30′的纬线。由于是纬差4°分带投影的,所以当沿着纬线方向拼接地图时,不论多少图幅,均不会产生裂隙;但是,当沿着经线方向拼接时,因拼接线分别处于上下不同的投影带,投影后的曲率不同,致使拼接时会产生裂隙。
(2)兰勃特投影坐标系
以图幅的原点经线(一般是中央经线)作纵坐标X轴,原点经线与原点纬线(一般是最南端纬线)的交点作为原点,过此点的切线作为横坐标Y轴,构成兰勃特平面直角坐标系,此投影两标准纬线无变形。
在我国1:100万兰勃特投影地形图中,由于经纬网图形是以中央经线为轴左右对称的(原点经线选择图幅的中央经线,原点纬线选择最南端纬线)。因此,只要计算右方经差为1°、2°、3°的经纬线交点的坐标,左方的经纬线交点的坐标,只需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)输入第一标准纬度及第二标准纬度,单位度。
(5)输入原点纬度及原点经度,单位度,一般原点纬度为左下角纬度,原点经度为图幅中央经度。
(6)如正向投影,选择输入数据文件中的经纬度输入数据格式,有三个选项,缺省为十进制度格式。
(7)单击“批量转换”按钮。弹出打开文件对话框,输入你的数据文件名。
(8)输入转换结果文件名,单击“保存”后,程序开始进行计算。
(9)打开输出文件查看计算结果,结果分五列,第一序号,第二列输入纬度值或纵向坐标值,第三列输入经度值或横向坐标值,第四列转换后纬度值或纵向坐标值,第五列转换后经度值或横向坐标值。
下例为度分秒格式(WGS84)的25°,40°双标准纬度,原点纬度10°,原点经度110°的正投影转换结果数据文件 result.txt
1 350000
1220000 2869187.58 1084769.07
2 351600.519 1225959.506 2908969.61
1171137.8
3 345800.101 1225959.8
2876173.33 1175175.22
4 343600.336 1230000.26 2836123.75
1180108.21
5 341400.018 1225959.897 2796066.24
1185021.23
6 335159.17 1225959.46
2756002.13 1189933.07
7 333000.08 1230000.28
2716003.29 1194869.22
8 332300.674 1232000.103 2707084.37
1226946.01