欢迎来到天天文库
浏览记录
ID:5994395
大小:29.00 KB
页数:7页
时间:2017-12-30
《基于dwgdirect技术实现dem批量转换为dxf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、基于DwgDirect技术实现DEM批量转换为DXF 中图分类号:TP文献标识码:A文章编号:1007-0745(2013)09-0376-02摘要:在分析基于CNSDTF-DEM格式数据的基础上,提出了实现将DEM批量转换为DXF的具体方法。并且在.NET环境下,利用DwgDirect提供的读写DXF功能,编写批量转换工具。关键词:DwgDirect,DEM,DXF,地球空间数据交换格式一、引言DEM(DigitalElevationModel)是一定范围内规则格网点的平面坐标(X,Y)及其高程(
2、Z)的数据集,它主要是描述区域地貌形态的空间分布。本文所提及的DEM数据基于中国地球空间数据交换格式CNSDTF-DEM。由于AutoCAD不能直接读取此格式的数据,因此需要将此格式转换为AutoCAD能直接读取的DXF格式。DwgDirect是OpenDWG是升级版,是ODA(OpenDesign7Alliance)开发的一套能够直接读写AutoCAD(DWG/DXF)数据的类库。通过此类库能够在脱离AutoCAD平台下直接操作DWG/DXF数据。本文正是利用此功能在.NET环境下将DEM数据批量转
3、换到DXF数据。二、主要实现步1.搭建开发环境。启动VisualStudio2010,新建一个基于.NetFrameWork3.5的项目,并添加DwgDirect引用。2.读取DEM数据并解析。基于CNSDTF-DEM格式的数据主要有两部分组成,一是文件头,二是数据体。文件头信息分为两类:基本的且必须的信息和扩充的附加信息。数据体以格网形式从南到北从西到东的顺序存储在文本文件中。读取数据的主要思路如下1)新建网格数据结构PublicStructureGridData‘数据标记CNSDTF-RASCNS
4、DTF-DEMPublicmDataMarkAsString‘版本号PublicmVersionAsDouble‘坐标单位M:米D:经纬度PublicmUnitAsString‘方向角PublicmAlphaAsDouble‘压缩方法PublicmCompressAsIntegerPublicmX0AsDouble7PublicmY0AsDoublePublicmDXAsDoublePublicmDYAsDoublePublicmRowAsIntegerPublicmColAsIntegerPubli
5、cmValueTypeAsString‘高程放大倍率PublicmHZoomAsInteger‘坐标系G:测量坐标系M:数学坐标系PublicoCoordinateAsString‘投影类型PublicoProjectionAsString‘参考椭球PublicoSpheroidAsString‘投影参数PublicoParametersAsString‘格网最小值PublicoMinVAsInteger‘格网最大值PublicoMaxVAsInteger‘获取的数组点PublicDEMPoints(
6、)AsPoint3D7‘读取DEM文件是否成功PublicReadSuccessfulAsBooleanEndStructure2)从文件中读取数据并解析。先解析文件头部分,如果文件头解析的结果不是基于CNSDTF-DEM格式的数据,则放弃解析。PublicFunctionGetDEMData(ByValFilePathAsString)AsGridDataDimobjDataAsNewGridDataDimAllData()AsString=File.ReadAllLines(FilePath,En
7、coding.Default)......ReturnobjDataEndFunction3.将读取的数据写入DXF文件。‘初始化DWG环境Ds=NewDWGdirect.Runtime.ServicesHostApplicationServices.Current=NewHostAppServ(Ds)ForIAsInteger=0ToListDEM.Items.Count-1DimobjfileAsNewFileInfo(ListDEM.Items(I).ToString)7objdem=NewDE
8、M(objfile.FullName)objdem.InvalidElevationString=PublicValue.InvalidElevationString ......Dimpts()AsMyMFC.Geometry.Point3D=objdata.DEMPointsDimDBAsNewDatabaseUsingTransAsTransaction=DB.TransactionManager.StartTransactionDimBTAsB
此文档下载收益归作者所有