Delphi实现Topcon全站仪自动展点

2016-05-30 06:21吴晓峰徐景欣王大伟
科技创新导报 2016年17期
关键词:数据格式测绘

吴晓峰 徐景欣 王大伟

摘 要:随着现代电子测量技术日新月异的发展,Topcon全站仪以其较高的性价比被广泛用于测绘行业,操作简单易学,数据结构科学合理。由Borland公司推出的Delphi是全新的可视化编程环境,为我们提供了一种方便、快捷的Windows应用程序开发工具,它使用了Microsoft Windows图形用户界面的许多先进特性和设计思想,采用了弹性可重复利用的完整的面向对象程序语言、当今世界上最快的编译器、最为领先的数据库技术。该文结合Topcon测图数据,利用Delphi实现了数据下载、预处理、展点一系列方法。

关键词:Topcon 数据格式 展点 Delphi 测绘

中图分类号:TP3 文献标识码:A 文章编号:1674-098X(2016)06(b)-0082-03

1 Topcon数据存储格式

拓普康内存中的数据分测量坐标数据文件和坐标数据文件,前者是数据采集模式下生成的文件,在仪器中用“M”标识;后者是为放样模式准备的坐标文件,在仪器中用“C”标识。对两者数据下载后进行分析,测量数据所记录的信息是完整的测量信息,反映的是测量的过程与采集成果,而坐标数据文件相对简单,是点的坐标记录集合。以下分别截取一个测量数据和坐标数据片断,“//”后为注释。

JOB Z08010, //数据采集文件名

INST GTS-330 Ver.3.30 //仪器型号、内置系统版本

UNITS M,D //单位,此处为米、度

STN T44,0.000, //测站标识 测站点号 仪器高

XYZ 504882.246,3803796.484,0.000 //测站坐标标识 测站点N、E、Z值

BS T45,0.000 //后视标识 后视点号 棱镜高

XYZ 504888.430,3803837.337,-1.992 //后视坐标标识 后视点N、E、Z值

SS 1,0.000,FW //前视测点标识 前视点号 棱镜高 测点标识码

XYZ 504853.177,3803776.161,1.469 //前视坐标标识 前视测点N、E、Z值

SS 2,0.000,L

XYZ 504854.387,3803776.077,1.864

……

1,1125.057,1122.351,50.413,L //前视点号 前视测点N、E、Z值,测点标识码

2,1132.123,1126.359,50.744,FW

……

2 数据下载

配合全站仪使用的下载工具一般由厂家提供,比如拓普康的T_COM软件,但这种软件输出的数据格式是由软件提供者控制的,在操作与使用环节上用户难以根据自己的需要灵活定制。在Delphi开发平台上,数据下载功能可以借助Spcomm控件实现,与数据通信相关的几个重要属性:端口CommName、波特率BaudRate、数据位ByteSize、奇偶位ParityCheck、停止位StopBits,这些属性既可以在程序设计过程中指定,也可以在程序运行期间指定。

电脑与仪器通信参数要保持一致。通过激发数据下载动作,执行事件

procedure

TfrmDataChg.Comm1ReceiveData(Sender:Tobject;Buffer:Pointer;Buffer Length: Word);

var

s: string;

begin

SetLength(s, BufferLength);

Move(Buffer^, pchar(s)^, BufferLength);

memo1.Lines.Add(s);

end;

下载的数据是可识别ASSIC格式,显示在Memo1控件中,可以进一步保存或处理。

3 数据预处理

在对数据文件格式及各组成部分含义明确理解的情况下,使用高级程序语言进行数据文件信息的提取、分离、处理。该文利用Delphi对数据进行读取与处理。

3.1 算法设计

程序的主要算法是:打开测量数据文件,逐行读取数据行,查找标识“XYZ”行并定位,以其为参照向前一行定位,查找行首标识“STN、BS、SS”并判断该行性质,对本行进行信息分离、提取。

3.2 程序实现

(1)文件的打开,利用Delphi中的OpenDialog控件。

If OpenDialog1.Execute then filename:=OpenDialog1.FileName;

(2)逐行读取数据文件,使用语句Readln(file,LineStr),同时创建Tstringlist对象,用于保存读入的数据行,每读一行,stringlist自动加一。

