ArcGIS中的地理坐标系转换方法参数地理坐标系变换是数据处理过程中常遇到的问题,今天就说下这方面的问题。
如果遇到这种情景:两份数据有不同的坐标系,想叠加在一起显示,作图或显示精度要求不高。
这种情况使用ArcMap 的动态投影即可,ArcMap 的内部动投影机制会解决地理坐标系变换的问题。
数据在显示的过程中,会实时的被转换,但不改变数据本身。
如果我们需要进行地理坐标系转换,我们知道ArcGIS Desktop 中提供了Project 工具。
此工具界面上有个至关重要的参数:Geographic Transformation。
我们发现它的后面赫然写着Optional 。
依照使用其他工具的经验,这种打了Optional 标志的参数,不就是可填可不填的意思吗?但是,它真的让你随便的可填可不填吗?Naive!图样图森破!这个参数的填写与否,完全是受前面两个参数决定的,主要三种情景吧。
情景1:不涉及到地理坐标系变换的坐标变换,这个参数完全不需要,而不是optional 哦。
例如:从GCS_Xian_1980 进行投影变换,转换为Xian_1980_3_Degree_GK_CM_120E 投影坐标系。
整过转换中,仅使用了高斯克吕格投影变换,没有涉及到地理坐标变换。
情景2:涉及到地理坐标系变换的坐标变换,并且ArcGIS 已知二者之间的变换方法,这个参数是必须的,在已知列表中做选择或者自定义。
(自定义见:情景3)例如:从GCS_Beijing_1954,转换为GCS_WGS_1984坐标系。
转换过程中涉及到地理坐标系变换,也就是进行了椭球体变换。
ArcGIS 中提供了6种已知转换方法,可以根据适用范围选择之。
其中如何选择,此文不做介绍,请查看我的另一篇博客:/kikitamoon/article/details/12914477Beijing_1954_To_WGS_1984Table 1: Geographic (datum) transformations: well-known IDs, accuracies and areas of use情景3:涉及到地理坐标系变换的坐标变换,并且ArcGIS 未知二者之间的变换方法,也就是ArcGIS没有提供转换方法,但是这个参数是必须的,需要自定义,这个参数前会亮绿灯,告诉用户,必须要填写。
另外,上面情景2中,ArcGIS给出的方法,如果都不是自己需要的,也需要自定义。
例如:从GCS_Beijing_1954,转换为GCS_Xian_1980坐标系。
需要使用工具Creat Custom Geographic transformation,创建一种转换方法,辅助Project 工具。
这个工具的帮助如下,就不赘述了。
/zh-cn/help/main/10.2/index.html#//001700000076000000创建自定义地理(坐标)变换(Data Management)摘要可创建一种变换方法,用于在两个地理坐标系或基准面之间对数据进行转换。
对于任何参数要求进行地理变换的工具,都可使用此工具的输出作为变换方法。
用法∙所有的自定义地理变换文件都将存储为扩展名为.gtf的文件,并存储在用户Application Data文件夹下的ESRI\<ArcGISproduct>\ArcToolbox\CustomTransformations文件夹中。
如果CustomTransformations文件夹不存在,此工具会自动创建。
如果Application Data 文件夹为只读或已隐藏,则输出会创建到用户临时文件夹下的ArcToolbox\CustomTransformations中。
Application Data和temp文件夹的位置或名称取决于操作系统。
▪在所有Windows 操作系统中,Application Data文件夹均位于%appdata%中,而用户的Temp文件夹则位于%temp%中。
在命令窗口中输入%appdata%将返回AppData 文件位置。
输入%temp%将返回临时文件夹位置。
▪在Unix 系统中,tmp和Application Data文件夹分别位于用户主目录下的$TMP 和$HOME中。
在终端键入/tmp将返回该位置。
∙对于任何使用地理变换的地理处理工具,都可查看默认储存位置中的所有自定义变换,这些自定义变换会在对话框的地理变换参数下拉列表中显示为有效的变换选项。
∙自定义变换文件不能进行编辑。
它们为二进制文件,用来储存版本和字符串长度信息,如果在地理处理框架之外进行编辑,可能会被损坏。
要更新该文件,需要创建一个新的自定义地理(坐标)变换并覆盖现有文件。
入%temp%将返回临时文件夹位置。
在Unix 系统中,tmp和Application Data文件夹分别位于用户主目录下的$TMP和$HOME中。
在终端键入/tmp将返回该位置。
Coordinate in_coor_system起始地理坐标系。
SystemCoordinate out_coor_system最终地理坐标系。
SystemString custom_geot将METHOD 和PARAMETER 的值嵌入针对自定义变换GEOGTRAN 的字符串中。
设置方法的名称时,可供选择的方法有Geocentric_Translation、Molodensky、Molodensky_Abridged、Position_Vector、Coordinate_Frame、Molodensky_Badekas、NADCON、HARN、NTV2、Longitude_Rotation、Unit_Change 和Geographic_2D_Offset。
每种方法都有一组特定的参数,您可以通过在自定义地理变换的整个字符串表示内的参数名称旁输入文本来编辑参数值。
请参阅以下Python实例中的示例。
代码实例CreateCustomGeoTransformation 示例(Python 独立脚本)以下独立脚本使用CreateCustomGeoTransformation 函数创建一个具有特定用途的自定义转换。
输出是在默认目录下创建的*.gtf 文件。
# Name: CreateCustomGeographicTransformation.py# Description: Creates a custom geographic transformation in the default directory.# import system modulesimport arcpy# set the variablesgeoTransfmName = "cgt_geocentric2"# create a spatial reference object for GCS_TokyoinGCS = arcpy.SpatialReference("Tokyo")# create a spatial reference object for GCS_WGS_1984outGCS = arcpy.SpatialReference("WGS 1984")customGeoTransfm ="GEOGTRAN[METHOD['Geocentric_Translation'],PARAMETER['X_Axis_Trans lation',''],PARAMETER['Y_Axis_Translation',''],PARAMETER['Z_Axis_T ranslation','']]"arcpy.CreateCustomGeoTransformation_management(geoTransfmName, inGCS, outGCS, customGeoTransfm)环境补充:讲到这里全部的情形都涵盖了。
有的同学会问,为什么会这样呢?ArcGIS为啥就不能都知道转换方法呢?为啥偏要我们自定义呢?好麻烦的耶%¥#@……有些坐标系转换的参数是不公开的,属于涉密的内容,所以ArcGIS是没有权利知道变换方法的。
例如与Xian 80 有关的变换。
另外,Project 是矢量数据的坐标系变换工具,如果数据源是栅格数据,需要使用Project Rater 工具。
这篇博客主要写一下,有关自定义地理变换方法。
ArcGIS 中提供地理变换方法主要有这几种:Geocentric_Translation、Molodensky、Molodensky_Abridged、Position_Vector、Coordinate_Frame、Molodensky_Badekas、NADCON、HARN、NTV2、Longitude_Rotation、Unit_Change 和Geographic_2D_Offset。
可使用“创建自定义地理变换(Creat Custom Geographic Transformation)”工具来创建转换方法。
地理坐标系包含了基于椭圆体的基准面,因此地理变换会更改基础椭圆体。
在基准面间进行变换的方法很多,这些方法具有不同的精度和范围。
地理变换是针对地理坐标系的,也就是经纬度坐标进行转换,如果输入数据的坐标系中还包含了平面坐标系(投影),在使用Project 工具的过程中会自动做相应的投影变换,转到地理坐标系,地理变换后,如果需要再转为相应的投影坐标系。
PS:所有的自定义地理变换文件都将存储为扩展名为.gtf 的文件,并存储在用户Application Data 文件夹下的ESRI\<ArcGIS product>\ArcToolbox\CustomTransformations 文件夹中。
自定义变换文件不能进行编辑。
它们为二进制文件,用来储存版本和字符串长度信息,如果在ArcGIS之外进行自行编辑,可能会被损坏。
下面我们来看看常用的转换方法吧,帮助中有介绍,我下面来个精简整理版的:1)Geocentric_Translation地心变换,也就是我们常说的三参数变换,是最简单的基准面变换方法。
地心变换在XYZ 或3D 直角坐标系中对两个基准面间的差异情况进行建模。
定义一个基准面使其中心为0,0,0。
相距一定距离定义另一个基准面(dx,dy,dz 或ΔX,ΔY,ΔZ,单位为米)。
图示:方程:2)Coordinate Frame,Position Vector这两种方法是我们常说的七参数变换,或者布尔沙模型。