坐标系统和投影变换基础知识及其在ArcGIS桌面产品中的应用(二)

来源:互联网 发布:淘宝的魅力惠是正品吗 编辑:程序博客网 时间:2024/04/30 01:23

原文链接:http://blog.csdn.net/gisbirdsky/article/details/6160762

坐标系统和投影变换在ArcGIS桌面产品中的应用

      在我们了解了坐标系统和投影的定义和其内在的联系后,本文着重总结一下坐标系统和投影变换在桌面产品(版本9.2)中的应用(分ArcMap、ArcCatalog、ArcToolBox三大主要应用模块)。

1、动态投影(ArcMap)

       所谓动态投影指:改变ArcMap中的Data Frame(工作区)的空间参考或是对后加入到ArcMap工作区中数据的投影变换。ArcMap的Data Frame(工作区)的坐标系统默认为第一个加载到当前Data Frame(工作区)的那个文件的坐标系统,后加入的数据,如果和当前工作区坐标系统不同,则ArcMap会自动做投影变换,把后加入的数据投影变换到当前坐标系统下显示,但此时数据文件所存储的实际数据坐标值并没有改变,只是显示形态上的变化!因此叫动态投影。表现这一点最明显的例子就是在Export Data时,用户可以选择是按this layer's source data(数据源的坐标系统导出),还是按照the Data Frame(当前工作区的坐标系统)导出数据。

       关于ArcMap的这种动态投影机制,我们可以利用一个北京54投影坐标系数据(乡镇.shp)和<ArcGIS Installation Directory>/DeveloperKit/SamepleCom/data/World/目录下的world30.shp数据来做一个实验说明。

       乡镇.shp数据的坐标系统为北京54投影坐标系(Krasovsky_1940_Transverse_Mercator)。在ArcMap或ArcCatalog中预览形态如图7所示:

clip_image002

图7 北京54投影坐标系数据单独显示几何形态

         world30.shp数据的坐标系统为WGS84坐标系(GCS_WGS_1984)。在ArcMap或ArcCatalog中预览形态如图8所示:clip_image004

图8 WGS84坐标系数据单独显示几何形态

       而在ArcMap中先加载北京54坐标系数据后再加入WGS84坐标系数据,让ArcMap对WGS84坐标系数据进行动态投影后两数据叠加显示效果如图9所示:

clip_image006

图9 ArcMap对WGS84数据进行动态投影后的显示状态

       可以非常明显的看到ArcMap对WGS84数据做完动态投影后的数据几何形态上的改变,并且此时从ArcMap右下角的状态栏上也可以看到当前Data Frame(工作空间)的坐标系统为北京54平面投影坐标系统。

       反之在ArcMap中先加载WGS84坐标系数据后再加入北京54坐标系数据,让ArcMap对北京54坐标系数据进行动态投影后两数据叠加显示效果如图10所示:

clip_image008

图10 ArcMap对北京54坐标系数据进行动态投影后的显示状态

    将在图9中动态投影后的WGS84坐标系统数据按系统框架坐标系统导出后,单独加载或预览的数据几何形态如图11:

clip_image010

图11 按北京54坐标系统框架导出WGS84数据后的数据几何形态显示

       通过上述实验能够很好的说明ArcMap的动态投影特性。

