常用到的地图坐标系有 2 种,即地理坐标系和投影坐标系。
地理坐标系是以经纬度为单位的地球坐标系统,地理坐标系中有 2 个重要部分,即地球椭球体( spheroid )和大地基准面( datum )。由于地球表面的不规则性,它不能用数学公式来表达,也就无法实施运算,所以必须找一个形状和大小都很接近地球的椭球体来代替地球,这个椭球体被称为地球椭球体,我国常用的椭球体如下:
椭球体名称 | 年代 | 长半轴(米) | 短半轴(米) | 扁率 |
WGS84 | 1984 | 6378137.0 | 6356752.3 | 1:298.257 |
克拉索夫斯基(Krasovsky) | 1940 | 6378245.0 | 6356863.0 | 1:298.3 |
IAG-75 | 1975 | 6378140.0 | 6356755.3 | 1:298.257 |
表1 我国常用椭球体
大地基准面指目前参考椭球与 WGS84 参考椭球间的相对位置关系( 3 个平移, 3 个旋转, 1 个缩放),可以用其中 3 个、 4 个或者 7 个参数来描述它们之间的关系,每个椭球体都对应一个或多个大地基准面。
投影坐标系是利用一定的数学法则把地球表面上的经纬线网表示到平面上,属于平面坐标系。数学法则指的是投影类型,目前我国普遍采用的是高斯——克吕格投影,在英美国家称为横轴墨卡托投影( Transverse Mercator )。高斯克吕格投影的中央经线和赤道为互相垂直,分带标准分为 3 度带和 6 度带。美国编制世界各地军用地图和地球资源卫星像片所采用的全球横轴墨卡托投影( UTM )是横轴墨卡托投影的一种变型。高斯克吕格投影的中央经线长度比等于 1 , UTM 投影规定中央经线长度比为 0.9996 。
我国规定 1 : 1 万、 1 : 2.5 万、 1 : 5 万、 1 : 10 万、 1 : 25 万、 1 : 50 万比例尺地形图,均采用高斯克吕格投影。 1 : 2.5 至 1 : 50 万比例尺地形图采用经差 6 度分带, 1 : 1 和 1 : 2.5 万比例尺地形图采用经差 3 度分带。
2 北京54与西安80坐标系
先了解大地坐标的概念。
大地坐标,在地面上建立一系列相连接的三角形,量取一段精确的距离作为起算边,在这个边的两端点,采用天文观测的方法确定其点位(经度、纬度和方位角),用精密测角仪器测定各三角形的角值,根据起算边的边长和点位,就可以推算出其他各点的坐标。这样推算出的坐标,称为大地坐标。
我国 1954 年在北京设立了大地坐标原点,由此计算出来的各大地控制点的坐标,称为 1954 年北京坐标系。为了适应大地测量的发展,我国于 1978 年采用国际大地测量协会推荐的 IAG-75 地球椭球体建立了我国新的大地坐标系,并在 1986 年宣布在陕西省泾阳县设立了新的大地坐标原点,由此计算出来的各大地控制点坐标,称为 1980 年大地坐标系。
我们经常给影像投影时用到的北京 54 或者西安 80 坐标系是投影直角坐标系,如下表所示为北京 54 和西安 80 坐标系采用的主要参数,
坐标名称 | 投影类型 | 椭球体 | 基准面 |
北京54 | Gauss Kruger(Transverse Mercator) | Krasovsky | 北京54 |
西安80 | Gauss Kruger(Transverse Mercator) | IAG75 | 西安80 |
表2 我国常用坐标系参数列表
从中可以看到我们通常称谓的北京 54 坐标系、西安 80 坐标系实际上指的是我国的两个大地基准面。
3 参数的获取
对于地理坐标,只需要确定两个参数,即椭球体和大地基准面。对于投影坐标,投影类型为 Gauss Kruger ( Transverse Mercator ),除了确定椭球体和大地基准面外,还需要确定中央经线。
大地基准面的确定关键是确定 7 个参数(或者其中几个参数),北京 54 基准面可以用三个平移参数来确定,即“ -12,-113,-41,0,0,0,0 ”,很多软件近似为 Krasovsky(0,0,0,0,0,0,0) 基准面;西安 80 的 7 参数比较特殊,各个区域不一样。一般有两个途径:一是直接从测绘部门获取;二是根据三个以上具有西安 80 坐标系与其他坐标系的同名点坐标值,利用软件来推算,有一些绿色软件具有这个功能,如 Coord MG 。
中央经线获取可有以下两种方法,第一种根据已知带号计算, 6 度带用 6*N-3 , 3 度带用 3*N ;第二种方法是根据经度从图 1 中查找。
图1高斯——克吕格投影的分带
4 ENVI中定义坐标
ENVI 中的坐标定义文件存放在 HOME\ITT\IDL70\products\envi45\map_proj 文件夹下,三个文件记录了坐标信息:
ellipse.txt 椭球体参数文件
datum.txt 基准面参数文件
map_proj.txt 坐标系参数文件
在 ENVI 中自定义坐标系分三步:定义椭球体、基准面和定义坐标参数
第一步、添加椭球体
语法为 < 椭球体名称 >,< 长半轴 >,< 短半轴 > 。这里将“ Krasovsky , 6378245.0 , 6356863.0 ”和“ IAG-75 , 6378140.0 , 6356755.3 ”加入 ellipse.txt 末端。
注: ellipse.txt 文件中已经有了克拉索夫斯基椭球,由于翻译原因,这里的英文名称是 Krassovsky ,为了让其他软件平台识别,这里新建一个 Krasovsky 椭球体。
第二步、添加基准面
语法为 < 基准面名称 >,< 椭球体名称 >,< 平移三参数 > 。这里将“ Beijing-54, Krasovsky, -12, -113, -41 ”和“ Xi'an-80,IAG-75,0,0,0 ”加入 datum.txt 末端。
注:有的时候为了与其他软件平台兼容,基准面的名称直接写成所用的椭球体名称。
第三步、定义坐标
在 ENVI 任何用到投影坐标的功能模块中都可以新建坐标系 ( 在任何地图投影选择对话框中,点击“ New ”按钮。 ) ,这里我们选择 Map->Customize Map Projection ,如图 1 所示,将相应的参数添加,这里添加的参数如图 1 所示。
注:投影类型选择 Transverse Mercator , Scale factor 填写 0.9996 ,与 Gauss-Kruger 等同。 False easting 中如果把带号,即 39500000 ,得到的坐标就带有带号。
图2 自定义坐标系
选择 Projection->Add New Projection,
将投影添加到 ENVI 所用的投影列表中。选择 File > Save Projections ,存储新的或更改过的投影信息。这样一个新的投影坐标就新建完成。
打开 map_proj.txt ,可以看到新建的坐标信息已经自动加入。
图3 自定义坐标列表
5 使用自定义坐标系
下面将利用自定义坐标系将一副北京 54 坐标系转化为西安 80 坐标系。
试验的栅格数据情况为:一幅北京坐标系的栅格数据,投影参数如下:
投影类型: Transverse Mercator
椭球: Krassovsky
基准面: Krassovsky (自定义)
中央经线: 117
东向偏移: 500000m
由于数据的投影信息不是国际标准或者说其参数名称不是标准的,所以在 ENVI 中有可能不能读取数据的投影信息(如图 4 ),这个时候就需要重新设定投影信息。
图4查看坐标信息
打开数据文件,在 Available Bands List 中选择文件,点击右键打开 Header Info ,在 Edit Attributes 中选择 Map Info 。选择 Change Projection ,将前面定义好的坐标选上。
图5添加坐标系
这样在影像的 map info 里面就可以看到投影信息了。
图6 更改坐标信息后的效果
选择 Map->Convert Map Projecton, 进行西安 80 的坐标转换。
图7 转换参数
打开转换后的结果,如图 8 所示,可以看到 Map Info 中投影信息已经更新,起始点的坐标也不一样,有几米的差别,这也符合北京 54 和西安 80 存在百米范围内的系统误差。
图8 西安80坐标系
6 总结
由于国内坐标系的非国际标准,很多软件平台,特别是国外软需要自定义坐标系。从上可以看到, ENVI 的坐标定义还是比较简单,也非常灵活。