Scass绘图软件图形数据分析与应用

潘新树
(南宁航务工程处)

  Scass绘图软件是广州南方测绘仪器公司开发的一种适合于航道、海洋测量的绘图软件,该软件是为配合该公司生产的NGD60 — LS型GPS水上测量定位系统的内业成图任务而研制开发的。该软件和与之相配套的GPS水上测量定位系统自一九九八年推出至今,由于操作简便、功能强大、适用性强,在南方各省、沿海地区以及内陆沿江沿湖地区拥有大量用户。Scass绘图软件的特点是采用Visual Basic平台,通过NGD60 — LS型GPS水上测量定位系统采集数据,内业由Scass绘图软件自动完成绘图任务。
  在航道测量中,依据中华人民共和国交通部《水运工程测量规范》,河流的表面流速流向测量技术要求如下:“9.3.1.1 表面流速、流向测量宜采用浮标法观测,定位间距不超过图上30mm,当风力超过四级时不宜观测”;“9.4.1 采用浮标法进行表面流速流向的观测时,浮标标体露出水面高度不宜大于0.1m,......”,NGD60 — LS型GPS水上测量定位系统移动台包括主机、天线、数据采集电脑和蓄电瓶等全套装置重量超过40kg,而浮标只不过一个脸盘大小而已,重量不超过5kg。显然,表面流速流向测量不可能通过在浮标上安装GPS水上测量定位系统完成观测任务,另外,受GPS水上测量定位系统数量的限制,在多个测区同时生产的情况下,只能采用全站仪等常规仪器采集数据。这样就提出了一个问题:当外业数据不是由NGD60 — LS型GPS水上测量定位系统而是由全站仪采集时,能否借助Scass绘图软件实现表面流速流向的图形处理?通过对Scass绘图软件的研究,了解其各种图形的处理格式,从而摸索出这个问题的解决方案。本文介绍通过编制Qbasic程序实现Scass绘图软件对航道水文测量中表面流速流向图形的处理方法。
  Scass绘图软件对表面流速流向定位点图形的默认格式如下:
  3,2627542.02,36384871.88,0,流向点
  3,2627550.37,36384862.52,0,流向点
  3,2627558.34,36384851.33,0,流向点
  3,2627563.28,36384840.84,0,流向点
  3,2627568.92,36384828.64,0,流向点
  3,2627575.60,36384817.28,0,流向点
  ................................
  格式意义的顺序为:图形属性、X坐标、Y坐标、Z坐标、图形代码。而对折线图形的默认格式如下:
  7,2626528.62,36386459.62,0,
  255,2626519.64,36386470.69,0,
  ............................
  格式意义的顺序为:折线起(止)点代码、X坐标、Y坐标、Z坐标。可见坐标是两种格式的关键,因此,只要能把表面流向的观测数据处理成坐标数据并配以相应的代码成为上述格式,就能够利用Scass绘图软件的自动绘图功能将表面流速流向定位点连成一条轨迹,如果再根据前后定位点的距离和定位时间间隔计算出其流速,并注明在折线中央,就成为《水运工程测量规范》中表面流速流向的通用图式。


表面流速流向图

  以上分析就是借助Scass绘图软件实现常规仪器采集数据完成表面流速流向图形处理的思路,而整个过程是通过Qbasic程序进行坐标计算和格式转换来完成的。