2、坐标系统描述(ArcCatalog)

       大家都知道在ArcCatalog中可以给数据定义坐标系统描述!即在数据上鼠标右键->Properties->XY Coordinate System选项卡,这里可以通过New、Modify、Select、Import方式来为数据定义坐标系统描述。但有许多用户都认为在这里定义了数据的坐标系统信息后,其数据本身就发生了投影变换。其实不然,这里定义的数据坐标系统信息都对应到与该数据同名而后缀名为.prj的文件当中!如果把该文件删除,在ArcCatalog中重新查看(要在该数据的上层节点上Refresh刷新一下)该文件的坐标信息时,一样会显示为Unknown,并且数据的坐标值并没有发生实质上的投影变换,这里改的仅仅是对数据坐标系统信息的一个描述而已,这就好比我们每个人的基本信息登记卡,更改了登记信息,但并没有改变你这个人本身。因此数据文件中所存储数据的坐标值并没有真正的投影变换到你想要更改到的坐标系统下。

      我们同样拿上述的两个数据做一下实验,在ArcCatalog中更改world30.shp的坐标系统描述,在world30.shp文件上鼠标右键->Properties->XY Coordinate System选项卡中,通过Import方式导入乡镇.shp文件的Krasovsky_1940_Transverse_Mercator投影坐标系统描述,之后看一下结果图12。

