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