基于DWG文件的图形转换方法与程序实现

基于DWG文件的图形转换方法与程序实现
谭清华;张明网上订书
【摘 要】To realise the product in traditional reference coordinate system with the product in CGCS2000, the author studed the transformation in digital terrain map from B J54 to CGCS2000. The method and diagram of transformation of digital terrain map is described in this paper, and the transformation method of all kinds of corresponding ObjectARX class in digital terrain map are analyzed detailedly, achieved that in the AutoCAD environment, transformed successfully the topographic map from traditional reference coordinate system to CGCS2000 conversion.%为了实现在过渡期内现有传统参心坐标系成果与CGCS2000成果的共存共用,笔者研究了现有地形图从传统参心坐标系向CGCS2000的转换,本文描述了地形图文件坐标转换的实现方法与技术流程,并且对地形图文件中各类常见型实体对应的ObjectARX类的坐标转换方法进行详尽的分析,实现了在AutoCAD环境下对地形图文件从传统参心坐标系向CGCS2000的转换。
【期刊名称】《城市勘测》
【年(卷),期】2012(000)004
【总页数】3页(P125-127)
【关键词】asp投票系统2000国家大地坐标系(CGCS2000);地形图;坐标转换;ObjectARX
【作 者】谭清华;张明
【作者单位】南宁市勘测院,广西南宁530000;南宁市勘测院,广西南宁530000
【正文语种】中 文
【中图分类】P226.3
1 引言
我国于上世纪50年代和80年代,分别建立了1954年北京坐标系和1980西安坐标系,为国民经济建设和社会发展提供了基础的测绘保障。随着社会进步,经济建设、国防建设、科学研究等对国家大地坐标系提出了新的要求,迫切需要采用原点位于地球质量中心的坐标
系统(以下简称地心坐标系)作为国家大地坐标系。国务院批准自2008年7月1日启用我国的地心坐标系—2000国家大地坐标系,英文名称为China Geodetic Coordinate System 2000,英文缩写为CGCS2000。
为了及时采用CGCS2000,各城市首要任务是建立一个与CGCS2000相联系的、相对独立和统一的、适宜本地区建设需要的城市或地方坐标系。为此,需要完成的工作之一是完成现有测绘成果的更新改造,保证过渡期内现有成果及CGCS2000成果的共存共用,为CGCS2000正式启用奠定基础。
我国的测绘成果多以CAD的DWG格式或DXF格式存储,其中DWG格式是二进制文件,而DXF文件是文本文件,因此DWG文件占用的存储空间较小,程序启动的速度较快,绝大部分成果采用DWG文件存储,而且DWG与DXF之间可以互相转换,因此本文主要讨论在CAD环境下DWG文件的坐标转换。
2 AutoCAD二次开发环境介绍
黄业斌由于AutoCAD并没带有坐标转换模块,因此要实现相应的功能,必须进行二次开发,Auto
CAD提供的开发工具主要有 Visual AutoLISP、ObjectARX和 VBA、.NET API。本文采用的是 ObjectARX。ObjectARX是一个以C++语言为基础的面向对象的开发环境和应用程序接口,ObjectARX并不是独立的开发平台,而是运行于Visual C++平台之上。ObjectARX程序本质上是Windows动态链接库(DLL)。
中国人民解放军第四军医大学ObjectARX作为Visual C++动态链接库与其他的动态链接库有着很大的区别,ObjectARX程序在C++语言的基础上规定了自己的语法,它是专门用来对AutoCAD进行二次开发的工具。因此可以说ObjectARX是Visual C++的一个子集。
3 坐标转换的实现方法
为了充分利用已有测绘成果,必须将已有测绘成果转换到CGCS2000坐标系,因此不同坐标系之间相互转换是CGCS2000正式启用后必须解决的技术问题。通常情况下,大范围高精度坐标转换任务采用空间七参数法来实现,而小范围高斯平面坐标的转换采用平面四参数法来实现。由于数字地形图数据均采用分幅存储,即每一幅图的范围有限,因此本文采用四参数法实现图形的坐标转换,坐标转换程序流程图如图1所示。
图1 坐标转换程序流程图
4 DWG文件及地形图中常用对象的坐标转换程序实现方法
(1)点
对图形中点对象的转换只需对坐标值进行转换,其对应的ObjectARX类为AcDbPoint。通过该类的Position()函数可以获取该点的坐标信息,然后根据第二节所述的方法得到转换之后的坐标。调用setPosition()函数设定转换之后的坐标即可。
(2)直线
直线对应的ObjectARX类为AcDbLine,直线由起点与终点连接而成,可以通过该类的startPoint()与endPoint()函数分别获取起点和终点的坐标。之后根据第二节所述的方法得到转换之后的坐标。然后分别调用该类的setStartPoint()与setEndPoint()函数设定坐标即可。
(3)多段线
多段线对应的ObjectARX类为AcDbPolyline。多段线可以通过调用该类的numVerts()函数获取总点数,然后通过调用该类的getPointAt()函数获取每个顶点的坐标。然后根据第二节所述的方法得到转换之后的坐标。通过调用该类的setPointAt()函数设置转换之后的坐标。
(4)二维多段线
二维多段线对应的 ObjectARX类为AcDb2dPolyline。通过调用该类的vertexIterator()函数获取遍历该类顶点的指针。该指针对应的类为AcD-bObjectIterator,以该指针为参数调用二维多段线的openVertex函数,可以获取该指针对应的顶点。该顶点对应的类为AcDb2dVertex。,利用该顶点的position()函数,则可以获取该顶点的坐标。然后根据第二节所述的方法得到转换之后的坐标。调用该顶点的set-Position()函数,则完成了该顶点的转换。继续如此程序遍历整条二维多段线即可以完成坐标转换。
(5)三维多段线
三维多段线对应的 ObjectARX类为AcDb3dPolyline。三维多段线的坐标转换方法与二维多段线类似,只是遍历过程中的顶点对应的类变为AcDb3dPolylineVertex,其他与(4)所述二维多段线坐标转换程序相同。
(6)圆弧
圆弧对应的ObjectARX类为AcDbArc。调用该类的center()获取该类的中心点坐标。,然后
根据第二节所述的方法得到转换之后的中心点坐标。调用该类的setCenter()函数即可以设置转换之后的坐标。可以调用startAngle()与endAngle()函数获取起始和终止角度,然后加上根据第二节所述的方法得到转换之后旋转的角度。调用setStartAngle()与setEndAngle()设置转换之后的角度。由于坐标转换通常尺度变化很小,因此对圆弧的半径无需改变,至此即完成了圆弧的坐标转换。郑博闻
(7)形播种希望的种子
形所对应的ObjectARX类为AcDbShape,可以通过调用该类的position()函数获取该类的坐标信息。然后根据第二节所述的方法得到转换之后的坐标。调用该类的setPosition()函数实现坐标转换。由于地形图中形的指向始终指北,因此无需设置角度变化。

本文发布于:2024-09-22 05:29:08,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/118861.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:转换   坐标   坐标系   文件
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议