宋冬萍
摘要:本文根据三种方式深入探讨了带属性的MapInfo数据的坐标转换方法:一种通过VC和MapX编程调入“.tab”文件,快速实现了坐标系之间的一系列转换;一种通过AutoCAD Map 3D软件实现四参数转换;一种在.prj文件中定义坐标系,通过改变投影来进行转换。这三种方式最终都以WGS-84坐标转换为BJ54坐标为例子进行了验证,取得良好结果。
关键词:MapInfo数据; 坐标转换; 七参数; 四参数; MapX ; AutoCAD Map 3D
中图分类号: C37文献标识码: A
前言
在MapInfo的.prj文件中已经定义了300多种坐标系,但是其中并没有我国现有的常用坐标系,更没有我国地方独立坐标系的定义[1,2]。
随着MapInfo软件在我国的深入利用,在该软件中会经常涉及到我国常用坐标系(北京54和西安80)和地方独立坐标系,这就需要我们对其进行定义和坐标转换。本文通过三种方法对MapInfo数据的坐标转换做了一些研究。
1 Mapinfo数据坐标转换方法设计
1.1基于VC和MapX平台坐标转换的设计
1)首先把.gst地图加载进来;
2)根据函数进行图元统计和分类,本文只针对线图元和点图元;
3)新建图层,用于添加转换后的图元,设置该图层的坐标系为转换后的坐标系,并且把原来的属性字段复制进来;
4)获取线图元节点个数,然后获得节点坐标;
5)获得节点坐标后进行坐标转换,转换时,应注意获得一个节点转换一个,把转换后的节点坐标以追加的方式添加在一个“点坐标.txt”文件中,把图元的属性值也添加在里面。
6)在坐标转换完成后,从“点坐标.txt”文件中读取各个图元的节点坐标,把读取的节点坐标赋予给点对象,再把点对象赋给点集对象:当一个图元上的节点坐标全部读取后,把点集对象转换为图元添加到新建的图层上,并且把相应的属性值赋给新添加的图元。
1.2基于AutoCAD Map 3D的坐标转换设计
首先把.tab文件导入到AutoCAD Map 3D,然后根据已知的X、Y平移量、旋转角度、缩放比例,运用命令进行转换,步骤如下:
1)平移:在命令行键入MOVE命令后命令行显示:“Select objects:”,选定全部图素,然后命令行显示:“Specify base point or [Displacement]
2) 旋转:在命令行键入rotate命令;然后命令行显示:“Select objects:”,选定全部图素;接着命令行显示:“Specify base point:”,此时选择平移时的基点后回车;最后命令行显示:“Specify rotation angle or [Copy/Reference] <0>:”此時键入旋转角度后回车。
3) 缩放:在命令行键入scale命令,命令行显示:“Select objects:”,选定全部图素;然后命令行显示:“XX found”,按下回车键;接着命令行显示:“Specify base point:”,此时选择平移时的基点后回车;最后命令行显示:“Specify scale factor or [Copy/Reference] <1.0000>:”,键入缩放比例后回车。
最后,再把DWG文件导出为“.tab”文件,导出时注意选择属性,这样属性数据就不会丢失。
1.3 利用.prj进行转换
以WGS84坐标转换为BJ54坐标为例进行说明,步骤如下:
1)通过软件求出BJ54坐标系转换到WGS-84坐标系的七参数;
2)在.prj文件中定义出BJ54坐标系,然后保存;
3)在MapInfo中打开已知的.tab文件;
4)点“文件”选择下拉菜单中的“另存副本为”,弹出“另存表为”的对话框;
5)在“另存表为”的对话框中更改表的名称,点“投影”弹出“选择投影”对话框,在该对话框中选择自己定义的坐标系,最后点“另存表为”对话框中的保存即可。
2 实例分析
为了对上述坐标转换程序和方法进行检验,本文采用实际的10个控制点坐标数据导入到Mapinfo中生成5条线段来参与转换。
2.1基于VC和MapX方法的实例分析
本实例采用10个控制点数据,根据已知的软件先求出七参数:208.555452540641、187.953989974842、75.695433324101、-1.626742、6.228388、-3.559023、0.402897421344201,这七个参数分别为X、Y、Z的平移参数和旋转参数、尺度参数,把这七个参数输入到如图1的界面中,进行转换,转换的结果以与已知的数据相比较结果如表1所示。
表1 转换数据与已知数据比较
通过以上的比较可知,利用本程序进行转换求得转换后坐标数据与已知的坐标数据之间的差值都处于厘米级,并且各个线段的属性没有改变,在对图形精度要求不高的条件下,这样的转换精度是完全可以接受的
2.2基于AutoCAD Map 3D 方法的实例分析
本实例采用10个控制点数据,根据已知的软件先求出四参数:40.6833491024723、-117.703797824564 、1.00000187185103 、2.301,这四个参数分别为X、Y的平移参数、尺度参数和旋转参数(以秒为单位),利用这四个参数和AutoCAD Map 3D下的转换步骤进行转换,转换的结果与已知的数据相比较结果如表2所示:
表2 转换数据与已知数据比较
通过以上的比较可知,利用AutoCAD Map 3D进行转换求得转换后坐标数据与已知的坐标数据之间的差值都处于分米级,并且各个线段的属性没有改变,在对图形精度要求不高的条件下,这样的转换精度是完全可以接受的。
2.3利用.prj进行转换的实例分析
本实例采用10个控制点数据,转换的结果与已知的数据相比较结果如表3所示:
表3 转换数据与已知数据比较
通过以上的比较可知,利用.prj进行转换求得转换后坐标数据与已知的坐标数据之间的差值都处于分米级,并且各个线段的属性没有改变,在对图形精度要求不高的条件下,这样的转换精度是完全可以接受的。
3 结论
通过以上的实验结果及分析可以得出结论:在保持数据属性不变的情况下,利用VC和MapX可以进行一些精度要求较高的、简单的线性地图的坐标转换,利用AutoCAD Map 3D可以进行分米级精度的地图的坐标转换,利用.prj文件可以快速地进行分米级精度的地图的坐标转换。
参考文献
[1] 何兴燕.基于MapInfo的福州地区坐标系定义与转换[J].露天采矿技术,2007, 02:36~37.
[2]石永乐,梁宏奇,李国林.AutoCAD绘图中的坐标转换[J].矿山测量,2006,(2).