ArcGIS 配准 坐标转换 联系客服

发布时间 : 星期三 文章ArcGIS 配准 坐标转换更新完毕开始阅读

(2)偏移量的计算方法

在测区附近选择一国家已知点(X1,Y1),在该已知点上用GPS测定WGS84坐标经纬度,将此坐标视为有误的西安80坐标系,并将其转换为西安80的平面直角坐标X,Y,然后与已知坐标相比较则课计算出偏移量。

即△X1=X- X1 △Y1= Y- Y1

同理可求得北京54坐标系相对于WGS84坐标的偏移量△X2,△Y2,所以由西安80坐标转换成北京54坐标的偏移量即是:△X=△X2-△X1,△Y=△Y2-△Y1

三、“西安80坐标系”转“北京54坐标系”的操作步骤

1、启动ArcMAP,载入coverage数据层,加载arctoolbox工具箱,选择Data Management Tools—>projections and transformations—>feature—>project,打开project对话框,

a、在Input Dataset or Feature Class中选择需要进行转换的数据, b、在Output Dataset or Feature Class中选择输出路径和输出的文件名, c、在Output Coordinate System中输入需要定义的地理坐标类型Xian 1980.prj。 其中地理坐标系统在Geographic Coordinate Systems中定义,投影坐标系在Projected Coordinate Systems中选择。

2、上述的coverage数据在定义了西安1980的地理坐标后就转换成了.shp格式的文件,如同上述操作打开project对话框,选择此.shp格式的文件进行投影,投影类型选择Xian 1980 GK Zone 19.prj。

为了区分不同带间的点位,在每个点位的横坐标前加上所在的带号,如Xian 1980 GK Zone 19.prj,即是表示六度分带法的西安80坐标系,分带号为19,横坐标前加带号。

3、为了将数据能够正确的转换为北京54坐标系,需要对以定义西安80坐标系的数据进行平移纠偏。

载入第二步的结果数据,加载Editor工具条,打开Editor—>start editing,让此数据处于编辑状态。加载Spatial Adjustment工具条,选择new displacement link图标,在图像上选择四个Link点,然后打开Link Tabel表修正坐标,纠正公式是X.destination=X.source+66,Y.destination=Y.source+53,66和53是已经计算出来的坐标偏移量,若计算正确,则计算完后可以看到residual error全部变为零,关闭Link Tabel表,

4、已进行了平移纠偏的数据就可以直接转换成北京54坐标了,同样是在arctoolbox工具箱中选择Data Management Tools—>projections and transformations—>Define Projection,当数据量比较大时,可以用批处理操作,速度会快很多,在Samples工具中选择Data Management—>Projections—>Batch Define Coordinate System。

E:

ArcGIS坐标系相关介绍

1、ArcGIS坐标系定义和转换网上有关坐标系和坐标转换的文章很多,大家可搜索了学习一下,我推荐下面两篇文章供参考:《坐标系统和投影变换在桌面产品中的应用》介绍了坐标系的一些基本概念,并结合ArcGIS进行了说明。《ArcGIS 坐标系统文件》介绍了ArcGIS坐标系名称的解析方法。 ArcGIS中的坐标系有两套:Geographics coordinate system(地理坐标系、大地坐标系,经纬度表达)和Projected coordinate system(投影坐标系,直角坐标系)。通过在ArcCatalog中右键点击一个Feature class、Feature dataset、Raster dataset和Raster Catalog,在“Property”的“XY Coordinate Sytstem”中设置其坐标系。如果要进行转换,需通过ArcToolBox的“Data Management Tools”的“Projections and Transformations”系列工具进行。

在同一个Datum(大地基准面)内的坐标转换是严密的,如在北京54的经纬度和直角坐标之间的转换是可在ArcGIS中设置源坐标系和目标坐标系来直接转换。

如果要在不同Datum间进行转换,则需要设置转换参数,通常高精度的转换需要7参数,也即设置Geographics Transformation。比如将北京54坐标转换成WGS84坐标,需要设置转换参数。虽然我国没有公布北京54、西安80与WGS84之间的转换7参数,但ArcGIS可以在导入数据的时候通过设置目标坐标系,从而实现坐标转换,而且不用输入7参数,试验了一下,应该时默认参数为0。但根据网上的文章《ArcGIS 坐标转换到底有多准?》,这些转换误差比较大。真

正的坐标转换精度还需要进一步验证。在用ArcToolBox中的转换工具进行坐标转换时,如果跨datum,则必须输入Transformation参数,从而保证转换精度。