(3)设计循环变量i,查找“XYZ”,使用语句If Pos('XYZ',Strings[i])>0来判断,如果为真值表示找到坐标数据行,分离坐标与编码。

(4)向前定位至Strings[i-1],使用语句If Pos('STN',Strings[i-1])>0 来判断是否为测站,使用语句If Pos('BS',Strings[i-1])>0 来判断是否为后视定向点,使用语句If Pos('SS',Strings[i-1])>0来判断是否为前视点,确定本行性质后对元素进行分离、提取。

(5)将(3)、(4)分离出来的信息进行拼装,形成坐标记录。

4 CAD展点

通过前面的工作,已经完成了从原始数据到整理后的带编码坐标数据,下面介绍利用Delphi将坐标数据展点到CAD文件中。CAD展点的实质是向CAD模型空间输入文本或插入块。Delphi是借助Com技术实现的,使用CreateOleObject将启动AutoCad,然后以Ole方式对AutoCad进行控制。具体步骤如下:

(1)在Delphi中定义Ole变量。

var

obj_Acad,obj_ModelSpace,obj_ActiveDoc,Ole_point,obj_lays,obj_lay,obj_TestStyle,obj_TextStyles,obj_txt,obj_blk,obj_att: OleVariant;

(2)创建Ole对象。

obj_Acad:=CreateOleObject('AutoCad.Application');

(3)取得当前文档与模型空间。

obj_ActiveDoc:= obj_acad.activedocument;

obj_ModelSpace:=obj_ActiveDoc.ModelSpace;

(4)创建图层并置为活动图层。

obj_lays:=obj_activedoc.layers;

obj_lay:=obj_lays.add('points');

obj_activedoc.activelayer:=obj_lay;

(5)定义输入文本样式。

obj_TextStyles:=obj_ActiveDoc.TextStyles;

obj_TestStyle:=obj_TextStyles.Add('SBD');

obj_TestStyle.FontFile:='txt.shx';

obj_TestStyle.width:='0.8';

obj_ActiveDoc.activeTextStyle:=obj_TestStyle;

(6)定义插入点,获取坐标。

Ole_point:=VarArrayCreate([0,2],VT_R8);

Ole_point[0]:=py;Ole_point[1]:=px;Ole_point[2]:=pz;

(7)插入文本,完成展点。

txt:=pno+pcode; //点名与编码

obj_txt:=obj_ModelSpace.AddText(txt,VarArrayRef(Ole_Point),edit4.Text );

obj_txt.color:=clrindex;

(8)对所有坐标点进行循环。

特别注意的是,拓普康下载数据会有“舍弃”大数的模式,比如点128,3572191.473,509150.692,-1.474,ZL,下载的结果可能是128,72191.473,9150.692,-1.474,ZL,这时要通过程序X加3500000Y加500000进行修正。

5 结语

拓普康全站仪操作简单,精度可靠,记录方便,对其数据格式的理解有助于后续的数据处理工作。该文介绍了一种实用的数据读取算法并依据此算法进行程序化,同时针对生产中经常进行CAD展点,介绍了如何用CAD外部语言实现的方法。

参考文献

[1] 李向东,刘学杰,伍顺运.Topcon全站仪内存在测绘中的应用[J].北京测绘,2003(1):37-39.

[2] 田春来,邢炜光,邢卫民,等.全站仪数据格式转换程序的设计与实现[J].测绘通报,2008(9):67-69.

[3] 赵晋睿,苏宗跃.拓普康GTS-600型全站仪原始数据的处理[J].甘肃科技,2009,25(8):28,49-50.

[4] 张永林,杜军和.VisualBasic编写拓普康通讯程序[J].城市勘测,2006(6):26-28.

猜你喜欢
数据格式测绘
浙江省第一测绘院
在智能交通系统中PLC数据格式转换方法的研究
测绘新技术在测绘工程中的应用
基于水利标准数据格式的BIM数据管理和水利BIM生态探索
04 无人机测绘应用创新受青睐
无人机在地形测绘中的应用
世界首个可记录物体内部结构等复杂信息的3D打印数据格式问世
测绘简史
论子函数在C语言数据格式输出中的应用
DWG与SHP数据格式互转换方法研究——以龙岩规划测绘数据为例