开放式野外数据采集代码及成图转换程序设计

郑礼飞
(广西第一测绘院 广西南宁 530023)

【摘 要】 结合多年的野外数据采集经验,设计一种可供用户修改、自定义的野外数据采集代码及成图转换程序方案,用户可根据自己的需求修改代码、转换方式及定义简单数据格式的读取方式。
【关键字】 代码 开放式 数据采集 成图转换

  1 引言
  在精度要求比较高的大比例尺地形地籍测量中,常用全站仪或GPS RTK在实地进行碎部点采集,采集得到的是点的坐标或角度和边长等元素。为了能在内业转换成图形时连线、配赋属性等,采集时给每个点赋一个代码。代码设计的好坏直接影响到采集的速度,内业成图的效率。商业成图软件都提供一套代码和相应的转换程序。这些程序只能在该系统中使用,不对用户开放,用户难以根据自己的仪器设备情况、个人习惯进行修改。笔者根据多年的野外工作经验,设计一套开放式的野外数据采集代码方案,用Visual LISP编写转换程序。在实际工作中,深受作业员的喜爱。该方案有以下特点:
  1.开放性,用户可以决定使用什么代码、内业成图处理方式,自定义简单的数据格式读取方式;
  2.适用所有在AutoCAD上进行二次开发的成图软件上使用;
  3.不用预先画草图,不用现场记点号代码。每个测图组只需两个工作人员;
  4.代码简单明了,易于使用,缩短野外数据采集时换代码时间,提高工作效率。
  2 代码设计
  代码设计的核心是代码文件的设计,转换程序根据代码文件提供的信息进行转换,用户所有自定义功能都能在该文件中修改。因此,该文件既要便于用户修改又要适合程序处理。代码文件应该包含以下内容:
  1.注释部分,包括程序的基本情况,使用帮助等信息;
  2.代码段,包括野外使用的代码符号,内业处理的信息等;
  3.自定义数据格式模板,提供给用户定义简单数据格式读取方法。
  根据程序转换成图的方法,把代码段分成三部分:特殊字段、连线地物代码段、独立地物代码段。
  特殊字段中规定以下内容:控制点小数位数、高程点小数位数、连线代码、高程点代码、控制点代码、数据扩展属性名称。
  连线地物代码段和独立地物代码段用户可以修改、自由添加或删除,但独立地物代码段一定要包含高程点和控制点的代码定义。
  连线地物代码定义:
  代码,处理方式,线型(或新实体),图层,颜色,线宽,属性代码
  独立地物代码定义:
  代码,处理方式,块名(或形名),图层,颜色,插入比例,属性代码
  上述定义中“处理方式”是AutoCAD的命令,具体是哪种处理方式,依据后面的实体而定。线型是在AutoCAD中定义的复杂线型,其处理方式是PLINE。独立地物用块表示,则处理方式是INSERT,用形表示则是SHAPE。如果是用户自己定义的实体,则是绘制该实体的命令。插入比例乘以成图比例尺分母即得图块或形插入时的真正比例。属性代码因成图系统不同而异,其值在转换时附加到CAD的实体中。
  自定义数据格式模板提供给用户定义简单数据格式的读取方式,可以提供两种格式:分隔符格式、固定宽格式。分隔符格式数据间用一定符号分隔,如南方仪器的坐标数据文件dat文件格式。用户定义时要求提供以下信息:分隔符号、点号的列位置、x坐标的列位置、y坐标的列位置、高程h的列位置、野外代码的列位置、点信息的标志位置及点标志符号。其中xyh还要提供缩放比例系数。固定宽格式每种数据所占的字符数量是固定的,如索佳仪器的SET格式。定义时要求提供的则是每一种数据占据的字符位置。
  3 程序设计
  在AutoCAD中可供选择的计算机语言有VBA、AutoLISP、C++等,C++一般非专业程序员难以掌握,VBA在CAD中运行速度较快,可视化界面比较容易做,但不能加密,而且编写比较繁琐。自从AutoLISP升级到Visual LISP,功能得到了极大的加强,保持AutoLISP的简洁、自由。下面以Visual LISP为例介绍转换程序的设计。
  一个易于使用的程序,应该提供一个友好的界面。Visual LISP程序的界面用可编程对话框语言DCL编写。
  本程序界面设计如下,提供了必要的信息输入方式。