2、坐标系开发相关 ArcEngine定义了北京54六度带和WGS84坐标系,可进行之间的坐标转换,但没有定义西安坐标系和北京54的三度带。所以不能直接使用ArcEngine预定义的坐标系。安装ArcGIS Desktop 后,ArcGIS根目录下会有Coordinate Systems目录,是一系列prj文件定义的坐标系。ArcGISDesktop使用的就是这些坐标系,所以如果要支持足够多的坐标系,需要在ArcEngine中读取这些文件,而不要用预定义的坐标系枚举变量。 ArcEngine中坐标系的创建通过ISpatialReferenceFactory,比如: ISpatialReferenceFactory srFactory = new SpatialReferenceEnvironmentClass(); // 创建WGS1984地理坐标系 IGeographicCoordinateSystem gcs =

srFactory.CreateGeographicCoordinateSystem( (int)esriSRGeoCSType.esriSRGeoCS_WGS1984); // 创建Xian 1980地理坐标系 ISpatialReference sr = srFactory.CreateESRISpatialReferenceFromPRJFile(@\e Systems\\Geographic Coordinate Systems\\Asia\\Xian 1980.prj\创建北京1954GK_18N投影坐标系 IProjectedCoordinateSystem pcs =

srFactory.CreateProjectedCoordinateSystem((int)esriSRProjCSType.esriSRProjCS_Beijing1954GK_18N); 进行Geographics Transformation则通过IGeoTransformation接口,该接口可以指定源坐标系和目标坐标系,然后基于点进行datum不同时的转换,实现该接口的类包括:

AbridgedMolodenskyTransformation CompositeGeoTransformation CoordinateFrameTransformation CoordinateTransformation GeocentricTranslation HARNTransformation

LongitudeRotationTransformation MolodenskyBadekasTransformation MolodenskyTransformation NADCONTransformation NTv2Transformation PositionVectorTransformation等其中CoordinateFrameTransformation就是常用的布尔莎7参数转换类。具体转换坐标,可通过IGeometry的Project和ProjectEx函数,分别对应不需要IGeoTransformation和需要

IGeoTransformation。Project也可实现不同datum的坐标系的转换,但需要设置IGeoTransformationOperationSet。 geometry.SpatialReference = srcSR; if (geoTrans != null) geometry.ProjectEx(dstSR,

esriTransformDirection.esriTransformForward, geoTrans, false, 0, 0); else geometry.Project(dstSR); 也可通过IGeoTransformation的

TransformPointsFF函数来进行datum之间的转换,不过要注意的是,这个函数不支持投影,也就是只能在经纬度之间转换,如果在数据参考系时输入的是投影坐标系,函数只会取出其地理坐标系(我试验的结果,不知是否正确)。 geoTrans.PutSpatialReferences(srcSR, dstSR); double[] inPoints = new double[2]; inPoints[0] = 100; inPoints[1] = 100; double[] utPoints = new double[2];

geoTrans.TransformPointsFF(esriTransformDirection.esriTransformForward, 1, ref inPoints[0], ref outPoints[0]); ArcToolBox中可以定义自定义的GeoTransformation,保存成*.gtf文件,置于目录...\\\\Documents and Settings\\\\Application Data\\ESRI\\ArcToolbox\\My GeoTransformations.下,但ArcEngine中没找到可以从gft文件创建GeoTransformation的函数。但该文

件还是比较容易解析的,可以自己写一个。如果转换模型确定,则可完全可自定义一个简单的文件来存储转换参数。在使用IGeometry.Project时,有一个特别的类可以关注, IGeoTransformationOperationSet。这个类适用于要批量转换的Geometries中的SpatialReference不一样。在利用IGeometry.Project进行坐标转换时,如果两个坐标系之间的datum不一样,系统会搜索

GeoTranformationOperationSet,找一个匹配的geotransformation,如果找不到,则GeoTranformation会不成功。 IGeoTransformationOperationSet就是缓存了系统环境中的GeoTranformation。通常

spatialReferenceFactory.GeoTransformationDefaults中的

IGeoTransformationOperationSet个数为0,每往里Set一次,则添加一个。可参考其例子。

3、用ArcGIS维护坐标系转换思路

1)矢量数据如果创建Feature Dataset,设置其坐标系为WGS84经纬度,导入矢量数据,ArcGIS会自动将所有数据转换为WGS84经纬度。对于没有导入Feature Dataset,而是直接导入Geodatabase中的数据,可利用在导入时,设置Environment中的“输出坐标系”和“转换参数(如果有准确的参数,则设置,否则缺省为0)”来实现边导入边进行坐标转换。

2)栅格数据不论时将Raster Dataset至于Geodatabase还是RasterCatalog中,都可在导入时,设置Environment中的“输出坐标系”和“转换参数(如果有准确的参数,则设置,否则缺省为0)”来实现边导入边进行坐标转换。

3)转换对于导入到系统中的数据,如果要转换坐标系,可通过ArcToolBox进行坐标转换功能实现,这必须要先自定义Transformation。