13.トラバース測量            [もくじへ] [トップページへ]

13.1 トラバース測量とは

測点を折れ線状に配置し、各測点における隣接点間の交角(夾角)と距離を

測定して、測点の位置を定める測量をトラバース測量といいます。

一昔前までは距離はテープ、角度はトランシットという器械で測定していました

が、電子機器の発達にともない、距離を測定する器械として光波測距儀が普

及してきました。最近では光波測距儀とトランシットが一体になったトータルス

テーションという器械も使われています。

トラバース測量の種類は網の形や精度により、いろんな種類がありますが、

ここでは次の3つの種類について考えます。

(1)開放トラバース

基準点を出発して、最後の測点がどの基準点とも結合しない測量です。各測

点に誤差があってもその誤差を発見できないので、最も簡易な測量に限られ

ます。

      

(2)閉合トラバース

基準点を出発して、最後の測点が出発点に結合する測量です。最後の測点

が出発点に一致するという条件で測量の誤差がわかり、その誤差を各点に

補正することができます。しかし、図形的に相似な場合など、距離測定に誤差

があってもその誤差を発見できないという欠点があります。

     

(3)結合トラバース

基準点を出発して、最後の測点が出発点以外の他の基準点に結合する測量

です。これは、他の2つの測量より確実な測量です。

     

 

 


13.2 データ入力画面          [もくじへ] [トップページへ]

===================================================

プログラム例題23

トラバース測量の入力画面を作成せよ。

=========================================================

複雑なプログラムを作成する場合、

(1)入力画面のデザイン

(2)計算はどのようにするか

(3)どのように出力するか

などについて、考えなければなりません。ここでは(1)について、あまり欲を出

さず必要最小限の画面を作成します。

入力データは、初点名とその座標、初点方向角、終点名とその座標、終点方

向角、各測点名、各水平角、各距離とします。

また、データ数が多くなると途中で入力ミスをした場合、最初から入力し直す

のはたいへんですので、データの入力の修正ができるようにします。

 

<HTML>
<HEAD>
   <TITLE>例題23</TITLE>

<SCRIPT LANGUAGE="VBScript">
<!--
'
        
Dim an, xa, ya, alpa                                '初点名,X,Y,方向角
        
Dim bn, xb, yb, alpb                                '終点名,X,Y,方向角
        
Dim ii
        
ii = 1                                                           '測点番号
        
Dim na(50), bt(50), ds(50)                    '測点名,夾角,距離
        
Dim n                                                          '測点数
'
'
'
                'クリアボタンをクリック
'
        Sub INI_OnClick
                Dim i
                '
                document.Form1.AN.value = ""
                document.Form1.XA.value = 0
                document.Form1.YA.value = 0
                document.Form1.AA.value = 0
'
                '

                document.Form1.BN.value = ""
                document.Form1.XB.value = 0
                document.Form1.YB.value = 0
                document.Form1.AB.value = 0
'
                
ii = 1
                
For i=1 To 50
                       na(i) = ""
                       bt(i) = 0
                       
ds(i) = 0
                
Next
'
                document.Form1.NO.value = ii
                document.Form1.NA.value = na(ii)
                document.Form1.BT.value = bt(ii)
                document.Form1.DS.value = ds(ii)
        End Sub
'
'
                '後退ボタン(<)をクリック
'
        Sub BCK_OnClick
                na(ii) = document.Form1.NA.value
                bt(ii) = CDbl(document.Form1.BT.value)
                
ds(ii) = CDbl(document.Form1.DS.value)
'
                
ii = ii-1
                
If ii <= 0 Then ii=1
                document.Form1.NO.value = ii
                document.Form1.NA.value = na(ii)
                document.Form1.BT.value = bt(ii)
                document.Form1.DS.value =
ds(ii)
        End Sub
'
'
                '前進ボタン(>)をクリック
'
        Sub FRD_OnClick
                na(ii) = document.Form1.NA.value
                bt(ii) = CDbl(document.Form1.BT.value)
                
ds(ii) = CDbl(document.Form1.DS.value)
'
                
ii = ii+1
                
If ii > 50 Then ii=50
                document.Form1.NO.value = ii
                document.Form1.NA.value = na(ii)
                document.Form1.BT.value = bt(ii)
                document.Form1.DS.value =
ds(ii)
        End Sub
'
'
                '計算ボタンをクリック
'
        Sub CAL_OnClick
                
Dim i
'
                '初点データ
                
an = document.Form1.AN.value
                
xa = CDbl(document.Form1.XA.value)
                
ya = CDbl(document.Form1.YA.value)
                
alpa = CDbl(document.Form1.AA.value)
'
                '終点データ
                
bn = document.Form1.BN.value
                
xb = CDbl(document.Form1.XB.value)
                
yb = CDbl(document.Form1.YB.value)
                
alpb = CDbl(document.Form1.AB.value)
'
                '測点データ
                na(ii) = document.Form1.NA.value
                bt(ii) = CDbl(document.Form1.BT.value)
                
ds(ii) = CDbl(document.Form1.DS.value)
'
                '測点数のカウント
                
n = 0
                For i = 1 To 50
                        
If na(i)="E" Then Exit For
                             
n = n + 1
                
Next
'
'
'   *** 計算部 ***
'   ここに、計算部を記述します
'
        End Sub
'
-->
</SCRIPT>

</HEAD>


<BODY>


<FORM NAME="Form1">
 *** トラバース計算 ***<BR>
<BR>
初点名= <INPUT TYPE="text" NAME="AN" size=15>
   XA= <INPUT TYPE="text" NAME="XA" size=15>
   YA= <INPUT TYPE="text" NAME="YA" size=15>
  αA= <INPUT TYPE="text" NAME="AA" size=15>