图1 野外采集数据转换程序界面

  在编写程序时应该注意下面几个问题:
  1.为提高程序运行速度,应遵循以下原则。
  a.各自定义函数间用表来传递数据,少用文件传递。LISP程序语言最擅长处理表数据,提供了许多智能的表处理函数。如MAPCAR、APPLY等。
  b.充分利用Visual LISP的字符串处理函数。Visual LISP新增加了一些VL-STRING-开头的字符串处理函数,利用好能显著提高字符串的处理速度。
  c.尽量少调用CAD命令绘制实体,多用ENTMAKE函数在数据库中生成实体。可以提高运行速度,提高程序的稳定性。
  2.测点标志圆属性为该点的野外采集代码和该点的高程值。在内业编图时用来识别哪些点是实测,可以查看该点的野外代码。图面的负载有限,留在图面的高程点有限,有了实测标志圆可以随时恢复实测点的高程。
  3.为了使程序流程简洁明了,便于调试维护,应充分使用自定义函数,每个模块完成一个功能。

图2 野外采集数据转换程序流程图

  4 使用实例
  下面是在广西第一测绘院与武汉大学合作研制的数字化成图软件SZCT中定义的代码文件实例。
  ======================================================================
  特殊字段
   控制点小数点位数:3
   高程点小数点位数:2
   连线野外代码:-
   高程点野外代码:GC
   控制点野外代码:CP
   数据扩展属性名称:SZCT
  连线代码段
  ;代码, pline,  线型,   图层,  颜色, 线宽,  属性代码
    f, pline,  bylayer,  jmd,   4,  0,   211000-0
    y, pline,  x5,    jmd,  bylayer, 0,   218000-0
    r, pline,  x6,    dlss,   2,  0.1,  444000
    k, pline, bylayer,   jmd,   7,  0.0,  215000-0
    s, pline, bylayer,   sxss,   5,  0.0,  611100
    l, pline, bylayer,   jmd,   7,  0.0,  245000
    j, pline, 1161,    zbtz,   3,  0.0,  961000
    d, pline, 10421-0,   zbtz,   3,  0.0,  852100
    w, pline, bylayer,   jmd,   1,  0.0,  243000-0
  独立地物代码字段
  ;代码, insert,  块名,  图层,  颜色,  缩放比例,  属性代码
   gc, insert,  gc200,  gcd,  bylayer,  0.001,   831000
   cp, insert,  gc117,  kzd,  bylayer,  0.001,   118000
   ld, insert,  gc097,  dldw,  bylayer,  0.001,  352100
   pp, insert,  gc091,  dldw,  bylayer,  0.001,  316000
   sj, insert,  gc043,  dldw,  bylayer,  0.001,  544100
   m, insert,  gc111,  dldw,  bylayer,  0.001,   377200
   dg, insert,  gc170,  dldw,  bylayer,  0.001,  513000
   ws, insert,  gc041,  dldw,  bylayer,  0.001,  544100
  自定义数据格式模板
  {
   南方*.dat
   分隔符格式
   
   1
   4,1
   3,1
   5,1
   2
  }
  {
   索佳*.set
   固定宽格式
   13-20
   21-36,1
   37-52,1
   53-68,1
   69-76
   1-4,08TP
  }
  End
  ======================================================================
  上面的代码文件省略了注释部分。下面我们看看,如何在野外工作中使用这些代码。

图3 实地现状及实测点位顺序

  图3是实测点位及点号示意图,在进行野外采集时给点赋代码如下:
  1,f
  2,-
  3,-
  4,r
  5,-
  6,ws
  7,sj
  8,-
  9,-
  图4是内业成图转换后的示意图。其中小圆圈是实测标志圆,其上赋有该点的野外采集代码和该点的高程值。数字是展上去的点号。转换程序会自动展出居于最大最小高程值间的高程点。图中略去高程点。   

图4 内业成图转换后图形

  5 结束语
  本代码设计方案经过多年摸索总结,逐步完善起来。特别适合在大面积地形地籍测绘中应用。现在测绘工作的效率越来越高,而人员越来越少,因此,本设计方案只设计一个连线代码,不合适多人跑棱镜的情况下使用。如果仅仅当作一个成图的转换工具使用,则完全适用。


【参考文献】
[1] SZCT成图软件帮助文档及相关文件
[2] 陈伯雄,冯伟.Visual LISP for AutoCAD 2000 程序设计——从学会到用好.机械工业出版社,2000.3

地址:广西南宁市建政路5号  邮编:530023  Tel:0771-5606397  Email:webmaster@digitalgx.com
广西基础地理信息中心版权所有 2005-2010 广西基础地理信息中心制作