一、外业采集数据的整理和准备:
  河流表面流速流向测量是一种对河流表面目标实施动态跟踪观测的测量,操作难度很大。在水流速度比较缓慢(v<1m/s)的情况下,单台全站仪勉强能够做到极坐标测距定位,大多数情况下(设计施工地段)河流表面流速较大,通常的做法是两台或多台全站仪(或经纬仪)进行同步交会角度来定位的,即前方交会测量法。当使用具有记忆和储存功能的全站仪观测时,仪器记录的观测数据格式如下:
  CO,Instrument:Nikon DTM-530
  CO,Zero azimuth:North
  CO,Zero VA:Zenith
  CO,Coord Order:NEZ
  CO,040204P <JOB> Created 04-Feb-2004 14:05:16
  ST,B3,B2,1.4250,45.0000,45.0000
  1,LX,1.3600,0.000,136.4131,90.1206,16:46:39,
  2,LX,1.3600,0.000,139.2407,90.1300,16:47:05,
  3,LX,1.3600,0.000,142.0228,90.1245,16:47:20,
  4,LX,1.3600,0.000,144.4020,90.1245,16:48:56,
  5,LX,1.3600,0.000,147.0217,90.1305,16:54:29,
  6,LX,1.3600,0.000,150.5602,90.1301,16:57:39,
  .........................................
  为了便于计算,把同步观测的各个测站的交会角度记录中无用的信息如设站说明、记录文件名、日期等数据删除,整理成如下简单形式:
  1,LX,1.3600,0.000,136.4131,90.1206,
  2,LX,1.3600,0.000,139.2407,90.1300,
  3,LX,1.3600,0.000,142.0228,90.1245,
  4,LX,1.3600,0.000,144.4020,90.1245,
  5,LX,1.3600,0.000,147.0217,90.1305,
  6,LX,1.3600,0.000,150.5602,90.1301,
  .................................
  如果观测数据是人工记录,可以只记录编号和水平角,然后按以上格式整理即可,因为参加运算的实际上只有水平角。各站数据分别存储于独立的文件,同时准备好测站坐标、交会起始角、交会时间间隔等数据。这样数据就可以用Qbasic程序处理了。