<BR>
終点名= <INPUT TYPE="text" NAME="BN" size=15>
   XB= <INPUT TYPE="text" NAME="XB" size=15>
   YB= <INPUT TYPE="text" NAME="YB" size=15>
  αB= <INPUT TYPE="text" NAME="AB" size=15>
<BR>
  番号= <INPUT TYPE="text" NAME="NO" size=15>
  点名= <INPUT TYPE="text" NAME="NA" size=15>
  測角= <INPUT TYPE="text" NAME="BT" size=15>
  距離= <INPUT TYPE="text" NAME="DS" size=15>
<BR>
<BR>
      <INPUT TYPE="button" NAME="BCK" VALUE=" < ">
<INPUT TYPE="button" NAME="FRD" VALUE=" > ">
      <INPUT TYPE="button" NAME="INI" VALUE="クリア">
<INPUT TYPE="button" NAME="CAL" VALUE="計 算">
<HR>

</FORM>



</BODY>
</HTML>

 

実行画面は、つぎのようになります。

 

 

 

        Dim an, xa, ya, alpa                                '初点名,X,Y,方向角
        
Dim bn, xb, yb, alpb                                '終点名,X,Y,方向角
        
Dim ii
        
ii = 1                                                           '測点番号
        
Dim na(50), bt(50), ds(50)                    '測点名,夾角,距離
        
Dim n                                                          '測点数

入力中のデータは、各プロシージャで使われるので、グローバル変数にします。

変数 ii は、入力中の測点番号です。変数 n は、入力測点数で、測点名に"E"

が入力されたときの測点番号 -1 です。

 

                'クリアボタンをクリック
'
        Sub INI_OnClick
                Dim i
                '
                document.Form1.AN.value = ""
                document.Form1.XA.value = 0
                document.Form1.YA.value = 0
                document.Form1.AA.value = 0
'
                '

                document.Form1.BN.value = ""
                document.Form1.XB.value = 0
                document.Form1.YB.value = 0
                document.Form1.AB.value = 0
'
                
ii = 1
                
For i=1 To 50
                       na(i) = ""
                       bt(i) = 0
                       
ds(i) = 0
                
Next
'
                document.Form1.NO.value = ii
                document.Form1.NA.value = na(ii)
                document.Form1.BT.value = bt(ii)
                document.Form1.DS.value = ds(ii)
        End Sub

クリアボタンをクリックしたとき、実行されます。テキストエリアに未入力の部分

があると、数学関数にその未入力のテキストのデータを渡すとエラーが発生す

るので、各テキストエリアと変数を初期化します。数値の場合 0 を、文字の場

合ヌル "" を代入します。また、測点数は 50 個まで(終了判定の "E" を除く

49 )です。

入力開始のときは、まず、クリアボタンをクリックして初期化します。初期化しな

いで、前進ボタンなどをクリックすると、エラーになります。

 

                '後退ボタン(<)をクリック
'

        Sub BCK_OnClick
                na(ii) = document.Form1.NA.value
  @
                bt(ii) = CDbl(document.Form1.BT.value)  
A
                
ds(ii) = CDbl(document.Form1.DS.value)  B
'
                
ii = ii-1  C
                
If ii <= 0 Then ii=1  D
                document.Form1.NO.value = ii  
E
                document.Form1.NA.value = na(ii)  
F
                document.Form1.BT.value = bt(ii)  
G
                document.Form1.DS.value =
ds(ii)  H
        End Sub

後退ボタンをクリックしたとき、実行されます。

@〜Bで、現在表示されているデータを変数にセットします。 na(ii) は測点

名、 bt(ii) は夾角、 ds(ii) は距離です。

Cは、測点番号を前に戻します。

Dは、測点番号に0以下はありえないので、最小の番号を1にします。

E〜Hで、前の観測データを表示します。

次の、前進ボタンをクリックしたときの処理もCDの部分以外は同じです。

 

                '計算ボタンをクリック
'
        
Sub CAL_OnClick
                
Dim i
'
                '初点データ  
@
                
an = document.Form1.AN.value
                
xa = CDbl(document.Form1.XA.value)
                
ya = CDbl(document.Form1.YA.value)
                
alpa = CDbl(document.Form1.AA.value)
'
                '終点データ  
A
                
bn = document.Form1.BN.value
                
xb = CDbl(document.Form1.XB.value)
                
yb = CDbl(document.Form1.YB.value)
                
alpb = CDbl(document.Form1.AB.value)
'
                '測点データ  
B
                na(ii) = document.Form1.NA.value
                bt(ii) = CDbl(document.Form1.BT.value)
                
ds(ii) = CDbl(document.Form1.DS.value)
'
                '測点数のカウント  
C
                
n = 0
                For i = 1 To 50
                        
If na(i)="E" Then Exit For  D
                             
n = n + 1
                
Next
'
'
'
'   *** 計算部 ***  E
'   ここに、計算部を記述します
'
        
End Sub

計算ボタンをクリックしたとき、実行されます。

@からBは、画面上のデータを変数に読み込みます。

Cの部分は、測点名が "E" になる前までの測点数をカウントします。

Dは、na(i)"E" のとき、For 〜 Next のループを抜け出ます。

E以下に、計算と出力のルーチンを記述します。

 

 

<FORM NAME="Form1">
   ・
   ・
   ・
</FORM>

入力画面(フォーム)を作成するブロックです。 <HR> タグは、水平線を入れ

るタグで、終了タグはいりません。

タグの前後のスペースや、改行タグ <BR> を入れる箇所を調整して、見やす

い画面を作ってみて下さい。

 


[もくじへ] [トップページへ] [次ページへ]