1、02自定义坐标系和投影变换1. 概述1.1 地理投影的基本原理常用到的地图坐标系有2种,即地理坐标系和投影坐标系。地理坐标系是以经纬度为单位的地球坐标系统,地理坐标系中有2个重要部分,即地球椭球体(spheroid)和大地基准面(datum)。由于地球表面的不规则性,它不能用数学公式来表达,也就无法实施运算,所以必须找一个形状和大小都很接近地球的椭球体来代替地球,这个椭球体被称为地球椭球体,我国常用的椭球体如下表所示。表:我国常用椭球体椭球体名称年代长半轴(米)短半轴(米)扁率WGS8419846378137.06356752.31:298.257克拉索夫斯基(Krasovsky)194063
2、78245.06356863.01:298.3Xian_198019756378140.06356755.31:298.257CGCS2000(CRS80)20086378137.06356752.31:298.257大地基准面指目前参考椭球与WGS84参考椭球间的相对位置关系(3个平移,3个旋转,1个缩放),可以用其中3个、4个或者7个参数来描述它们之间的关系,每个椭球体都对应一个或多个大地基准面。投影坐标系是利用一定的数学法则把地球表面上的经纬线网表示到平面上,属于平面坐标系。数学法则指的是投影类型,目前我国普遍采用的是高斯克吕格投影,在英美国家称为横轴墨卡托投影(Transverse M
3、ercator)。高斯克吕格投影的中央经线和赤道为互相垂直,分带标准分为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度分带。1.2 国内坐标系介绍大地坐标,在地面上建立一系列相连接的三角形,量取一段精确的距离作为起算边,在这个边的
4、两端点,采用天文观测的方法确定其点位(经度、纬度和方位角),用精密测角仪器测定各三角形的角值,根据起算边的边长和点位,就可以推算出其他各点的坐标。这样推算出的坐标,称为大地坐标。我国1954年在北京设立了大地坐标原点,由此计算出来的各大地控制点的坐标,称为1954年北京坐标系。为了适应大地测量的发展,我国于1978年采用国际大地测量协会推荐的Xian_1980地球椭球体建立了我国新的大地坐标系,并在1986年宣布在陕西省泾阳县设立了新的大地坐标原点,由此计算出来的各大地控制点坐标,称为1980年大地坐标系。随着社会的进步,国民经济建设、国防建设和社会发展、科学研究等对国家大地坐标系提出了新的要
5、求,迫切需要采用原点位于地球质量中心的坐标系统作为国家大地坐标系。2000国家大地坐标系(China Geodetic Coordinate System 2000,CGCS2000)是全球地心坐标系在我国的具体体现,其原点为包括海洋和大气的整个地球的质量中心,CGCS2000是我国当前最新的国家大地坐标系。我们经常给影像投影时用到的北京54、西安80和2000坐标系是投影直角坐标系,如下表所示为国内坐标系采用的主要参数。从中可以看到我们通常称谓的北京54坐标系、西安80坐标系实际上指的是我国的大地基准面。表:北京54、西安80和2000坐标系参数列表坐标名称投影类型椭球体基准面北京54Gau
6、ss Kruger(Transverse Mercator)KrasovskyD_Beijing_1954西安80Gauss Kruger(Transverse Mercator)IAG75D_Xian_1980CGCS2000Gauss Kruger(Transverse Mercator)CGCS2000D_China_20001.3 参数的获取对于地理坐标,只需要确定两个参数,即椭球体和大地基准面。对于投影坐标,投影类型为Gauss Kruger(Transverse Mercator),除了确定椭球体和大地基准面外,还需要确定中央经线。大地基准面的确定关键是确定7个参数(或者其中几个参
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;第二种方法是根据经度从下图中查找。图:高斯克吕格投影的分带2. 详细操作步骤ENVI中的坐标定义文件存放在安装路径下的map_proj文件夹内
8、,在不同的ENVI版本中路径稍有不同,分别为: ENVI 4.x:HOMEITTIDLXXproductsenvi4Xmap_proj ENVI 5.x:HOMEExelisENVI5Xclassicmap_proj在map_proj文件夹内有三个文本文件记录了坐标信息,分别为: ellipse.txt椭球体参数文件 datum.txt基准面参数文件 map_proj.txt坐标系参数文件在ENVI中自定义坐标系分三步:定义椭球体、基准面和定义坐标参数。2.1 添加椭球体修改文件为ellipse.txt,语法为 ,。这里的逗号为英文半角输入状态下的逗号,建议直接复制文件中已有的椭球体进行修改。
9、这里将下面三行加在ellipse.txt文件的末尾,保存关闭即可。最终效果如下图所示。 Krasovsky,6378245.0,6356863.0 Xian_1980,6378140.0,6356755.3 CGCS2000,6378137.0,6356752.3注:ellipse.txt文件中已经有了克拉索夫斯基椭球,由于翻译原因,这里的英文名称是Krassovsky,为了让其他软件平台识别,这里新建一个Krasovsky椭球体。图:定义椭球体2.2 添加基准面修改文件为datum.txt,语法为,。这里将下面三行添加在datum.txt文件末尾,保存关闭即可。最终效果如下图所示。 D_Be
10、ijing_1954, Krasovsky, -12, -113, -41 D_Xian_1980,IAG-75,0,0,0 D_China_2000,CGCS2000,0,0,0注:为了更好的与ArcGIS系列产品兼容,从ENVI 4.7开始,所有产品包括 ENVI、ENVI+IDL、ENVI Zoom 和ENVI Ex,全部采用ArcGIS投影转换引擎(ENVI4.7之前的版本用的是GCTP常规制图转换包)。对用户来说,ENVI菜单中所有的投影操作不变,同时还直接支持ArcGIS中的投影类型。但是自定义坐标系时有一些改变,需要基准面名称、投影坐标系名称与ArcGIS完全一致即可,字母的大小
11、写也要相同。图:定义基准面2.3 定义坐标系在ENVI任何用到投影坐标的功能模块中都可以新建坐标系(在任何地图投影选择对话框中,点击New按钮即可)。下面我们以ENVI Classic为例,添加一个北京54坐标系,信息如下:北京54坐标系、带号为20、中央经线117E、不添加带号信息。操作步骤如下:1. 打开ENVI Classic,选择Map Customize Map Projection工具;2. 在弹出的Customized Map ProjectionDefinition对话框内填写如图所示参数,其中Projection Name保持与ArcGIS中的名称一致;3. 选择Projec
12、tion Add New Projection,保存投影坐标系;4. 选择File Save Projections,在弹出对话框中点击OK,将新建坐标系保存在map_proj.txt文件内,以便下次启动ENVI后依然可以使用。注:投影类型选择Transverse Mercator,Scale factor填写1,与Gauss-Kruger等同。False easting中如果把带号,即20500000,得到的坐标就带有带号。图:自定义北京54坐标系参数设置2.4 使用自定义坐标系下面将利用自定义坐标系将一副北京54坐标系图像转化为2000坐标系。试验的栅格数据是一幅北京54坐标系的栅格数据,
13、投影参数如下: 投影类型:Transverse Mercator 椭球:Krassovsky 基准面:Krassovsky(D_Beijing_1954) 中央经线:117E 东向偏移:500000m由于数据的投影信息不是国际标准或者说其参数名称不是标准的,所以在ENVI中有可能不能读取数据的投影信息(如下图-左),这个时候就需要重新设定投影信息。定义投影步骤如下:1. 按照2.3节的步骤进行北京54坐标系的自定义;2. 打开文件数据f49e011021.img,在Available Bands List中右键点击文件列表下的Map Info,选择Edit Map Information;3.
14、 在弹出的Edit Map Information对话框中点击Change Proj按钮,选择新建好的北京54坐标系,点击OK。ENVI将自动为f49e011021.img的头文件中添加Map Info,识别结果如下图-右所示。图:未能识别投影坐标系(左),定义坐标系后(右)图:定义输入文件的投影坐标系下面介绍将北京54坐标系转换为2000坐标系的步骤:1. 2.3节的步骤定义2000坐标系,参数如下图所示。图:自定义2000坐标系参数2. 投影转换,选择Map Convert Map Projection工具,选择输入文件f49e011021.img(已经定义为北京54坐标系),点击OK;3
15、. 出的Convert Map Projection Parameters对话框中点击Change Proj按钮,选择新建的2000坐标系,点击OK;4. onvert Map Projection Parameters面板右侧修改转换参数(如下图所示),选择输出路径,点击OK即可。5. 投换结果如图所示。图:投影转换参数设置图:投影转换结果3. 使用ArcGIS 国内坐标系通过以上操作可以看出,虽然在ENVI中自定义坐标系非常方便,但是由于每一个坐标系均存在3度和6度分带,并且分带较多,如果逐个定义也是非常繁琐的。为了让用户更加方便使国内坐标系,我们定义好了国内坐标系文件,只要替换三个txt文件并重启ENVI即可使用所有分带的国内坐标系。文件路径为02.自定义坐标系(北京54、西安80、2000坐标系)数据国内坐标系文件。图:国内坐标系