二、用Qbasic程序完成坐标计算和格式转换:
  由于观测所使用的仪器型号有所不同,其采集的数据格式也不相同,整理后的数据格式也有区别,所以Qbasic程序也要根据不同的数据格式做适当调整。以Nikon DTM-530为例,处理程序如下:
  REM “表面流速流向图形的格式转换”
  REM “前 方----两站交会开始的方向”
  REM “左 站----位于前方左侧的测站”
  REM “XA,YA----左站坐标”
  REM “XB,YB----右站坐标”
  REM “U , V----左右站交会顺时针角”
  REM “I , J----左右站起始角度”
  DIM XA,YA,XB,YB AS DOUBLE
  DIM X#,Y#,M,N AS DOUBLE
  P = 3.141592654# : K = P / 180
  W$ = “D:\坟嘴滩\水文\”
  INPUT “左站数据文件---LXA?.TXT”; E$
  INPUT “右站数据文件---LXB?.TXT ”; F$
  INPUT “点位结果文件---LDW?.GRP ”; A$
  INPUT “流线结果文件---LXX?.GRP ”; B$
  INPUT “流速结果文件---LSS?.GRP ”; C$
  INPUT “判读结果文件---LNM?.GRP ”; D$
  INPUT “定位时隔(秒)”; TT
  OPEN W$ + E$ FOR INPUT AS #1
  OPEN W$ + F$ FOR INPUT AS #2
  OPEN W$ + A$ FOR OUTPUT AS #3
  OPEN W$ + B$ FOR OUTPUT AS #4
  OPEN W$ + C$ FOR OUTPUT AS #5
  OPEN W$ + D$ FOR OUTPUT AS #6
  INPUT #1, NM, XA, YA, I
  INPUT #2, NM, XB, YB, J
  E = XB - XA
  F = YB - YA
  O = ATN(ABS(F / E))
  IF E < 0 AND F <= 0 THEN O = O + P
  IF E < 0 AND F > 0 THEN O = P - O
  IF E > 0 AND F < 0 THEN O = 2 * P - O
  DD = (YB - YA) / SIN(O)
  G = I : GOSUB 500 : I = G
  G = J : GOSUB 500 : J = G
  DO WHILE NOT EOF(1#) OR NOT EOF(2#)
  INPUT #1, NM,S$,JJ,DL,U,VV
  INPUT #2, NM,S$,JJ,DL,V,VV
  IF U = 0 OR V = 0 THEN 100
  G = U : GOSUB 500 : U = G
  G = V : GOSUB 500 : V = G
  M = I - U : N = V - J
  A = ABS(M): B = ABS(N)
  IF A >= P THEN A = 2 * P - A
  IF B >= P THEN B = 2 * P - B
  C = P - A - B
  IF (M>0 AND ABS(M)<P) OR (M<0 AND ABS(M)>P) THEN W=O-A ELSE W=O+A
  SS = DD * SIN(B) / SIN(C)
  X# = XA + SS * COS(W)
  Y# = YA + SS * SIN(W)
  M# = X# - 5
  N# = Y# - 5
  PRINT #3,"3";","; X#;","; Y#;",,"; 0 ;",";"流向点"
  PRINT #6,"13";","; M#;","; N#;","; NM;","
  IF NM = 1 THEN PRINT #4,"7";","; X#;","; Y#;",";"34";","
  IF NM = 1 THEN 100
  PRINT #4,"255";","; X#;","; Y#; ",";"34"; ","
  EE = X# - X0
  FF = Y# - Y0
  XX =( X# + X0 )/2
  YY =( Y# + Y0 )/2
  SS =( EE*EE + FF*FF )^0.5
  VV = SS /TT
  IF SS < 5 THEN 100
  PRINT #5,"20" ;","; XX;","; YY;","; STR$(VV);","
  100 X0 = X# : Y0 = Y#: LOOP
  CLOSE #1: CLOSE #2: CLOSE #3: CLOSE #4: CLOSE #5: CLOSE #6
  PRINT : PRINT : PRINT
  PRINT "结果文件 ------"; W$+A$;" "; W$+B$
  PRINT " "; W$+C$;" "; W$+D$
  PRINT : PRINT : PRINT
  200 END
  500 REM "度分秒转换弧度程序"
  G1 = INT(G)
  G2 = INT((G - G1) * 100) / 60
  G3 = (100 * G - INT(100 * G)) * 100 / 3600
  G = (G1 + G2 + G3) * K
  RETURN
  本Qbasic程序的数学模型采用正弦三角边长计算公式。在实际工作中,随着目标(浮标)的移动,各站的交会角度都在不断发生变化,有时候目标甚至由前方变成后方,因此编制Qbasic程序的关键在于象限角的判断与计算。由于计算机对角度的运算采用弧度单位,而全站仪记录数据中角度单位是60进制,所以Qbasic程序需要对角度单位进行弧度换算,本Qbasic程序是通过设计子程序来进行弧度换算的。
三、用Scass绘图软件完成表面流速流向图形处理:
  Qbasic程序已将流向观测数据分别处理成定位点、轨迹线和水面流速三个Scass图形文件,同时还生成一个检查和判别定位点点号的Scass文件,以上四个文件均已转换成“.GRP”图形格式,实际上Qbasic程序已完成了河流表面流速流向图形的处理。用判读文件对照检查无误后,剩下的工作只是通过现成的Scass绘图软件把三个图形文件依此打开合并就可以了。
结束语:
  Qbasic数据处理程序简单、灵活,可以随时调整,计算结果准确,图形规范美观,能够进行大量数据的批量处理,使用非常方便。由于表面流速流向测量是航道水文测量中一项重要的内容,对于航道整治设计来说不可或缺,观测数据量大,图形要求规则,若用人工绘制或在Scass绘图软件上手工编辑是不可想象的。通过Qbasic编程实现Scass绘图软件对表面流向图形的处理功能,使该项工作节省了大量复杂的工序,极大地提高了效率。Qbasic数据处理程序通过改变输入数据变量的顺序和增减,还可以用于其他前方交会测量的坐标计算并通过Scass绘图软件实现图形处理,如大面积的水深交会等测量。因此,Qbasic数据处理程序对Scass绘图软件的二次开发具有十分重要的价值。

参 考 文 献
[1] 中华人民共和国行业标准  水运工程测量规范  JTJ 203-2001

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