clip_image012图12 更改坐标系统描述后的数据几何形态

       从上述示例我们可以很明显的看到更改数据的坐标系统描述并不能使数据做投影变换,从而使数据投影到平面上来,但该数据的prj文件已经记录了更改后的坐标系统描述,PROJCS["Krasovsky_1940_Transverse_Mercator",GEOGCS["GCS_Krasovsky_1940",DATUM["D_Krasovsky_1940",SPHEROID["Krasovsky_1940",6378245.0,298.3]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",111.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]

       Prj文件记录了该投影坐标系的详细参数。

       但对数据坐标系统的这个描述也是非常重要的,如果我们拿到一份数据,从ArcMap下所显示的坐标来看,像是投影坐标系统下的平面坐标,但不知道是基于哪个椭球体的什么投影方法,因此就无法再对数据做进一步的处理,如:投影变换、量测等操作。因为我们无法得知从什么坐标系统下开始变换,以及该坐标系统下的量测单位是什么。

        因此大家一定要更正对ArcCatalog中数据属性中关于坐标系统描述的认识。

3、投影变换(ArcToolBox)

      上面说了这么多,可能有人要问:“要真正的改变数据的坐标值该怎么办?”也就是做真正的投影变换。在ArcToolBox->Data Management Tools->Projections and Transformations中提供了如下工具:

在这个工具集下有这么几个工具最为常用:

1、Define Projection

2、Feature->Project

3、Raster->Project Raster

4、Create Custom Geographic Transformation

       当数据在没有任何空间参考信息时,在ArcCatalog的坐标系统描述(XY

Coordinate System)选项卡中会显示为Unknown!这时如果要对数据进行投影变换就要先利用Define Projection工具来给数据定义一个Coordinate System,然后再利用Feature->Project或Raster->Project Raster工具来对数据进行投影变换!

       由于我们国家经常使用的坐标系统为北京54和西安80。这两个坐标系统变换到其他坐标系统下时,通常需要提供一个Geographic Transformation,因为不同投影所基于的椭球体及Datum不同!关键是Datum不同,也就是说当两个投影基于不同的Datum时就需要制定参数做Geographic Transformation。这里就用到我们前面所说的转换3参数、转换7参数了(三个平移参数ΔX、ΔY、ΔZ表示两坐标原点的平移值;三个旋转参数εx、εy、εz表示当地坐标系旋转至与地心坐标系平行时,分别绕Xt、Yt、Zt的旋转角;最后是比例校正因子,用于调整椭球大小),而我们国家的转换参数是保密的,因此可以自己计算或在购买数据时向国家测绘部门索要。

      实际工作中一般都根据工作区内已知的北京54坐标控制点计算转换参数,如果工作区内有足够多的已知北京54与WGS84坐标控制点,可直接计算坐标转换所需的7参数或3参数;当工作区内有3个已知北京54与WGS84坐标控制点时,可用下式计算WGS84到北京54坐标的转换参数(A、B、C、D、E、F):

x54 = AX84 + BY84 + C

y54 = DX84 + EY84 + F

多余一点用作检验;在只有一个已知控制点的情况下(往往如此),用已知点的北京54与WGS84坐标之差作为平移参数,当工作区范围不大时精度也足够了。

      那么当精度要求较高,实测数据为WGS1984坐标数据时,欲转换到北京54基准面的高斯-克吕格投影坐标,如何定义坐标系参数呢?你可选择WGS 1984作为基准面,当只有一个已知控制点时,根据平移参数调整东伪偏移、北纬偏移值实现WGS84到北京54的转换,此时的转换系数(A、B、C、D、E、F)中A、B、D、E为0,只有X、Y方向的平移值C、F ;当有3个已知控制点时,可利用得到的转换系数(A、B、C、D、E、F)定义 AffineTransform坐标系变换对象,实现坐标系的转换,当然有足够多已知控制点时,直接求定7参数自定义基准面就行了。

       Geographic Transformation通常需要指定变换方向的,如果没有指定变换的方向,ArcMap会自动正确应用变换方法如从WGS 1984到 NAD1927,我们就可以选择NAD_1927_to_WGS_1984_3这种变换方法,ArcMap会自动判定转换方向从而正确实现数据的投影变换。有些变换方法是先把地理坐标系(经纬度)变换到地心坐标系(X Y Z),然后再将地心坐标系坐标(X Y Z),变换到地理坐标系统,图13。

clip_image013clip_image013[1]clip_image015clip_image017clip_image015[1]

地理坐标系统 地心坐标系统 地理坐标系统

图13 从地理坐标系统变换到地心坐标系统再到地理坐标系统

Geocentric Transformation(3参数)、Coordinate Frame(7参数)、Molodensky-Badekas(10参数,是7参数变换方法的一种变体,多了定义XYZ旋转轴的起始位置)都是这样的方法。

       Molodensky(3参数)和Abridged Molodensky(3参数是Molodensky方法的一种变体)变化方法则是直接在不同的地理坐标系统下进行变换无需借助地心坐标系进行转换。那么上述的这些方法的精度取决与用于定义转换参数的控制点的质量个数及选择的变换方法,精度相差可从厘米到米。

       美国国家大地测量局用一种基于格网的变换方法(NADCON和HARN)在NAD1927和NAD1983及其他地理坐标系统下做变换,彼此相临的州的精度可达0.15米,阿拉斯加州及周边岛屿的精度可达0.5米,夏威夷地区精度可达0.2米等等,精度取决于计算栅格大小时测量数据的质量。随着卫星测距和测量技术的改善,美国在更新了测量控制网后,推出了这种High Accuracy Reference Network (HARN)方法或说是栅格格网,其精度可达0.05米。

       加拿大采用同NADCON类似的基于格网的方法(NTV2)在NAD 1927 和 NAD 1983之间做变换,这种方法采用了双线性内插的方法来计算点的坐标。关于这两种方法本文不做更多描述,详细信息可参考ArcGIS帮助。

       知道转换参数后,可以利用Create Custom Geographic Transformation工具来定义一个Geographic Transformation方法,变换方法可以根据已知的转换参数个数选择变换方法,这就完成了对数据的投影变换,数据本身坐标值就发生了变化。当然这种投影变换工作也可以在ArcMap中通过改变Data Frame的Coordinate System来实现,只是要在做完之后按照Data Frame的坐标系统导出数据即可,即为做“动态投影变换”。

       相关的实验可选用ArcTutor(ArcDesktop中的练习数据)中的WGS84和NAD1927或NAD1983数据进行试验。

World files文件

1、CAD world files

      该文件在ArcGIS中对于CAD来说,是定义了2个点之间的相似变换的坐标对。即源点、目标点坐标值,一般来说源数据点的坐标是CAD图层上一个已知控制点(也可以是任意点)的坐标,而目标点的坐标值为想要该已知点重新定位到的坐标值。

      CAD的world files文件是一个以wld为后缀的文本文件。因此我们可以用记事本或写字板任意创建或编辑world files文件,从而对CAD数据进行正确的配准和矫正。world file文件的示例如图14所示:

clip_image019

图14 world file文件示例

       CAD world file里的坐标对最多只有四对,即做一个2点的变换,world file文件既可以通过我们自己用文件编辑工具进行创建,同样ArcGIS也支持world file文件的创建与保存和加载等操作。在ArcMap中可以借助Georeferencing工具条的Add Contorl Point来增加控制点的映射关系(源和目标点),通过View Link Table打开Link Table对话框,利用Save工具按钮可以将建立好的Link关系保存成world file文件,或是使用Update Georeferencing菜单来保存Link关系从而生成world file文件。

        一个CAD只能有一个world file文件,如果该数据集已经有了world file文件,则上述的Save或是Update Georeferencing操作将重写现有的world file文件。

        ArcMap在加载CAD数据时,如果该数据有world file文件,ArcMap将使用world file所定义的转换关系对整个数据集的数据做变换。

2、Raster world files

       影像数据的投影及坐标系统原理与矢量数据一致,只是因为其存储方式是以栅格行列形式存储的,因此需要将栅格数据与现实世界的坐标系建立起一个联系,因此部分影像数据也具有world file文件,之所以说部分影像具有world file文件是因为ERDAS, IMAGINE, BSQ, BIL, BIP, GeoTIFF和Grid影像是在其头文件中记录了数据的地理参考信息。

       其他格式的影像则用一个独立的ASCII码的world file文件,其中记录着影像与real-world的坐标变换信息。其命名规范为文件名称与数据文件同名,后缀取影像格式后缀的第一第三个字符和w组成或直接在其后加‘w’字符,对于没有后缀或后缀不足3个字符的情况也采取在其命名后直接加‘w’表示,如图15所示:

clip_image021

表15 world file文件命名示例

       在ArcGIS 9.2 SP2中,如果无法用world file文件来记录这些变换信息,则Georeferencing 工具条的Update Georeferencing操作将把这些变换信息写进一个aux.xml文件中,并把这种仿射变换信息记录于一个文本文件中或是后缀扩展名以x结尾的文件中。如果对一个已经存在地图坐标系统信息的影像文件进行Update Georeferencing操作,则会生成一个以‘x’结尾的文件,用于记录真正的仿射变换信息(图16)。这个文件只需要把最后的‘x’字符删去,该文件便可在ArcGIS 9.1或是在没有ArcGIS软件的环境下使用。

clip_image023图16 对已有坐标系统信息的影像进行world file命名的示例

影像文件的world file文件示例如下:

20.17541308822119

0.00000000000000

0.00000000000000

-20.17541308822119

424178.11472601280548

4313415.90726399607956

应用如下公式来表达image-to-world的6参数仿射变换

        x1 = Ax + By + C

y1 = Dx + Ey + F

各参数意义如下:

X1、Y1待求的影像上某一像素的地理坐标

A、E分别为影像的每一像素点代表的X、Y方向上的分辨率

B、 D旋转参数

C、 F为影像左上角点的地理坐标值

      通过上述6个参数,我们可以计算影像上任一像素点的真实地理坐标。这里  需要特别注意的一点是E参数之所以为负值,是由于影像坐标系和真实世界坐标系的Y轴方向相反,影像坐标的原点为影像左上角点,且Y轴正方向向下,而真实世界的坐标系统原点在左下角且Y轴正方向向上所致。影像数据的world file文件的制作和保存及Load操作跟CAD数据的world file文件方法相同,在此不敖述。

       还需要注意的是ArcGIS会自动读取某些影像头文件(Geotiff)中的空间参考信息,从而会重写world file文件中的信息,因此可以设置选用world file文件来定义影像的坐标系统,通过勾选Tools->Options->Raster->General选项卡下的Use world file to define the coordinates of the raster选项即可。


0 0
原创粉丝点击