Upload
others
View
7
Download
0
Embed Size (px)
Citation preview
中文摘要
國內隧道工程積極探討及引進新技術的同時,僅部分單位針對
施工中隧道之方向及高程控制、開挖斷面收方、絕對變位量測與其它
相關測量工作進行探討,為了設計出更快速、更符合於現地要求,所
以進行此視窗程式之開發與研究。
本研究內容包含隧道斷面收方的量測技術、隧道斷面收方的測量
原理,以及Visual Basic程式語言應用於工程技術等探討。另外在
可視化程式撰寫方面,使用以視覺化為主體的程式語言 Microsoft
Visual Basic 6,使用者可看到即時執行的資料畫面。本研究之視窗
程式內容包含隧道斷面收方資料處理、隧道斷面收方繪圖等。
本研究成果為利用傳統隧道斷面收方的方法結合 Visual
Basic 程式語言撰寫成一套視窗程式,並藉由實際隧道斷面收方資
料測試視窗程式之可行性。且撰寫完成之視窗程式經測試後可使用在
實際隧道的斷面收方上。本研究所完成之視窗化表單包含工程基本資
料系統、隧道斷面收方資料處理系統、隧道收方繪圖系統。結合測量原
理與程式編輯撰寫適合隧道斷面收方之程式,期能提昇國內隧道工
程測量之多元化。
關鍵字: 隧道斷面收方、測量、後方交會法、Visual Basic 視窗程式設
計、可視化
I
ABSTRACT
While the domestic tunnel engineering is enthusiastically discussed and instilled into new techniques, merely few organizations proceed to make studies - the direction, the control of elevation, the profile survey of the excavation, the absolute variation and any other factors relative to the measurement of the tunnel - to design more efficiently correspondent with the request of the field and therefore this windows programming has being developed and researched.
This research includes the measurement of resection method, the principle of profile survey of tunnel and the application of Visual Basic programming language to engineering techniques. According to the coding of visualization programming, Microsoft Visual Basic 6, using visualization as a principal part, makes it possible for users to immediately see data frames executed in progress. The content of programming design in this research consists of the data processing and illustration of the profile survey of tunnels, etc.
Combined traditional profile survey of tunnels with Visual Basic programming, a set of windows programming whose feasibility has been tested by actual data of the profile survey of tunnels and thus is proven to be usable is the product of this research. The form is composed of data system of the construction, the data processing system of the profile survey of tunnels and the illustration system of the survey of tunnels. Joining the rule of measurement in the coding of the programming language to create a set of the windows programming adapted to profile survey of tunnels contributes to the expectation of raising the diversity of the measurement of domestic tunnels.
Key word: profile survey, measurement, Resection Method, Visual Basic
Programming Design, Visualization.
II
致 謝
研究撰寫期間,承蒙恩師 李煜舲博士熱心指導、疑難解說、圖文
斧正,使學生能順利完成學業,特致崇上敬意與謝意。
另感謝宜蘭大學 趙紹錚博士於口試期間不吝指導使學生受益良
多,另感謝本校 楊朝平老師在學生組內及組外口試時之用心指導。
同時亦感謝 呂志宗老師對於學生在課業上之解惑及 吳淵旬老師在
學生在學期間用心的教學與指教,學生至感銘謝。
在校期間,由衷感謝吳俊傑、許榮達等專班學長及一起奮鬥的同
儕們,皆讓學生無論在專業知識或為人處事方面所得甚多。
最後,感謝我的家人爸爸、媽媽及親愛老婆的全心支持,讓我無
後顧之優,能順利完成學業。
謹此,獻上我深深的感謝給那些幫助我、協助我的家人、師長、好
友們。
謹識
民國九十五年一月十七日 於新竹
III
目 錄
中文摘要 ......................................................................................................................... I ABSTRACT .................................................................................................................. II 致 謝 .......................................................................................................................... III
目 錄 .......................................................................................................................... IV
表 目 錄 ...................................................................................................................... VI
圖 目 錄 .................................................................................................................... VII
第一章 緒論 ................................................................................................................... 1 1.1 研究背景 .......................................................................................................... 1 1.2 研究動機與目的 .............................................................................................. 1 1.3 研究內容 .......................................................................................................... 2 1.4 研究流程 .......................................................................................................... 3
第二章 文獻回顧 ........................................................................................................... 4 2.1 前言 .................................................................................................................. 4 2.2 隧道斷面收方之量測技術 .............................................................................. 4
2.2.1 全自動隧道斷面收方系統- Profiler4000 量測技術 .......................... 4 2.2.2 三維變形光學量測技術 ....................................................................... 6
2.3 隧道斷面收方之測量原理 .............................................................................. 8 2.3.1 前方交會法 ........................................................................................... 9 2.3.2 後方交會法 ......................................................................................... 12 2.3.3 綜合式後方交會法 ............................................................................. 13
2.4 Microsoft Visual Basic 視窗程式語言之原理與相關應用 .......................... 14 第三章 隧道斷面收方技術與相關作業流程 ............................................................. 21
3.1 前言 ................................................................................................................ 21 3.2 隧道斷面收方基本資料蒐集 ........................................................................ 21
3.2.1 隧道線形曲線資料 ............................................................................. 21 3.2.2 隧道支撐型式 ..................................................................................... 22 3.2.3 隧道豎曲線資料 ................................................................................. 22
3.3 隧道斷面量測方法 ........................................................................................ 22 3.4 隧道斷面收方之時機 .................................................................................... 23 3.5 斷面收方作業流程與步驟之建立 ................................................................ 24
第四章 隧道斷面收方視窗程式之撰寫與設計 ......................................................... 29
4.1 前言 ................................................................................................................ 29 4.2 Visual Basic 6.0 程式語言 ............................................................................ 30 4.3 資料庫系統 .................................................................................................... 32 4.4 隧道斷面收方處理程序與視窗程式設計 .................................................... 33
IV
4.4.1 主要繪圖之視窗介面設計 ................................................................. 33 4.4.2 工程資訊系統之視窗設計 ................................................................. 33 4.4.3 資料處理系統之視窗設計 ................................................................. 33 4.4.4 成果顯示系統之視窗設計 ................................................................. 34 4.4.5 技術支援系統之視窗設計 ................................................................. 34
第五章 隧道斷面收方視窗程式實測 ......................................................................... 43
5.1 前言 ................................................................................................................ 43 5.2 玉長公路隧道 ................................................................................................ 43
5.2.1 工程概述 ............................................................................................. 43 5.2.2 隧道斷面收方基本資料 ..................................................................... 43 5.2.3 收方步驟 ............................................................................................. 44 5.2.4 隧道斷面收方視窗程式之應用與成果顯示 ..................................... 45
5.3 汐止山岳鐵路隧道 ........................................................................................ 46 5.3.1 工程概述 ............................................................................................. 46 5.3.2 隧道收方基本資料 ............................................................................. 46 5.3.3 應用隧道斷面收方程式之結果 ......................................................... 47
第六章 結論與建議 .................................................................................................... 71
6.1 結論 ................................................................................................................ 71 6.2 建議 ................................................................................................................ 71
參考文獻 ...................................................................................................................... 72
附 錄 ....................................................................................................................... 74
V
表 目 錄
表 2.1 三維變形量測與傳統收歛量測之整理比較...................................................15表 2.2 三維變形量測系統之優缺點整理...................................................................16表 5.1 玉長公路隧道工程控制樁資料.......................................................................48表 5.2 玉長公路隧道工程中線資料...........................................................................49表 5.3 玉長公路隧道工程標準斷面資料...................................................................50表 5.4 汐止山岳鐵路隧道控制樁資料.......................................................................52表 5.5 汐止山岳鐵路隧道中線資料...........................................................................53表 5.6 汐止山岳鐵路隧道標準斷面資料...................................................................54
VI
圖 目 錄
圖 2.1 Profiler 4000 設備............................................................................................18圖 2.2 測量之原理.......................................................................................................19圖 2.3 前方交會法圖形...............................................................................................20圖 2.4 後方交會法圖形...............................................................................................20圖 3.1 緩和曲線各部名稱...........................................................................................26圖 3.2 單曲線各部名稱...............................................................................................26圖 3.3 豎曲線各部名稱...............................................................................................27圖 3.4 架設在隧道內任一點上...................................................................................27圖 3.5 架設在已知點上...............................................................................................27圖 3.6 Leica TCR 307 收方儀器..................................................................................28圖 3.7 隧道斷面收方圖...............................................................................................29圖 4.1 專案建立選擇圖示...........................................................................................35圖 4.2 Visual Basic 視窗設計介面..............................................................................35圖 4.3 視窗程式設計...................................................................................................36圖 4.4 Excel 之 csv 檔案形式.....................................................................................37圖 4.5 Asscess 2000 資料庫介面................................................................................37圖 4.6 隧道斷面收方資料匯入 Asscess 2000 資料庫...............................................38圖 4.7 主要繪圖視窗介面設計...................................................................................38圖 4.8 工程資訊系統視窗設計...................................................................................39圖 4.9 資料處理系統之視窗設計...............................................................................40圖 4.10 成果顯示系統之視窗設計.............................................................................41圖 4.11 技術支援系統之視窗設計.............................................................................42圖 5.1 玉長公路位置圖...............................................................................................57圖 5.2 隧道斷面收方程式主畫面(玉長公路隧道)...............................................58圖 5.3 開啟新檔畫面(玉長公路隧道)...................................................................59圖 5.4 收方資料 Excel 檔(玉長公路隧道).............................................................60圖 5.5 隧道斷面收方程式資料處理系統(玉長公路隧道)...................................61圖 5.6 經隧道斷面收方程式資料處理系統後(玉長公路隧道)...........................62圖 5.7 玉長公路隧道斷面收方程式之成果顯示.......................................................63圖 5.8 玉長公路隧道斷面收方繪圖結果...................................................................64圖 5.9 Excel 版本之收方形式(玉長公路隧道).....................................................65圖 5.10 汐止山岳鐵路隧道位置圖.............................................................................66圖 5.11 隧道斷面收方程式新建檔案畫面(汐止山岳鐵路隧道).........................67圖 5.12 隧道斷面收方程式資料處理系統(汐止山岳鐵路隧道).........................68圖 5.13 汐止山岳鐵路隧道斷面收方繪圖結果.........................................................69
VII
圖 5.14 Excel 版本之收方形式(汐止山岳鐵路隧道)...........................................70
VIII
第一章 緒論
1.1 研究背景
隧道工程由於面臨地質條件難以事先探查完全掌握、施工環境惡
劣及設計理論未臻完善等狀況,為具高危險性之地下工程,而監測
作業即是確保其施工安全之最大保障。地下開挖施工方法進展至以新
奧工法(NATM)理念施工後,監測即為 NATM 設計及施工之重要
一環。面對台灣山多、地形險峻且地質複雜多變甚或驟變,在不可避
免須興建隧道時,其工期、成本與品質均是一大挑戰。為盡量減少隧
道災變發生,應盡可能掌握地質及以施工技術、管理克服,而監測作
業亦須配合,甚或不可或缺。蓋因施工監測可彌補設計時地質資料之
不足,回饋設計以適時調整施工支撐,達到有效、經濟,使施工順利,
進而防止災害發生,確保施工安全。一般山岳隧道所面對的大地材料,
仍有許多現實條件尚未能有效掌握地質狀況,尤其台灣位處板塊衝
撞帶,地質複雜且多變,雖設計分析縝密周詳及處理工法進步,但
仍無法完全解決上述種種未知的條件。
1.2 研究動機與目的
隧道斷面的開挖,無論是使用鑽炸或機械工法,其開挖範圍之
管理值完全由隧道斷面收方(survey of profile)所控制。然而,在
1991年以前之測量儀器僅少部分具備雷射測距及雷射光功能,且單
價非常高,更遑論收方程式設計。在毫無軟硬體設備,又需量測隧道
淨空斷面之下,完全依靠傳統測量工具,如經緯儀、測距儀、稜鏡、皮
尺或鋼尺及標竿或箱尺,量測角度與距離。並經由人工計算繪製收方
圖比對設計斷面,或使用設計半徑比對法,判讀斷面是否侵建築界
1
線或符合設計斷面。本研究延續許榮達(2004)之研究成果,包含:
隧道現場的收方經驗及量測方法,應用測量儀器、隧道斷面收方儀之
現場操作為基礎架構,自行研發編輯合適的視窗程式以實際應用於
隧道收方,期盼提昇隧道收方工程品質與水準。以安全、經濟及快速
的量測方法,達成開挖符合設計斷面的目標,並藉由相關資料之彙
整、檢討分析與實際應用,提供具體方法乃本研究的主要目的。
1.3 研究內容
第一章 緒論:闡述研究背景、研究動機、研究目的、論文架構等
內容,並針對本論文進行初步性的介紹。
第二章 文獻回顧:針對論文所包含之前人所研究內容進行回顧,
其包含隧道斷面收方量測的技術、隧道斷面收方量測的
原理、視窗程式語言的原理與應用進行介紹。
第三章 隧道斷面收方作業:針對隧道斷面收方作業進行介紹與
說明。
第四章 隧道斷面收方視窗程式撰寫與設計:針對視窗程式設計
架構進行說明,包含程式撰寫方式,另將程式碼以附
錄 方式展示。
第五章 實際案例應用與探討:於本章節中將針對所撰寫之程式,
藉由現地實際案例進行分析及討論。
第六章 結論與建議:在本章中將針對論文部分的成果作一簡述
並提出建議期望能對後續研究者有所幫助。
2
1.4 研究流程
緒 論
文獻回顧第二章
前言 隧道斷面收方之測
量原理
視窗程式語言之原
理與相關應用
隧道斷面收方之量
測技術
第三章 隧道斷面收方作業
隧道斷面收方之基本資
料蒐集
隧道斷面收方之時機 隧道斷面收方作
業流程
第四章隧道斷面收方視窗程式之撰寫與設計
資料庫系統 隧道斷面收方處理程序
與視窗程式設計Visual Basic 6.0
第五章隧道收方視窗程式之測試及應用
玉長公路隧道 汐止山岳鐵路隧道前言
結論與建議第六章
隧道斷面量測
方法
3
第二章 文獻回顧
2.1 前言
本章節中將針對前人所研究之成果如隧道斷面收方之量測技
術、隧道斷面收方之量測原理及 Microsoft Visual Basic 程式設計之原
理與相關應用技術,並引述國內、外專家學者之相關研究做一介紹及
回顧。
2.2 隧道斷面收方之量測技術
由鑽炸施工後之隧道斷面需測定是否符合設計。如欲求得縱向線
型或橫斷面等,大多在接近開挖面的附近進行測定,不僅危險性高,
且測量時阻礙通路,導致影響施工作業進度甚大,為了改善此ㄧ狀
況乃可發展自動化收方測量系統以提高施工安全性。
蔡茂生(1998)於研究中提出可利用一組旋轉之發射器及攝影
機以光波,如紅外線等介質方式射向隧道壁面,自攝影機的反射影
像之時間進行距離估計,當掃描隧道壁面ㄧ週後即可自動描繪出隧
道之斷面。以下針對所收集之收方測量做ㄧ技術回顧。
2.2.1 全自動隧道斷面收方系統-Profiler4000 量測技術
係由瑞士公司 Aemberg Measuring Technique 所發展出的一套全
自動隧道斷面收方系統。以 Leica DIOR3002S免稜鏡測距儀加上伺服
馬達驅動的定位裝置,並配合該公司所研發的後置軟體組合而成,
於國內工程應用部份,該系統曾使用於東工處新觀音隧道工程段進
行測試,以下針對此ㄧ系統所包含之儀器設備、規格與功能及效益的
評估進行介紹。
4
(一) 儀器設備
斷面收方儀器之組成包括自動隧道斷面收方儀、PC9500 資料處
理器、雷射光波測距儀 (如圖 2.1 所示)、後置處理軟體、筆記型電腦
及附屬設備。
(二) 規格與功能
(1) 儀器具有伺服馬達,可於水平及垂直向作 360度自動旋轉。
(2) 設定水平及垂直方向之最小旋轉度在 10″以內。
(3) 具後級處理軟體,所有量測資料與原始設計資料,均可
利用電腦運算,比較及分析、並以圖形顯示。
(4) 於隧道直徑 1.5倍距離內能自動量測不同距離之隧道斷面。
(5) 可於隧道內現場直接顯示量測點與設計斷面值之差異。
(6) 每一隧道斷面之最多量測點數可達 10,000點以上。
(7) 可自動記錄及儲存量測資料。
(8) 自動計算顯示實際量測範圍與設計斷面之挖、填方數量及
量測面積,設計面積,坡度比等功能。
(9) AMT Profile4000全自動隧道斷面收方儀可與現有之 Leica
DIOR3002S 測距儀結合使用。
(三) 效益評估
啟發研究收方之機制,源自於全自動隧道斷面收方儀,從收方
過程了解設備要求與原理,目前市售測量儀器皆具備免稜鏡測距功
能,自行收方程式設計,同樣可以達到比對斷面圖區域偏差量效果,
差別在於功能上無法自動化,造價卻只有十分之一(約 45萬),根
據實際收方之經驗,符合收方精度要求,提供隧道界一套簡單又便
宜收方選擇(許榮達,2004)。
5
2.2.2 三維變形光學量測技術
交通部鐵路改建工程局東部工程處(以下簡稱東工處)為配合
國內三維變形光學量測技術之引進與研發,於民國 85年 12月特購
置一套自動辨識照準全測儀(型號 TCA1800)於北迴新觀音隧道,
即台灣最長之鐵路隧道內進行測試,觀測並記錄變形量,配合內政
部營建署營建自動化專案計畫研發進行軟體程式之開發與研究,以
下針對三維變型光學量測技術所包含之設備儀器、功能及規格、測量
步驟、優缺點及效益評估進行介紹。
(一) 儀器設備
三維變形光學量測系統之儀器設備大致可分為儀器部分及其附
屬設備,分述如下(陳堯中等人,1995):
(1)三維變形量測儀器
三維變形量測儀器是ㄧ部高度精密的自動記錄儀器,具經緯儀,
可同時量測水平角、垂直角和斜距,該儀器系統又稱全測站與一般測
距經緯儀有些不同,含有內藏 IC卡記錄器,採同軸式光學系統,亦
即電子經緯儀與光波測距儀之發射,接地軸向均在同一望遠鏡上等
特性。
近年 Leica公司推出新一型全測站系統 TCA1800,內裝伺服馬
達及自動辨識照準目標系統,可自動搜尋對準反光覘標,不需人工
對點,若配合軟體控制,可進行自動化之監測。
(2) 岩釘、反光覘標
岩釘為長 25 至 60公分之鋼製桿,頂部螺牙供安裝反光覘標之
用,與一般收斂釘相同。反光覘標為鐵氟龍製品,有兩種形式ㄧ為反
光板,構造簡單,價格較低廉,可提供雙面照準用,反光有效距離
在 12 至 140米之間;另一為迷你型之三角稜鏡,精度高、價格高,
6
反光有效距離在 0.3 至 600米之間。
(二)功能及特色介紹
三維變形光學量測系統能精確的分析位移資料,並廣泛運用於
大地工程之變位量測,具下列功能及特色:
(1)測量作業期間,不需中斷前進之施工作業,對於施工作業之干
擾可降至最低程度。
(2)測量時間短,監測斷面之距離可縮短,可迅速測得隧道初期變
形量及掌握隧道三維空間應力重新分配過程。
(3)反光覘標不需借助任何電力或照明設備。
(4)讀數精度決定於測站及測點間之幾何形狀,反光覘標及儀器和
經度等,一般而言誤差在正負 0.7-1.5mm。
(5)取得量測點絕對位移量後,可換算兩點間的相對位移量進行傳
統監測數據之分析及安全管理作業。
(6)利用各點之三維絕對位移資料,可整理隧道斷面位移向量分佈
圖、影響線圖、沉陷趨勢圖、縱向位移發展圖等,除可了解隧道開
挖過程之力學行為外,亦可預測開挖面前方之弱帶。
(三)優缺點及效益評估
使用三維變形光學量測系統與一般傳統收斂之比較如表 2.1 所示,
另整理三維變形量測系統之優缺點如表 2.2 所示。除了初期儀器設備
之投資成本較高外,在人力時間、施工影響度、資料處理及資料完整
性等方面皆優於傳統收斂監測,特別是量測斷面越多,效益越高
(陳堯中等人,1998)。
7
2.3 隧道斷面收方之測量原理
測量之意義為測定地球表面上及其附近各點間之相關位置,故
測量之基本原理在於應用各種方法以求得「點」之關係位置,通常皆
由地面上已設立且經確定相關位置之點,此些點稱基點(base
station) 以測定出新點之位置,此等新點復可作為定出其他新點之
基點,如此不僅可求得欲測各點之相關位置,且可標示於圖上,由
圖上各點連成線面,並繪成所需之圖籍。以下將各種定出新點之方法
歸納為七種,分述如下(如圖 2.2 所示) (葉怡成,1991):
(a) 導線法
若A、B兩點為基點,求新點 C 之位置,可測量角 CAB 之角度
及量 AC 之距離,定出 C點,此法即為導線測量中所用之法。
(b) 偏角法
以 A、B兩點為基點,C 為新點,AC點間之距離無法量時,可
測角 CAB 之角度,量 BC距離亦可定出 C點之位置,但此法可能產
生 C 與 C’兩種結果,應參考實地情形,選擇適用之ㄧ種,此法因有
此顧慮,於測量上較少應用,僅見於細部測量及曲線測設之偏角法。
(c) 支距法
以 A、B兩點為基點,欲求新點 C 之位置,可由 C點做垂直於
AB線之直線 CD 並量其距離,稱為支距(Offset),再量 AD 或 BD
之距離,即可定出 C點之位置。此法常用於細部測量。
(d) 前方交會法
以 A、B兩點為基點,C 為新點,亦可測量角 CAB角 CBA兩角
度,而定得 C點之位置。倘 B點或 A點不能架設儀器,則可測量角
CAB、角ACB、角CBA 或角 BCA 等組角度,求得 C點位置。此法即
為三角測量中所使用之法。
8
(e) 後方交會法
以 A、B、D三點為基點,C 為新點,可測 α、β兩角。即可求得 C
點。此法應用於三角測量及平板儀測量之後方交會法。
(f) 距離交會法
以 A、B兩點為基點,C 為新點,欲求 C 與 A、B兩點於平面上之
相關位置,可測量 AC 與 BC兩段距離,求得 AC 與 BC 之交點,即
為 C點之位置。此法即為三邊測量中所用之法。
(g) 直線交會法
以 A、B、E、F四點為基點,欲求新點 C(即交點)之位置,可以
AE 及 BF線連結之,定出點之位置。此法常用於定樁測量及工程測量
之直線焦點測設。
測量之基本資料為水平距、垂直角、水平角、斜距及高程差,其原
理是量測基本資料,因時、因地使用不同之測量方法,以下章節僅對
就本研究使用之前方交會法、後方交會法及綜合前述測量原理之綜合
式後方交會法原理理論進行介紹。
2.3.1 前方交會法
經緯儀先後在A、B測站上照準P點測得 α,β角,(如圖 2.3 所
示),其交角 γ=180˚-(α+β)。惟一般規定 γ角不可小於 30˚,或
大於 120˚,故交會點P應與已知點作適當配合,交會點P之座標計
算法如下(管晏如,1990):
(一) 直接按三角形計算:
(1)AB邊、AP邊及 BP邊的方位角計算:
AB邊方位角ψAB:
9
Α Β
ΑΒ
Α Β
ΑΒ −=−=Α Βϕϕ cossinyyxx
φA B = tan-1 (2-1)
AP邊及 BP邊方位角ψAP、ψBP:
(2-2)
(2) 計算AB、AP、BP各邊的邊長:
(2-3)
(2-4)
(3) 計算測點 P 之座標:
(2-5)
(二) 角度法:
在已知點A、B 測站上,觀測得 α、β角,可按下列所推演的公式,
直接求得交會點P的座標,(如圖 2.3 所示)。由(2-5)知:
(2-6)
. (2-7)
AB
AB
yyxx
−−
)sin()sin(
sinsin αφβαβφ −
+Α Β+=Α Ρ+= Α ΒΑΑ ΡΑΡ xxx
)sin(/)cos(sincos βααφβφ +−Α Β+=Α Ρ+= Α ΒΑΑ ΡΑΡ yyx
+=
+=
αβα
ββα
sin)sin(
sin)sin(
ABBP
ABAP
Β Ρ+=+=+=+=
Β ΡΒΑ ΡΑΡ
Β ΡΒΑ ΡΑΡ
φφφφ
coscossinsin
yAPyyBPxAPxx
++=
=
βφφαφφ
180
-
ABBP
ABAP
10
(2-8)
(2-8)式代入(2-7)式得:
(2-9)
同理可得:
(2-10)
2.3.2 後方交會法
後方交會法又稱三點法,經緯儀整置在求點P,(如圖 2.4 所
示)。照準三已知點A、M、B觀測其間夾角 α、β,按幾何圖形推算
ω、ψ角及 γ角再由三已知點座標,按前方交會計算法計算所求點P
的座標值。但所求點 P 的觀測位置,不可與三已知點位於同一圓周上,
否則計算結果不準確,或不能解算(管晏如,1990)。
ω、ψ角的計算公式為:
(2-11)
αααφαφαφ sincossincoscossin)sin(Α Β
−−Α Β
−=−=− ΑΒΑΒΑ ΒΑ ΒΑ Β
yyxx
βααβ
βαβαα
βαβα
βααβ
cotcotcotcot)(
)(cotcot
1)(cotcot
cot
)()sin(
sinsin)()sin(
cossin
+++−=
−+
−−+
+=
−+
−−+
+=
ΒΑΑΒΡ
ΑΒΑΒΑ
ΑΒΑΒΑΡ
xxxxx
yyxxx
yyxxxx
βααβ
cotcotcotcot)(
+++−= ΒΑΑΒ
Ρyyxxy
ωφγβα
ωγβαφγβαφω
-=
Η∴Η=++−°
−++−°=∴°=++++
)(360)(360
360
設己知值:
11
(2-12)
(2-13)
求得 ω角後,則由(2-11)式可計算得ψ角。後方交會點 P 的
座標,可按(2-6)式及(2-7)式計算而得。
2.3.3綜合式後方交會法
根據許榮達(2004)之研究中指出,當後方交會法測站角度限
制介於 30°~120 時,容易產生誤差。為兼顧架設儀器站多種方法選
擇,發展「綜合式後方交會法」,當測站與稜鏡站皆為已知點時,於
後置處理虛擬另一位觀測點,距離設定為 0.1mm,將方向偏差量控
制在半徑 0.1mm 以內,若條件角度符合 30°~120°則使用後方交會法。
然後依其定出測站測量方法不同,其步驟分別敘述如下:
(1) 架設在隧道內任一點上:採用此方法測量儀器需經過特殊處
理,於儀器上有安裝稜鏡桿之孔位,以利觀測儀器之位置,其
方法為另外一台儀器架設在已知點,後視另一已知點稜鏡,觀
測收方斷面位置儀器上稜鏡之水平角、距離、高程差,計算平面
座標及高程。
(2) 架設在已知點:針對斷面收方位置進行放樣作業,有兩種狀
況:其一為按已知中心線里程座標資料,放樣到現場並觀測高
程差計算高程;其二為按現場需要定出觀測斷面位置,計算架
設儀器位置之平面座標與高程,此兩種狀況皆為事先將架設儀
HHK
HH
HHba
sincoscot
coscotsinsin
sincoscossinsin
)sin(sinsin
sinsin
sinsin
+=
−=
−=−Η==Κ
Κ==∴
ω
ωω
ωωω
ωωφ
ωφ
αβ
12
器位置點位定出,並求出高程資料。
(3)後方交會法又稱三點法:利用現場已知控制點,將儀器架設
在收方斷面不妨害通行之位置,觀測兩處已知點,計算儀器位
置平面座標與高程。
(4)綜合式後方交會法:作業同架設在已知點,進行後置處理,
一點為實測值,另一點為虛擬現場已知點距離設定為 0.1mm,
使誤差值控制在 0.1mm 以內。
2.4 Microsoft Visual Basic 視窗程式語言之原理與相關應用
視窗化動作亦可視為將程式以圖形使用者介面 (Graphics User
Interface,簡稱GUI)顯現,圖形使用者介面是一種以圖形化為基礎
的使用者介面,利用統一的圖形與操作方式,如可移動的視窗、選項
與滑鼠游標,作為使用者與作業系統之間的翻譯。視窗化動作最重要
的優勢在於讓不會使用命令行的使用者對作業系統進行指令輸入,
不僅可以調整對話框尺寸,還能改變樣式與尺寸。此外,設計得當的
圖形畫面得以幫助使用者快速了解與尋找功能,且透過統一的操作
方式,讓使用者在學習使用一次後,即可快速熟悉其他程式的操作。
Visual Basic 程式語言即是一個符合製作圖形使用者介面的編寫
軟體,以視覺化為主的基礎程式語言,由一開始的外觀介面設計、基
本物件建立、表單的配置到內部撰寫程式等。
在程式語言撰寫方面,Visual Basic繼承了 Basic 語法,國內目
前有許多學者,將視窗化程式所賦予的便利性應用於工程上,以下
以現行 Visual Basic 應用之近況做一回顧。
楊道昌與游保杉(2002)使用 Microsoft Visual Basic 6 程式語言
設計,為中文視窗介面設計與運算分析使用,供使用者更為便利之
13
操作,有益於未來擴充新增模組之功能。
楊森閔(2002)則在其研發之系統中,利用 Microsoft 所發行之
軟體程式 Visual Basic 為工具進行程式設計,並以 Access2000 進行資
料庫結合,以回歸分析模式作為主要程式架構進行視窗化分析。
陳聖彥(2004)以 Microsoft Visual Basic 6 程式語言編寫,以回
歸分析方式,並採用外顯式收斂圍束法之反算分析,結合前述兩種
方法,用於視窗化程式之開發。
王銘鋒(2005)採用外顯式收斂圍束法的反算分析模式,以
Microsoft Visual Basic 6 程式語言改寫視窗程式,並輔以模組化方式
連結各運算及繪圖等系統,撰寫隧道分析視窗軟體。
14
表 2.1 三維變形量測與傳統收歛量測之整理比較
(陳堯中等人,1991)
項目 三維量測 收斂量測
設備 光學測距經偉儀、反光稜鏡 反光板、
岩釘。
水準儀、收斂尺及岩釘。
車輛 視情況需要高空作業車之支援。 每次測量均需高空作業
車。
現場量測
1.初讀量測
須轉點至參考點,所需時間約 70分鐘。
沉陷點量測需選點 約 15分鐘。
2.後續斷面量
測
於可見光板之視界距離內,均可量
測,所需時間約 30 分鐘(以三個
斷面計) 。
每一個斷面量測需 30 分
鐘,三個則需 90 分鐘。
量測人員 1 至 2 人。 2 至 3 人。
資料判讀 現場測值全自動記錄經電腦軟體運
算至圖形顯示皆可自動化,可繪製
各測點之垂直沉陷、水平及軸向變
位等三度空間絕對位移收斂圖表等。
資料可較完整。
現場測值經人工紀錄及
鍵入電腦,可能產生人
為輸入錯誤。
註:1.表列作業時間不含相關作業之現場等待時間。
2.量側時間以通視距離 150 公尺為依據。
15
表 2.2 三維變形量測系統之優缺點整理(陳堯中等人,1991)
優點 缺點
安全性 可降低高空作業量測之危險性及
減少對施工之影響。
經濟性 1.所需測量人員少,即可進行測
量動作。
2.於監測區域內,可隨意架設儀
器即可測量,減少環境影響因素、
機動性強。
1.反光稜鏡和反光板因施工
過程易受損,更換費時。
2.國內隧道工程因通風較差,粉
塵及濕氣較重,常造成視界不良,
而需增加測站。
操作性 1.可得三維絕對位移之量測值,
並據以進行各項隧道力學行為之
分析和研判,非傳統收斂監測所
能比擬。
2.除隧道內之變形監測外,也可
應用於隧道洞口邊坡穩定之監測。
操作此系統須具測量及電腦應用
能力,經驗豐富之人員。
16
圖 2.1 Profiler 4000 設備(許榮達,2004)
17
圖 2.2 測量之原理: (a)導線法 (b)偏角法 (c)支距法 (d)前方交會法 (e)後方交會法 (f)距離交會法 (g)直線交會法
(葉怡成,1991)
18
B
P
αβ
γ
∮AP∮AB
∮AP
∮BP
(XP,YP)
(XA,YA)A (XB,YB)
圖 2.3 前方交會法圖形(管晏如,1990)
圖 2.4 後方交會法圖形(管晏如,1990)
19
第三章 隧道斷面收方技術與相關作業流程
3.1 前言
隧道內收方技術及方法必須因應當時工作階段而有所對策,收
方測量工作與一般外面測量環境差異性大。其時機必須選擇工作空檔,
在不妨害工進為原則及通視良好情況進行。進行收方工作時,其步驟
與操作愈臻熟練,可縮短量測時間與避免錯誤發生。
進行隧道斷面收方過程,因功能需求而有不同幾何線形、坡度及
設計斷面。此基本資料為建立隧道標準斷面之依據,作為設計與實際
收方斷面之比對,以了解實際開挖情況,是否有超挖或淨空斷面不
足現象,作為修挖之參考及計價之依據。
3.2 隧道斷面收方基本資料蒐集
3.2.1 隧道線形曲線資料
根據黃水木(1999)之著作中所描述,在不同功能之隧道線形
其曲線規定亦不同,將國內常使用之路線種類介紹如下:
(1) 緩和曲線
路線由直線進入圓弧曲線時,在圓弧曲線之前,另加一段曲線,
此加入之曲線其曲度為漸漸增加藉以緩和車輛之方向,則此加入之
曲線稱之為緩和曲線(Transition Curve),因緩和曲線係介於直線
與單曲線或兩單曲線之間,故又稱之為介曲線,其曲率半徑 ρ自無
限大而後漸漸減短,直線至與圓弧相接時,其 ρ值恰等於圓曲線 R
值,目前國內公路系統採用克羅梭曲線,鐵路系統採用三次拋物線。
(如圖 3.1 所示)
20
(2) 單曲線:
不同方向之直線間插入一曲線而連結之,俾利車輛於行駛中,
得以緩慢變換其方向,該曲線為切於兩直線之一圓弧,稱之為單曲
線。(如圖 3.2 所示)
3.2.2 隧道支撐型式
隧道施工方法採機械或開炸,階梯開挖區分為上半、下半及仰拱
三個階段,其步驟皆為開挖、出碴、支保組立、噴凝土(單層網或雙層
網),收方斷面區分為開挖完成面、單層網噴漿面或雙層網噴漿面、
襯砌前斷面。
3.2.3 隧道豎曲線資料
在路線上有兩種不同之縱坡度相連接時,兩縱坡線間必成一立
面角度,凡縱坡度之差數大於某一定值時,其間必須用一立面曲線
連絡之,以防坡度急驟變化,產生各種不良後果,此立面曲線即稱
之為豎曲線,(如圖 3.3 所示)。
3.3 隧道斷面量測方法
本研究係採許榮達(2004)所提出之量測方法,另在其研究中
指出隧道收方量測過程的不同處,在於定出隧道測站的位置,方法
簡單介紹如下:
(a) 架設在隧道內任一點上(Prism Method)(如圖 3.4 所示)。
(b) 架設在已知點(On Point Method)(如圖 3.5 所示)。
(c) 後方交會法(Resce Method),使用方法詳見第二章介紹。
21
(d) 綜合式的後方交會法,依其定出測站測量方法不同,其步驟
分別敘述如下:
(1) 架設在隧道內任一點上,採用此方法測量儀器需經過特殊
處理,於儀器上有安裝稜鏡桿之孔位,以利觀測儀器之位置
其方法為另外一台儀器架設在已知點,後視另一已知點稜鏡
觀測收方斷面位置儀器上稜鏡之水平角、距離、高程差,計算
平面座標及高程。
(2) 架設在已知點:針對斷面收方位置進行放樣作業,有兩種
狀況:其一為按已知中心線里程座標資料,放樣到現場並觀
測高程差計算高程;其二為按現場需要定出觀測斷面位置,
計算架設儀器位置之平面座標與高程,此兩種狀況皆為事先
將架設儀器位置點位定出,並求出高程資料。
(3) 後方交會法又稱三點法:利用現場已知控制點,將儀器架
設在收方斷面不妨害通行之位置,觀測兩處已知點,計算儀
器位置平面座標與高程。
(4) 綜合式後方交會法:作業同架設在已知點,在後置處理,
一點為實測值,另一點為虛擬現場已知點距離設定為
0.1mm,使誤差值控制在 ± 0.1mm 以內。
3.4 隧道斷面收方之時機
國內隧道斷面收方之時機,受限於人力與素質無法全面性收方,
僅針對舖設防水模或永久襯砌前,進行實際斷面與設計斷面收方比
對,檢視是否符合設計斷面之最小要求,作為計價之依據。本研究內
容隧道斷面收方為全性面,收方其時效性各異,依其經驗彙整出最
佳時機,以下分別敘述之:
(a) 開挖面收方:由於機具與人員等待開挖成果,建議採後方交
22
會法可於最短時間完成收方工作,另一重要因在支撐完成面下進
行開挖面收方,避免儀器與人員暴露於未支撐危險環境下作業。
(b) 上半噴凝土面:施工廠商為了解淨空及預估變形量數據,收
方時效無迫切性,選定開挖面施打岩栓、前進支撐、機械保養或停
工,建議採用架設在已知點。
(c) 下半噴凝土面:檢視下半噴凝土面有其必要性,依其從事隧
道工程經驗,由於隧道上、下斷面設計半徑不同,隧道測量對於
下半開挖大部分沿用上半開挖斷面向下延伸,容易產生下半支保
腳入侵,更需要進行收方工作。建議採用架設在已知點。
(d) 舖設防水膜或襯砌前:施工廠商於襯砌前必須進行完成面收
方檢送收方圖交業主檢核襯砌厚度是否符合最小厚度設計要求,
作為襯砌鋼模定位前之準備工作,業主、承攬廠商及協力廠商三
方面按規定每 10m整樁里程(視現場需要調整)必須進行斷面
收方圖檢核,由於針對特定斷面收方,此時已遠離開挖面仰拱亦
澆置完成,收方時機同上半噴凝土面收方,建議採用架設在已知
點,可量測相同斷面之資料,避免因架設測站位置不同而產生爭
議。
3.5 斷面收方作業流程與步驟之建立
介紹完定出測站位置的架設方法與應用時機後,接著敘述斷面
收方流程與步驟。本研究使用測量儀器廠牌型號 Leica TCR307(如圖
3.6 所示),雷射免稜鏡測距功能、免稜鏡測距精度 5mm ± 1mm、稜鏡
測距 3mm ± 1mm、測角精度 7秒,使用於收方量測精度已符合要求,
針對收方作業流程與步驟,分為三個部份敘述如下。
(1) 儀器站:架好儀器將氣泡居中,求心器對準地上已知點,儀
23
器內部儀器高及稜鏡高設定為零。
(2) 後視站:架設稜鏡於已知控制點
(3) 收方流程:
(a) 採用綜合式後方交會法,綜合架設已知點與後方交會法。
(b) 手簿記錄控制點編號、起訖點流水編號、日期、支保編號、完
成階段(例單層網、雙層網噴漿及防水膜或開挖面等)。
(c) 完成架設儀器定心定平及後視稜鏡動作,旋轉儀器將視準
軸位於法線上開始觀測斷面測點(如圖 3.7 所示)並記錄資
料於儀器記錄器內,視精度要求調整點距。
24
圖 3.1緩和曲線各部名稱(黃水木,1999)
圖 3.2 單曲線各部名稱(黃水木,1999)
25
圖 3.3豎曲線各部名稱(黃水木,1999)
圖 3.4架設在隧道內任一點上(黃水木,1999)
圖 3.5架設在已知點上(黃水木,1999)
26
圖 3.6 Leica TCR 307 收方儀器(許榮達,2004)
27
圖 3.7 隧道斷面收方圖
28
第四章 隧道斷面收方視窗程式之撰寫與設計
4.1 前言
現行隧道工程界應用之隧道斷面收方之後處理方式,係以計算
隧道設計斷面與實際斷面半徑差值比較法。傳統收方技術雖然可以達
到斷面收方之效果,但缺點在於無法自動繪製隧道斷面收方圖,僅
比對收方斷面點位之偏差量。
本章將針對自行研發之隧道斷面收方後置處理視窗軟體所使用
之方法進行說明,研發分析軟體方法包含軟體程式撰寫工具之
Microsoft Visual Basic 6.0 程式語言、用於資料儲存之 Access2000 資料
庫系統等,使隧道斷面收方軟體具自動繪製收方斷面圖形比對設計
斷面圖等功能。
4.2 Visual Basic 6.0 程式語言
BASIC 是屬於高階程式語言的一種,英文名稱的全名是
"Beginner's All-Purpose Symbolic Instruction Code",取其首字字母簡
稱 "BASIC",就名稱的含意來看,是「適用於初學者的多功能符號
指令碼」,是一種在計算機發展史上應用最為廣泛的程式語言。
BASIC 語言是由 Dartmouth 學院 John G. Kemeny 與 Thomas E.
Kurtz 兩位教授於 1960年代中期所創。由於立意甚佳,BASIC 語言簡
單、易學的基本特性,很快地就普遍流行起來,幾乎所有小型、微型
以家用電腦,甚至部分大型電腦,都有提供使用者以此種語言撰寫
程式。在微電腦方面,則因為 BASIC 語言可配合微電腦操作功能的
充分發揮,使得 BASIC 早已成為微電腦的主要語言之一。
一般人類自然語言有標準語言,也有方言,電腦語言亦是如此。
29
許多種電腦都有 BASIC 語言,但其語法、規則、功能並不盡然相同,
而同一種電腦所使用的 BASIC 語言也可能有不同版本或由不同的
軟體開發公司製作的不同品牌 BASIC 語言,只是大家一致地承繼
了 BASIC 創始者所設計的基本型態與精神,而分別賦予獨特的設
計手法與增添一些功能。
依照電腦語言的規定撰寫的程式,稱為原始程式(source
program),原始程式中的各個敘述必須逐一翻譯為機器語言,電腦
才能執行。這項翻譯工作有兩種類型的工具程式,一個稱為編譯程式
(compilers),另一個稱為直譯程式(interpreters)。所謂編譯程式,
事實上是一套程式,其作用是將原始程式的每一個敘述全部一次翻
譯為機器語言的指令,而產生一個目的程式(object program),所
謂目的程式,也是一套程式,是整個程式都是使用機器語言指令所
組成的程式,可以交由電腦執行的程式。所謂直譯程式,事實上也是
一套程式,其作用是將原始程式的每一個敘述逐一翻譯為機器語言
的指令,並立即執行,並不產生目的程式,但是每一個敘述在每次
執行之前都需透過這個翻譯的程序,不因前次已曾翻譯而省略。
BASIC 語言早期是以直譯程式的方式創始,也演化出許多不同
名稱的版本,如:BASICA, GW-BASIC, MBASIC, TBASIC, ...。
Visual 指的是開發圖形使用者介面的方法。您不需撰寫大量程式碼
來描述介面元件的外觀和配置,而只要把預先建立的物件添加到螢
幕上的某一點即可。
Visual Basic 以原來的 BASIC 語言為基礎,做了更進一步的發
展,至今包含了數百個陳述式、函數及關鍵字,其中有很多都和
Windows GUI 有直接關係。專業人員可以使用 Visual Basic 製作出任
何其它 Windows 程式語言所能做到的功能,而初學者則只要掌握幾
30
個基本要領,就可以建立實用的應用程式了。
Visual Basic 程式語言不僅只能用於 Visual Basic, 包含在
Microsoft Excel、 Microsoft Access 及許多其它的 Windows 應用程式
中的 Visual Basic Applications (VBA),也使用了與 Visual Basic 同
樣的語言。Visual Basic Scripting Edition (VBScript) 是一廣泛使用
的 scripting 語言,而它也是 Visual Basic 語言的子集合。
本研究在執行軟體時,是以建立專案方式編輯(如圖 4.1 所示),
ㄧ般程式撰寫選擇標準執行檔型式,即可於表單內編輯程式碼。如需
特殊表單形式亦可由 Visual Basic 6.0 內建之輔助精靈選擇所需求之
形式,Visual Basic 6.0有著相當多的功能可供程式設計者使用,開
啟 Visual Basic 6.0 後介面(如圖 4.2 所示),主要可分為五個部分,
分別為功能表、工具盒及視窗開發的主要控制視窗。包含:專案總管
視窗、屬性視窗及表單設計視窗,另外圖形化介面程式製作亦是以這
五個部份進行編寫。
在圖形介面化程式設計中,程式碼撰寫的工具為程式碼編輯視
窗(如圖 4.3 所示)。在此視窗內使用者可編寫物件類別、表單等程
式碼,其使用方式與多數文字編輯器相似。連續點擊物件表單即可在
物件裡面撰寫程式碼,且此視窗也提供許多支援程式開發的功能,
其中包含程式碼拖放編輯、色彩區別關鍵字、程式碼輔助查詢、程式碼
快速查詢及關鍵字自動完成等。
4.3 資料庫系統
資料庫在軟體研發中所佔的角色為提供資料進行放置,在回饋
分析中,計測資料藉由介面進行讀入後,需要藉由欄位加以儲存,
31
但因計測資料數量可能因現地所需而有相當多筆,因此若要有效針
對所儲存之資料進行管理,使用資料庫連結軟體則為較佳之方法。
本研究的資料儲存係以 Excel 之.csv檔型式,(如圖 4.4 所示)
及存取於 Access 2000 資料庫檔案內兩種方式,在此針對 Access
2000 資料庫內容進行介紹,Access 2000 資料庫軟體包含資料表、查
詢、表單、報表、巨集及模組等。資料表是Access 2000 資料庫中實際進
行使用者資料儲存的地方,也是資料庫其他延伸物件的資料來源基
礎,而在使用上資料表的建立除了利用資料表精靈外,使用者也可
以在軟體所提供之設計檢視工具中個別輸入資料,(如圖 4.5 所示)。
資料庫在軟體研發中所佔的角色為提供資料進行放置,(如圖
4.6 所示),在隧道斷面收方過程中,由收方所獲得原始資料計可藉
由介面進行匯入後,經視窗程式運算儲存收方之成果資料。
4.4 隧道斷面收方處理程序與視窗程式設計
4.4.1 主要繪圖之視窗介面設計
在此部份中,主要針對使用者輸入介面進行分析與設計,以及
如何提供使用者簡易且快速的資料輸入環境。簡單地說,此部份即是
由繪圖視窗表單連結其他表單的方式進行撰寫,在隧道設計斷面形
式包含有隧道斷面的混凝土面、完成面、避車(左)完成面、避車(右)
完成面、避車(左)噴凝土面、避車(右)噴凝土面,使用者可選擇
1 至 6種的隧道斷面形式與所獲得之收方資料進行繪圖比對,(如圖
4.7 所示),詳細程式編輯方法附於文後之程式碼附錄中,附錄中程
式碼部分亦加註處理動作之標示,提供後續研究學習及便於除錯與
新增動作。
32
4.4.2 工程資訊系統之視窗設計
在輸入區中,將隧道工程相關之資訊資料鍵入輸入區中,包含
工程名稱、監造單位、施工單位、施工日期、隧道斷面設計高等資料,
(如圖 4.8 所示)。
4.4.3 資料處理系統之視窗設計
在隧道原始收方資料處理區中,為方便使用者輸入資料,資料
處理部份採匯入檔案方式,經匯入 Excel 程式之.crv檔後進行資料處
理,或可由視窗程式內之手動輸入區中自行鍵入數值。
匯入隧道斷面收方資料後,程式內部即進行下列運算,例如角
度、勁度轉換,再以後方交會法等測量原理進行座標轉換等動作,各
運算動作的撰寫及設計,(如圖 4.9 所示)。
4.4.4 成果顯示系統之視窗設計
軟體研發之目標為提供使用者快速取得所需之分析參數與分
析結果,因此在內部程式建立過程中,需具備程式最佳化、簡單化等
要素。其目的除使程式的快速無誤執行外,也方便日後程式的修改與
功能添增。
當使用者匯入隧道斷面收方資料時,經相對計算後顯示在成果
顯示區域,此區乃顯示相關計算數據,此部分可以視為一般軟體運
算之中間運算部分,(如圖 4.10 所示)。經由運算後,資料確定無
誤後,斷面收方結果即傳至主要的繪圖區域,完成斷面收方的程序。
4.4.5 技術支援系統之視窗設計
此部份乃是針對本研究相關視窗程式的操作內容進行教學,在
本視窗程式中(如圖 4.11 所示),點擊視窗系統名稱後,表單上列
的顯示區即以圖片播放方式進行視窗程式使用教學。
33
圖 4.1 專案建立選擇圖示
34
圖 4.2 Visual Basic 視窗設計介面
圖 4.3 視窗程式設計
35
圖 4.4 Excel 之 csv檔案形式
圖 4.5 Asscess 2000 資料庫介面
36
圖 4.6 隧道斷面收方資料匯入Asscess 2000 資料庫
37
圖 4.7 主要繪圖視窗介面設計
38
圖 4.8 工程資訊系統視窗設計
39
圖 4.9 資料處理系統之視窗設計
40
圖 4.10 成果顯示系統之視窗設計
41
圖 4.11 技術支援系統之視窗設計
42
第五章 隧道斷面收方視窗程式實測
5.1 前言
在此章節中以南港專案汐止山岳隧道及玉長公路工程之案例,
代入本研究的隧道收方視窗程式進行實際地測試。
5.2 玉長公路隧道
5.2.1 工程概述
玉長公路西起台九線玉里鎮安通橋附近,東迄台東縣長濱鄉白
桑安,全長約十六公里,總經費計新台幣二十七億七千餘萬元,開
工的新建隧道工程,全長 2660公尺,設計為單孔雙車道,淨寬 10
公尺、高 4.6公尺,隧道內左右兩側各設置二處避車道(如圖 5.1 所
示)。
玉長公路角色功能有如台灣西部的東西向快速道路,完工通車
後將只有目前繞道距離的四分之一,可大幅縮短花東縱谷與東海岸
之間往返距離。
5.2.2 隧道斷面收方基本資料
隧道斷面收方圖的建立,首先需包含:測量的控制樁、隧道的中
線資料及隧道設計時的標準設計斷面,接著將測量後所獲得的數據
資料,匯入本研究的視窗化隧道斷面程式以進行比對,隧道斷面收
方所需之資料如下:
43
(1)建立工區已知控制點座標及高程資料(如表 5.1 所示)。
(2)中線資料(如表 5.2 所示)。
(3)支撐型式分類建立標準斷面(如表 5.3 所示)。
5.2.3 收方步驟
本研究乃以玉長公路隧道工程,使用綜合式後方交會法,係綜
合量測方法之儀器架設在已知點及後方交會法,克服狹窄空間之限
制、提高收方量測之精度,以下分別敘述工地作業過程之步驟:
(1)在收方里程附近之已知點架設儀器及稜鏡,計算收方斷面中線
里程之夾角與距離,放樣定出現場之點位並求出高程,作為斷面
收方架設儀器之位置。
(2)儀器架設於事先已定點之收方斷面位置,量測儀器高度單位至
公釐,儀器內部儀器高及稜鏡高皆設定為零,後視稜鏡為圓形稜
鏡。
(3)架設稜鏡在已知點,量稜鏡高度單位至公釐。
(4)儀器基本設定完成後,後視稜鏡並紀錄,儀器旋轉 90度將視
準軸對準法線方向,手簿記錄儀器高及稜鏡高、測站及稜鏡站編
號、斷面起訖點流水編號、日期、支保編號、完成階段(例如單層網、
雙層網噴漿面、防水膜或開挖面等),作為後置之資料處理,逐
一測量斷面點位,每一斷面點位設定 50點以內(視現場需要調
整程式之限定點數)。
(5)若設站量測多斷面時,儀器視準軸則必須照準收方斷面,沿著
法線方向量測。
44
5.2.4 隧道斷面收方視窗程式之應用與成果顯示
應用隧道斷面收方程式進行後置收方繪圖後置程序,以下分別
敘述隧道斷面收方程式使用過程之步驟:
(1) 視窗程式執行後,出現執行後之主畫面,(如圖 5.2 所示)。
其中主畫面中包含,在畫面上方的檔案選項、隧道斷面收方資料
處理選項、說明選項、右上方的工程資訊資料部分及右下方的繪圖
區。另外主程式畫面亦是收方繪圖的主畫面,首先可選擇上方目錄中
的檔案,以新建檔案方式開啟新檔,或點選隧道收方資料處理選項
直接進行後置收方作業處理。以玉長公路隧道為例,選擇上方目錄中
的檔案開啟新檔,(如圖 5.3 所示)。輸入完基本資料後按下一步繼
續。
(2) 工程基本資料輸入完成後,下一步動作即是處理現場收方之
測量數據,將現場測量儀器所測量之數據資料,連接至個人電腦匯
出,經整理後製成 Excel檔案(如圖 5.4 所示),於工程資訊系統鍵
入資料後,下ㄧ步的動作則為資料處理視窗操作(如圖 5.5 所示) 。
資料處理視窗係進行隧道斷面收方的原始資料匯入,資料匯入
鈕位畫面右下方處,亦可在此視窗的下方部份手動ㄧ筆ㄧ筆鍵入資
料。另外依測量的後方交會法理論,需兩個已知的控制樁點資料,在
此視窗輸入兩個已知的控制樁點資料,確定輸入資料無誤後則按下
一步進行內部計算,經上述動作以後,匯入完成及運算完畢後之畫
面(如圖 5.6 所示)。
(3) 接著可看到經視窗程式運算後之成果(如圖 5.7 所示),在圖
中的正中央為已知的中線資料,圖右側為運算後之成果資料,如確
認無誤後可按確定鈕進行收方繪圖。
45
(4)資料傳回主畫面後,即可進行隧道斷面收方繪圖動作,(如圖
5.8 所示),畫面中的設計斷面形式可鍵入斷面形式的編號,或按上
下鈕擇想要進行比對的隧道斷面設計形式。
最後以圖示方式與許榮達(2004)所提出之收方方式(如圖 5.9
所示),並進行收方數值及收方圖對照,經對照後接近實際用於現
地收方情形。
5.3汐止山岳鐵路隧道
5.3.1 工程概述
汐止段山岳鐵路隧道及引道工程為台北市區鐵路地下化東延南
港工程簡稱「南港專案」中之工程分標,本工程係為配合南港車站地
下化,路線需穿越大坑溪后爬昇至地面,由於路線行經山區,故以
山岳隧道方式施工。
工程範圍東起自台北縣汐止市新台五線處(里程
UK16+160),西至台北市大坑溪東側(工程里程 UK17 +800),全
長 1.64公里(如圖 5.10 所示),主隧道係採新奧工法施工,鑽掘隧
道:UK16+350 起至 UK17+776,約 1426公尺。
5.3.2 隧道收方基本資料
隧道斷面收方所需之資料如下:
(1)建立工區已知控制點座標及高程資料如(如表 5.4 所示)。
(2)中線資料(如表 5.5 所示)。
(3)支撐型式分門別類建立標準斷面(如表 5.6 所示)。
46
5.3.3 應用隧道斷面收方程式之結果
應用隧道斷面收方程式進行後置收方繪圖後置動作,以下分別
敘述隧道斷面收方程式使用過程之步驟:
(1) 視窗程式執行後,出現執行後之主畫面,(如圖 5.11 所示),
主畫面中包含,在畫面上方的檔案選項選擇上方目錄中的檔案,以
新建檔案方式開啟新檔,或點選隧道收方資料處理選項直接進行後
置收方作業處理,輸入完基本資料後按下一步繼續。
(2) 工程基本資料輸入完成後,下一步動作即是處理現場收方之
測量數據,將現場測量儀器所測量之數據資料,連接至個人電腦匯
出後將原始收方的資料匯入,確定兩個已知的控制樁點資料,確定
輸入資料無誤後則按下一步進行內部計算,經上述動作以後,資料
匯入完成及運算完畢後之畫面(如圖 5.12 所示)。
(3)資料傳回主畫面後,即可進行隧道斷面收方繪圖動作,(如圖
5.13 所示),畫面中的設計斷面形式可鍵入斷面形式的編號,或按
上下鈕選擇想要進行比對的隧道斷面設計形式。
最後與許榮達(2004)所提出之收方方式(如圖 5.14 所示),
進行收方數值比對,經比對後接近實際用於現地收方情形,證明視
窗程式可用於實際隧道收方上。
47
表 5.1 玉長公路隧道工程控制樁資料
A 2573799.9610 288663.0170 367.7250
2 2573665.8300 288701.1220 383.6870
A-1 2573842.0484 288520.4215 372.4230
A-2 2573903.4244 288382.4120 375.3350
KS12 2573788.6890 288696.8940 372.8250
KS14 2573686.0910 288768.2080 370.6610
KS15 2573621.4410 288774.3580 371.1640
Q1 2573942.1618 288227.8483 379.7830
BM1 382.7780
940528 2573983.4138 288070.0928 382.9030
LC9190 2573949.1936 288214.3106 380.0000
LC9200 2573946.7335 288224.0147 379.8860
LC9210 2573944.1889 288233.6739 379.5700
LC9220 2573941.6077 288243.3010 379.2810
LC9230 2573938.9570 288252.9779 378.9790
LC9240 2573936.2425 288262.6021 378.3760
LC9250 2573933.4329 288272.1839 377.9120
LC9260 2573930.5875 288281.7893 377.3780
LC9270 2573927.6710 288291.3681 377.2120
LC9280 2573924.6766 288300.8996 377.1630
LC9290 2573921.6226 288310.4258 376.9630
LC9300 2573918.5176 288319.9221 376.6680
LC9310 2573915.3944 288329.4202 376.3470
LC9320 2573912.2030 288338.8975 376.1040
LC9330 2573908.9870 288348.3561 375.8500
LC9340 2573905.7353 288357.8308 375.8470
LC9350 2573902.4799 288367.2770 375.8160
LC9360 2573899.1725 288376.7139 375.4640
LC9370 2573895.8674 288386.1477 375.2880
LC9380 2573892.5511 288395.5934 375.0160
LC9390 2573889.2378 288405.0325 374.9340
LC9400 2573885.9614 288414.4650 374.5380
48
表 5.2 玉長公路隧道工程中線資料
里程 中心N 中心 E 高程 法線 N 法線 E9190 2573949.194 288214.304 378.3201 2573968.593 288219.1739
9190 2573949.1930 288214.3100 378.3200 2573968.5910 288219.1800
9185 2573950.4020 288209.4590 378.4200 2573969.8170 288214.2630
8200 2574096.4030 287235.5750 398.1200 2574116.2060 287238.3780
8205 2574095.7020 287240.5260 398.0200 2574115.5050 287243.3290
8210 2574095.0020 287245.4770 397.9200 2574114.8040 287248.2800
8215 2574094.3010 287250.4270 397.8200 2574114.1040 287253.2300
8220 2574093.6000 287255.3780 397.7200 2574113.4030 287258.1810
8225 2574092.9000 287260.3290 397.6200 2574112.7020 287263.1320
8230 2574092.1990 287265.2790 397.5200 2574112.0010 287268.0820
8235 2574091.4980 287270.2300 397.4200 2574111.3010 287273.0330
8240 2574090.7970 287275.1810 397.3200 2574110.6000 287277.9840
8245 2574090.0970 287280.1310 397.2200 2574109.8990 287282.9340
8250 2574089.3960 287285.0820 397.1200 2574109.1990 287287.8850
8255 2574088.6950 287290.0330 397.0200 2574108.4980 287292.8360
8260 2574087.9950 287294.9830 396.9200 2574107.7970 287297.7860
8265 2574087.2940 287299.9340 396.8200 2574107.0960 287302.7370
8270 2574086.5930 287304.8850 396.7200 2574106.3960 287307.6880
8275 2574085.8920 287309.8350 396.6200 2574105.6950 287312.6380
8280 2574085.1920 287314.7860 396.5200 2574104.9940 287317.5890
8285 2574084.4910 287319.7370 396.4200 2574104.2930 287322.5400
8290 2574083.7900 287324.6870 396.3200 2574103.5930 287327.4900
8295 2574083.0890 287329.6380 396.2200 2574102.8920 287332.4410
8300 2574082.3890 287334.5890 396.1200 2574102.1910 287337.3910
8305 2574081.6880 287339.5390 396.0200 2574101.4910 287342.3420
8310 2574080.9870 287344.4900 395.9200 2574100.7900 287347.2930
8315 2574080.2870 287349.4410 395.8200 2574100.0890 287352.2430
8320 2574079.5860 287354.3910 395.7200 2574099.3880 287357.1940
8325 2574078.8850 287359.3420 395.6200 2574098.6880 287362.1450
8330 2574078.1840 287364.2930 395.5200 2574097.9870 287367.0950
8335 2574077.4840 287369.2430 395.4200 2574097.2860 287372.0460
8340 2574076.7830 287374.1940 395.3200 2574096.5850 287376.9970
8345 2574076.0820 287379.1440 395.2200 2574095.8850 287381.9470
8350 2574075.3810 287384.0950 395.1200 2574095.1840 287386.8980
8355 2574074.6810 287389.0460 395.0200 2574094.4830 287391.8490
49
表 5.3 玉長公路隧道工程標準斷面資料
噴凝土
面
完成面 避車
(左)
噴凝土
面
避車
(左)
完成面
0.0000 7.2000 0.0000 6.8000 0.0000 7.4542 0.0000 6.8000
-0.8854 7.1453 -0.8362 6.7484 -0.2833 7.4504 -0.2833 6.8000
-1.7574 6.9822 -1.6598 6.5943 -0.7944 7.4239 -0.7944 6.8000
-2.6028 6.7131 -2.4582 6.3401 -1.3102 7.3714 -1.3055 6.7998
-3.4086 6.3421 -3.2192 5.9897 -1.8586 7.2868 -1.8160 6.7764
-4.1626 5.8747 -3.9314 5.5484 -2.3967 7.1743 -2.3232 6.7148
-4.8535 5.3182 -4.5839 5.0228 -2.9242 7.0347 -2.8244 6.6152
-5.2987 4.8748 -5.0043 4.6040 -3.4412 6.8684 -3.3167 6.4783
-5.4727 4.6777 -5.1659 4.4202 -3.9473 6.6760 -3.7973 6.3048
-5.7514 4.3238 -5.4226 4.0889 -4.4409 6.4543 -4.2636 6.0958
-6.0046 3.9508 -5.6527 3.7387 -4.9165 6.1965 -4.7128 5.8523
-6.2311 3.5601 -5.8549 3.3716 -5.3715 5.9037 -5.1425 5.5757
-6.4298 3.1535 -6.0279 2.9899 -5.8031 5.5775 -5.5502 5.2677
-6.5996 2.7327 -6.1707 2.5959 -6.2091 5.2199 -5.9336 4.9299
-6.7393 2.2993 -6.2824 2.1920 -6.5487 4.8748 -6.2905 4.5642
-6.8481 1.8554 -6.3623 1.7806 -6.9378 4.4092 -6.6143 4.1690
-6.9251 1.4029 -6.4099 1.3642 -7.2505 3.9573 -6.8991 3.7448
-6.9694 0.9438 -6.4250 0.9454 -7.5236 3.4791 -7.1423 3.2955
-6.9803 0.4803 -6.4074 0.5267 -7.7550 2.9777 -7.3419 2.8252
-6.9573 0.0146 -6.3573 0.1106 -7.9426 2.4563 -7.4959 2.3381
-6.8998 -0.4510 -6.2750 -0.3003 -8.0848 1.9181 -7.6030 1.8385
-6.7614 -0.9574 -6.1552 -0.7015 -8.1798 1.3667 -7.6623 1.3310
-6.4022 -1.4721 -5.9324 -1.0544 -8.2262 0.8057 -7.6732 0.8202
-5.8887 -1.8113 -5.6080 -1.3169 -8.2226 0.2392 -7.6355 0.3107
-5.3104 -1.9527 -5.2164 -1.4610 -8.1682 -0.3288 -7.5497 -0.1929
-4.8775 -2.0214 -4.8024 -1.5271 -8.0273 -0.9239 -7.4130 -0.6850
-4.4561 -2.0826 -4.3876 -1.5873 -7.6265 -1.5310 -7.1510 -1.1209
-4.0341 -2.1382 -3.9720 -1.6420 -7.0337 -1.9270 -6.7583 -1.4442
-3.6113 -2.1883 -3.5557 -1.6913 -6.4171 -2.1062 -6.2819 -1.6248
-3.1879 -2.2328 -3.1388 -1.7352 -5.9129 -2.2418 -5.7884 -1.7576
-2.7639 -2.2718 -2.7214 -1.7736 -5.4058 -2.3663 -5.2920 -1.8794
-2.3395 -2.3052 -2.3035 -1.8065 -4.8962 -2.4795 -4.7931 -1.9903
-1.9147 -2.3331 -1.8852 -1.8339 -4.3842 -2.5816 -4.2918 -2.0902
-1.4896 -2.3554 -1.4666 -1.8559 -3.8700 -2.6723 -3.7885 -2.1790
50
-1.0642 -2.3721 -1.0478 -1.8724 -3.3540 -2.7518 -3.2834 -2.2568
-0.6386 -2.3833 -0.6287 -1.8834 -2.8364 -2.8198 -2.7767 -2.3234
-0.2129 -2.3888 -0.2096 -1.8888 -2.3174 -2.8765 -2.2686 -2.3789
0.2129 -2.3888 0.2096 -1.8888 -1.7973 -2.9218 -1.7594 -2.4232
0.6386 -2.3833 0.6287 -1.8834 -1.2763 -2.9556 -1.2494 -2.4563
1.0642 -2.3721 1.0478 -1.8724 -0.7547 -2.9779 -0.7388 -2.4781
1.4896 -2.3554 1.4666 -1.8559 0.0000 -2.9899 -0.2278 -2.4888
1.9147 -2.3331 1.8852 -1.8339 0.2894 -2.9881 0.2833 -2.4882
2.3395 -2.3052 2.3035 -1.8065 0.8113 -2.9760 0.7943 -2.4763
2.7639 -2.2718 2.7214 -1.7736 1.3329 -2.9524 1.3048 -2.4532
3.1879 -2.2328 3.1388 -1.7352 1.8538 -2.9174 1.8148 -2.4189
3.6113 -2.1883 3.5557 -1.6913 2.3738 -2.8709 2.3238 -2.3734
4.0341 -2.1382 3.9720 -1.6420 2.8927 -2.8130 2.8318 -2.3167
4.4561 -2.0826 4.3876 -1.5873 3.4102 -2.7437 3.3383 -2.2489
4.8775 -2.0214 4.8024 -1.5271 3.9260 -2.6630 3.8433 -2.1699
5.3104 -1.9527 5.2164 -1.4610 4.4399 -2.5710 4.3464 -2.0799
5.8887 -1.8113 5.6080 -1.3169 4.9517 -2.4678 4.8474 -1.9788
6.4022 -1.4721 5.9324 -1.0544 5.4610 -2.3533 5.3460 -1.8667
6.7614 -0.9574 6.1552 -0.7015 5.9678 -2.2276 5.8421 -1.7437
6.8998 -0.4510 6.2750 -0.3003 6.4716 -2.0908 6.3353 -1.6098
6.9573 0.0146 6.3573 0.1106 7.1041 -1.8961 6.8060 -1.4158
6.9803 0.4803 6.4074 0.5267 7.6811 -1.4739 7.1864 -1.0782
6.9694 0.9438 6.4250 0.9454 8.0555 -0.8491 7.4322 -0.6329
6.9251 1.4029 6.4099 1.3642 8.1766 -0.2672 7.5614 -0.1386
6.8481 1.8554 6.3623 1.7806 8.2255 0.3009 7.6420 0.3659
6.7393 2.2993 6.2824 2.1920 8.2235 0.8670 7.6743 0.8757
6.5996 2.7327 6.1707 2.5959 8.1718 1.4271 7.6582 1.3864
6.4298 3.1535 6.0279 2.9899 8.0716 1.9773 7.5937 1.8932
6.2311 3.5601 5.8549 3.3716 7.9244 2.5138 7.4814 2.3916
6.0046 3.9508 5.6527 3.7387 7.7319 3.0332 7.3224 2.8772
5.7514 4.3238 5.4226 4.0889 7.4959 3.5322 7.1180 3.3454
5.4727 4.6777 5.1659 4.4202 7.2184 4.0077 6.8701 3.7922
5.2987 4.8748 5.0043 4.6040 6.9015 4.4566 6.5809 4.2134
4.8535 5.3182 4.5839 5.0228 6.5487 4.8748 6.2532 4.6053
4.1626 5.8747 3.9314 5.5484 6.1663 5.2602 5.8932 4.9680
3.4086 6.3421 3.2192 5.9897 5.7575 5.6145 5.5070 5.3026
2.6028 6.7131 2.4582 6.3401 5.3231 5.9371 5.0968 5.6073
1.7574 6.9822 1.6598 6.5943 4.8658 6.2262 4.6649 5.8803
0.8854 7.1453 0.8362 6.7484 4.3881 6.4802 4.2137 6.1202
0.0000 7.2000 0.0000 6.8000 3.8929 6.6982 3.7458 6.3254
3.3855 6.8878 3.2638 6.4950
51
2.8674 7.0511 2.7703 6.6279
表 5.4 汐止山岳鐵路隧道控制樁資料
點號 縱座標N 橫座標 E 高程 Z
AL01 2772015.5962 312784.5089 2.7725
AR01 2772021.8542 312785.6959 2.8804
BR01 2772004.6254 312660.8776 1.4646
TPS1 2772095.0045 312718.1885 -
TPS2 2772003.8868 312719.8460 0.0444
BM1 - - 0.0141
BL02 2771995.8356 312545.2996 0.7420
BR02 2772001.5586 312544.5945 0.7779
AR02 2772037.3812 312854.7120 3.6106
BL02-1 2772000.9465 312521.4961 2.3534
AR02-1 2772055.5887 312914.9306 5.4367
BL02A 2771998.5174 312470.0264 1.4819
BL02B 2772004.7210 312449.0941 1.4698
AR03 2772067.3525 312960.7819 4.8561
AL03 2772065.0329 312964.8282 4.9386
AR03A 2772047.0979 312915.5739 5.4708
TPS3A 2772199.2981 313225.6928 8.7698
TPS3 2772213.3100 313261.7800 14.0720
52
表 5.5汐止山岳鐵路隧道中線資料
里程 中心N 中心 E 高程 法線 N 法線 E16845 2772014.655 312773.9914 1.434728 2771999.879 312776.5709
16845 2772014.6647 312774.0464 1.4353 2771999.8882 312776.6266
16850 2772013.8147 312769.1192 1.3885 2771999.0279 312771.6392
16365 2772191.3322 313216.6826 6.3655 2772178.4353 313224.3422
16370 2772188.7821 313212.3818 6.3110 2772175.8753 313220.0248
16375 2772186.2369 313208.0781 6.2565 2772173.3229 313215.7089
16380 2772183.6949 313203.7725 6.2020 2772170.7762 313211.3954
16385 2772181.1550 313199.4657 6.1475 2772168.2340 313207.0846
16390 2772178.6156 313195.1585 6.0930 2772165.6942 313202.7767
16395 2772176.0762 313190.8514 6.0385 2772163.1547 313198.4695
16400 2772173.5369 313186.5442 5.9840 2772160.6154 313194.1622
16405 2772170.9975 313182.2370 5.9295 2772158.0760 313189.8550
16410 2772168.4582 313177.9299 5.8750 2772155.5365 313185.5477
16415 2772165.9190 313173.6226 5.8205 2772152.9961 313181.2383
16420 2772163.3810 313169.3146 5.7660 2772150.4551 313176.9251
16425 2772160.8453 313165.0053 5.7115 2772147.9143 313172.6071
16430 2772158.3131 313160.6939 5.6570 2772145.3750 313168.2837
16435 2772155.7854 313156.3799 5.6025 2772142.8383 313163.9543
16440 2772153.2635 313152.0625 5.5480 2772140.3052 313159.6179
16445 2772150.7485 313147.7411 5.4935 2772137.7773 313155.2742
16450 2772148.2414 313143.4150 5.4390 2772135.2553 313150.9224
16455 2772145.7436 313139.0837 5.3845 2772132.7406 313146.5617
16460 2772143.2561 313134.7464 5.3300 2772130.2343 313142.1918
16465 2772140.7800 313130.4025 5.2755 2772127.7375 313137.8116
16470 2772138.3167 313126.0514 5.2210 2772125.2518 313133.4208
16475 2772135.8671 313121.6926 5.1665 2772122.7779 313129.0188
16480 2772133.4326 313117.3253 5.1120 2772120.3173 313124.6047
16485 2772131.0142 313112.9491 5.0575 2772117.8711 313120.1782
16490 2772128.6132 313108.5633 5.0030 2772115.4406 313115.7386
16495 2772126.2307 313104.1674 4.9485 2772113.0270 313111.2852
16500 2772123.8680 313099.7609 4.8940 2772110.6316 313106.8177
16505 2772121.5262 313095.3432 4.8395 2772108.2557 313102.3356
16510 2772119.2064 313090.9139 4.7850 2772105.9012 313097.8402
16515 2772116.9087 313086.4731 4.7305 2772103.5691 313093.3328
16520 2772114.6333 313082.0209 4.6760 2772101.2595 313088.8137
16525 2772112.3802 313077.5573 4.6215 2772098.9726 313084.2832
53
16530 2772110.1494 313073.0826 4.5670 2772096.7084 313079.7415
16535 2772107.9410 313068.5967 4.5125 2772094.4669 313075.1883
16540 2772105.7550 313064.0999 4.4580 2772092.2481 313070.6240
16545 2772103.5916 313059.5921 4.4038 2772090.0522 313066.0485
16550 2772101.4508 313055.0737 4.3495 2772087.8793 313061.4624
16555 2772099.3325 313050.5445 4.2953 2772085.7292 313056.8652
16560 2772097.2370 313046.0049 4.2410 2772083.6023 313052.2576
表 5.6汐止山岳鐵路隧道標準斷面資料
開挖面 鋼支保
面
雙層網 完成面
0.0000 6.0300 0.0000 5.8300 0.0000 5.7800 0.0000 5.3800
-0.5255 6.0071 -0.5081 5.8078 -0.5038 5.7580 -0.4689 5.3595
-1.0471 5.9384 -1.0124 5.7414 -1.0037 5.6922 -0.9342 5.2983
-1.5607 5.8245 -1.5089 5.6313 -1.4960 5.5831 -1.3924 5.1967
-2.0624 5.6663 -1.9940 5.4784 -1.9769 5.4314 -1.8401 5.0555
-2.5484 5.4650 -2.4639 5.2838 -2.4427 5.2385 -2.2737 4.8759
-3.0150 5.2221 -2.9150 5.0489 -2.8900 5.0056 -2.6900 4.6592
-3.4587 4.9395 -3.3440 4.7757 -3.3153 4.7347 -3.0858 4.4070
-3.8760 4.6192 -3.7475 4.4660 -3.7153 4.4277 -3.4582 4.1213
-4.2639 4.2639 -4.1224 4.1224 -4.0871 4.0871 -3.8042 3.8042
-4.6192 3.8760 -4.4660 3.7475 -4.4277 3.7153 -4.1213 3.4582
-4.9395 3.4587 -4.7757 3.3440 -4.7347 3.3153 -4.4070 3.0858
-5.2221 3.0150 -5.0489 2.9150 -5.0056 2.8900 -4.6592 2.6900
-5.4650 2.5484 -5.2838 2.4639 -5.2385 2.4427 -4.8759 2.2737
-5.6663 2.0624 -5.4784 1.9940 -5.4314 1.9769 -5.0555 1.8401
-5.8245 1.5607 -5.6313 1.5089 -5.5831 1.4960 -5.1967 1.3924
-5.9384 1.0471 -5.7414 1.0124 -5.6922 1.0037 -5.2983 0.9342
-6.0154 0.5263 -5.8161 0.5088 -5.7662 0.5045 -5.3633 0.4692
-6.0635 0.0000 -5.8631 0.0000 -5.8130 0.0000 -5.3950 0.0000
-6.0823 -0.5321 -5.8821 -0.5146 -5.8321 -0.5102 -5.3930 -0.4718
-6.0709 -1.0705 -5.8723 -1.0355 -5.8227 -1.0267 -5.3570 -0.9446
-6.0281 -1.6152 -5.8325 -1.5628 -5.7836 -1.5497 -5.2865 -1.4165
-5.9524 -2.1665 -5.7612 -2.0969 -5.7727 -1.6497 -5.1389 -2.0385
-5.9201 -2.3484 -5.7306 -2.2733 -5.7612 -2.0969 -5.0920 -2.1932
-5.7551 -2.6836 -5.5728 -2.5986 -5.7317 -2.2670 -4.1100 -3.1389
-5.4144 -3.1260 -5.2350 -3.0224 -5.5728 -2.5986 -3.8165 -3.2024
-4.9706 -3.4805 -4.7907 -3.3545 -5.2350 -3.0224 -3.6480 -3.2367
-4.4375 -3.7235 -4.2519 -3.5678 -4.7907 -3.3545 -3.3020 -3.3020
-4.2525 -3.7731 -4.0677 -3.6091 -4.2519 -3.5678 -2.8356 -3.3794
54
-3.8576 -3.8576 -3.6875 -3.6875 -4.0677 -3.6091 -2.4085 -3.4397
-3.3216 -3.9585 -3.1727 -3.7811 -3.6875 -3.6875 -2.0131 -3.4867
-2.8274 -4.0379 -2.6989 -3.8544 -3.1727 -3.7811 -1.6428 -3.5230
-2.3672 -4.1001 -2.2585 -3.9118 -2.6989 -3.8544 -1.2923 -3.5505
-1.9344 -4.1484 -1.8448 -3.9563 -2.2585 -3.9118 -0.9568 -3.5707
-1.5233 -4.1852 -1.4523 -3.9901 -1.8448 -3.9563 -0.6320 -3.5845
-1.1287 -4.2123 -1.0758 -4.0150 -1.4523 -3.9901 -0.3143 -3.5925
-0.7460 -4.2308 -0.7109 -4.0320 -1.0758 -4.0150 0.0000 -3.5951
-0.3711 -4.2416 -0.3536 -4.0419 -0.7109 -4.0320 0.3143 -3.5925
0.0000 -4.2451 0.0000 -4.0451 -0.3536 -4.0419 0.6320 -3.5845
0.3711 -4.2416 0.3536 -4.0419 0.0000 -4.0451 0.9568 -3.5707
0.7460 -4.2308 0.7109 -4.0320 0.3536 -4.0419 1.2923 -3.5505
1.1287 -4.2123 1.0758 -4.0150 0.7109 -4.0320 1.6428 -3.5230
1.5233 -4.1852 1.4523 -3.9901 1.0758 -4.0150 2.0131 -3.4867
1.9344 -4.1484 1.8448 -3.9563 1.4523 -3.9901 2.4085 -3.4397
2.3672 -4.1001 2.2585 -3.9118 1.8448 -3.9563 2.8356 -3.3794
2.8274 -4.0379 2.6989 -3.8544 2.2585 -3.9118 3.3020 -3.3020
3.3216 -3.9585 3.1727 -3.7811 2.6989 -3.8544 3.6480 -3.2367
3.8576 -3.8576 3.6875 -3.6875 3.1727 -3.7811 3.8165 -3.2024
4.2525 -3.7731 4.0677 -3.6091 3.6875 -3.6875 4.1100 -3.1389
4.4375 -3.7235 4.2519 -3.5678 4.0677 -3.6091 5.0920 -2.1932
4.9706 -3.4805 4.7907 -3.3545 4.2087 -3.5780 5.1389 -2.0385
5.4144 -3.1260 5.2350 -3.0224 4.7907 -3.3545 5.1811 -1.8858
5.7551 -2.6836 5.5728 -2.5986 5.2350 -3.0224 5.2865 -1.4165
5.9201 -2.3484 5.7306 -2.2733 5.5728 -2.5986 5.3570 -0.9446
5.9524 -2.1665 5.7612 -2.0969 5.7306 -2.2733 5.3930 -0.4718
6.0281 -1.6152 5.8325 -1.5628 5.7612 -2.0969 5.3950 0.0000
6.0709 -1.0705 5.8723 -1.0355 5.7727 -1.6497 5.3633 0.4692
6.0823 -0.5321 5.8821 -0.5146 5.7836 -1.5497 5.2983 0.9342
6.0635 0.0000 5.8631 0.0000 5.8227 -1.0267 5.1967 1.3924
6.0154 0.5263 5.8161 0.5088 5.8321 -0.5102 5.0555 1.8401
5.9384 1.0471 5.7414 1.0124 5.8130 0.0000 4.8759 2.2737
5.8245 1.5607 5.6313 1.5089 5.7662 0.5045 4.6592 2.6900
5.6663 2.0624 5.4784 1.9940 5.6922 1.0037 4.4070 3.0858
5.4650 2.5484 5.2838 2.4639 5.5831 1.4960 4.1213 3.4582
5.2221 3.0150 5.0489 2.9150 5.4314 1.9769 3.8042 3.8042
4.9395 3.4587 4.7757 3.3440 5.2385 2.4427 3.4582 4.1213
4.6192 3.8760 4.4660 3.7475 5.0056 2.8900 3.0858 4.4070
4.2639 4.2639 4.1224 4.1224 4.7347 3.3153 2.6900 4.6592
3.8760 4.6192 3.7475 4.4660 4.4277 3.7153 2.2737 4.8759
3.4587 4.9395 3.3440 4.7757 4.0871 4.0871 1.8401 5.0555
3.0150 5.2221 2.9150 5.0489 3.7153 4.4277 1.3924 5.1967
55
2.5484 5.4650 2.4639 5.2838 3.3153 4.7347 0.9342 5.2983
2.0624 5.6663 1.9940 5.4784 2.8900 5.0056 0.4689 5.3595
1.5607 5.8245 1.5089 5.6313 2.4427 5.2385 0.0000 5.3800
1.0471 5.9384 1.0124 5.7414 1.9769 5.4314
0.5255 6.0071 0.5081 5.8078 1.4960 5.5831
0.0000 6.0300 0.0000 5.8300 1.0037 5.6922
0.5038 5.7580
0.0000 5.7800
56
圖 5.1玉長公路位置圖
57
圖 5.2 隧道斷面收方程式主畫面(玉長公路隧道)
58
圖 5.3 開啟新檔畫面(玉長公路隧道)
59
圖 5.4 收方資料 Excel檔(玉長公路隧道)
60
圖 5.5 隧道斷面收方程式資料處理系統(玉長公路隧道)
61
圖 5.6 經隧道斷面收方程式資料處理系統後(玉長公路隧道)
62
圖 5.7玉長公路隧道斷面收方程式之成果顯示
63
圖 5.8玉長公路隧道斷面收方繪圖結果
64
圖 5.9 Excel版本之收方形式(玉長公路隧道)
65
圖 5.10汐止山岳鐵路隧道位置圖
66
圖 5.11 隧道斷面收方程式新建檔案畫面(汐止山岳鐵路隧道)
67
圖 5.12 隧道斷面收方程式資料處理系統(汐止山岳鐵路隧道)
68
圖 5.13汐止山岳鐵路隧道斷面收方繪圖結果
69
圖 5.14 Excel版本之收方形式(汐止山岳鐵路隧道)
70
第六章 結論與建議
在整個論文的撰寫過程中,經研究動機、目的、文獻蒐集、方法確
認,實際撰寫後得到成果,以下即針對論文研究過程所遇到之問題
與想法提出以下結論與建議。
6.1 結論
(a)本研究以 Visual Basic 視窗程式語言撰寫可視化程式,所
獲得之結果可具體呈現程式的視窗化,視窗程式撰寫結果如文
後之程式碼附錄所示。
(b)本研究之隧道斷面收方視窗程式結合工程資訊系統、隧道
斷面收方資料處理系統、主要繪圖系統進行撰寫。以綜合式後方
交會法與後方交會法理論編輯而成,並導入玉長公路隧道及汐
止山岳鐵路隧道收方資料,與實際隧道收方數據比對,發現與
實際收方圖資料無誤,可用於現地收方。
(c)使用本視窗化程式可達到收方的目的,以收方方式比對隧
道斷面,以預判隧道開挖面是否為內傾或超挖等情形。
6.2建議
(a)隧道斷面收方最大功能係作為回饋下一輪開挖之依據,應
從合約制定,視隧道線型、地質開挖方式,按實際需要,由施工
者提出收方間距及時機的施工計畫,經由業主與監造單位審核。
(b)如欲推廣隧道斷面收方之視窗化程式,未來可朝更接近人
性化、視窗程式介面美化及程式包裝為方向進行發展。
71
參考文獻
(1)王銘鋒(2005),「可視化收斂圍束法在隧道工程之應用」,碩
士
論文,中華大學土木工程系,新竹。
(2)陳聖彥(2004),「視窗化收斂圍束法在隧道工程之研究與應
用」,碩士論文,中華大學土木工程系,新竹。
(3)陳堯中,吳俊傑,傅子仁 (1998),「隧道變形量測及斷面收
方之自動化技術」,地工技術雜誌,第 65 期,第 43~52頁。
(4)陳堯中,翁世樑,張文城 (1995),「隧道工程監測自動化技
術引進及推廣」,內政部營建署營建自動化專業計畫成果報告,
共 123頁。
(5)陳堯中,姚錫齡,魏錦銘(1991),「隧道斷面自動量測儀之
研製」, 內政部建築研究所籌備處專題研究計畫成果報告,共
63頁。
(6)許榮達(2004),「隧道斷面收方技術開發與工程應用之研究」,
碩士論文,中華大學土木工程系,新竹。
(7)黃水木(1999),「路線測量與土石方計算」,茂榮圖書有限公
司。
(8)葉怡成(1991) ,「測量學-21世紀觀點」,東華書局,台灣台
北。
(9)蔡茂生(1998),「山岳隧道施工自動化」,地工技術雜誌,第
6
期,第 5~18頁。
72
(10)楊道昌,游保杉(2002),「區域連續行降雨-逕流模式視窗
化
軟體之發展與應用」, 土木水利第二十八卷第四期
pp.106~117。
(11)楊森閔(2002),「由現地基樁試驗資料歸納土壤 P-Y曲線」,
碩士論文,國立台灣大學土木工程研究所,台北。
(12)管晏如(1990),「測量學」,有寧出版有限公司,台灣台北。
(13)管晏如(1991),「電子測距」,國立編譯館出版,台灣台北。
(14).Leica Profiler 4000 PRO-SYS 6.0 Software Manual
(15) Leica TCR307操作手冊
(16).Leica TCR1101操作手冊
73
附 錄
74
附錄 程式碼
Dim minX As Long
Dim minY As Long
Dim maxX As Long
Dim maxY As Long
Dim design_data() As MYDATA
Dim measure_data() As MYDATA
Dim cx, cy, pi
Dim fname
Dim connectionText As String
Dim con As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim rs As New ADODB.Recordset
Private Declare Function OSWinHelp% Lib "user32" Alias "WinHelpA"
(ByVal hwnd&, ByVal HelpFile$, ByVal wCommand%, dwData As
Any)
Private Sub Initialize()
75
Db = App.Path & "\" & "ouvd.mdb"
connectiontxt = "Provider=Microsoft.Jet.OLEDB.4.0;Persist
Security Info=False;Data Source=" & App.Path & "\" & "ouvd.mdb"
con.Open connectiontxt
cmd.ActiveConnection = con '初始化選單資訊
End Sub
Private Sub Command1_Click()
End Sub
Private Sub Command2_Click()
Dim n As Integer, i As Integer, a As Integer
Dim c As Single, length As Single
n = 90
For i = 1 To n
c = Int(Rnd() * 16)
length = (Rnd() * 20) + 1
Next
For a = 0 To 639 Step length
pic1.Line (a, 0)-(639 - a, 479), QBColor(c)
76
Next
For a = 0 To 479 Step length
pic1.Line (639, a)-(0, 479 - a), QBColor(c)
Next
End Sub
Private Sub DrawPic()
On Error GoTo fxxx
Dim n As Integer
n = 0
cmd.CommandText = "select * from design_xy where mode=" &
Text24
Set rs = cmd.Execute
'rs.MoveFirst
While rs.EOF = False
ReDim Preserve design_data(n)
design_data(n).X = rs.Fields(2) * 1000
design_data(n).Y = (rs.Fields(3) * 1000) +
(CSng(Text102.Text) * 1000) + 0.1 * 1000
'Print d(n).y
n = n + 1
rs.MoveNext
77
Wend
' 找最大範圍
For i = 0 To n - 1
If i = 0 Then
maxX = GetMaxRange(design_data(i).X)
maxY = GetMaxRange(design_data(i).Y)
minX = GetMinRange(design_data(i).X)
minY = GetMinRange(design_data(i).Y)
Else
If design_data(i).X > maxX Then maxX =
GetMaxRange(design_data(i).X)
If design_data(i).Y > maxY Then maxY =
GetMaxRange(design_data(i).Y)
If design_data(i).X < minX Then minX =
GetMinRange(design_data(i).X)
If design_data(i).Y < minY Then minY =
GetMinRange(design_data(i).Y)
End If
Next
'================================================
========
'抓取測量斷面資料
n = 0
78
For i = 0 To MSFlexGrid1.rows - 1
ReDim Preserve measure_data(n)
MSFlexGrid1.row = i
MSFlexGrid1.col = 0
measure_data(n).X = CSng(MSFlexGrid1.Text) * 1000
MSFlexGrid1.row = i
MSFlexGrid1.col = 1
measure_data(n).Y = CSng(MSFlexGrid1.Text) * 1000
n = n + 1
Next
' 找最大範圍
For i = 0 To n - 1
If measure_data(i).X > maxX Then maxX =
GetMaxRange(measure_data(i).X)
If measure_data(i).Y > maxY Then maxY =
GetMaxRange(measure_data(i).Y)
If measure_data(i).X < minX Then minX =
GetMinRange(measure_data(i).X)
If measure_data(i).Y < minY Then minY =
GetMinRange(measure_data(i).Y)
Next
'================================================
79
=======================
'定義繪圖物件
Dim DrawMaxX As Long
Dim DrawMinX As Long
Dim DrawMaxY As Long
Dim DrawMinY As Long
DrawMaxX = maxX + 1000
DrawMinX = minX - 1000
DrawMaxY = maxY + 1000
DrawMinY = minY - 1000
Picture7.Cls
Picture7.Scale (DrawMaxX, DrawMaxY)-(DrawMinX - 100,
DrawMinY - 100)
Picture7.DrawWidth = 1
Picture7.DrawStyle = 2
For i = DrawMaxX To DrawMinX Step -1000
Picture7.Line (i, DrawMaxY)-(i, DrawMinY)
Next
For i = DrawMaxY To DrawMinY Step -1000
Picture7.Line (DrawMaxX, i)-(DrawMinX, i)
Next
80
design_exy
measure_xy
Exit Sub
fxxx:
MsgBox "資料不完整 如遺漏設計斷面高等 請檢查後 再行操作"
End Sub
Private Sub Command4_Click()
Form9.Show 'Form9 GASIO NO.2
End Sub
Private Sub Command9_Click()
dlgcommon1.Filter = "TXT (*.txt;*,csv) |*.txt;*.csv"
dlgcommon1.InitDir = "\"
dlgcommon1.DialogTitle = "選取所要匯入的檔案"
81
dlgcommon1.ShowOpen
showTxt = dlgcommon1.FileName
txt = dlgcommon1.FileName
If Len(txt) <= 0 Or IsNull(txt) Then Exit Sub
Dim inputFile As Integer
inputFile = FreeFile
Open txt For Input As #inputFile
Do While Not EOF(inputFile)
Line Input #inputFile, aline
temp = Split(aline, ",")
Me.MSFlexGrid1.rows = Me.MSFlexGrid1.rows + 1
Me.MSFlexGrid1.TextMatrix(Me.MSFlexGrid1.rows - 1, 0)
= IIf(temp(0) = "", 0, temp(0))
Me.MSFlexGrid1.TextMatrix(Me.MSFlexGrid1.rows - 1, 1)
= IIf(temp(1) = "", 0, temp(1))
Loop
Me.MSFlexGrid1.RemoveItem (Me.MSFlexGrid1.row)
Close #inputFile 'Excel檔 匯入
MsgBox "匯入結束"
82
End Sub
Private Sub mnuData_Click()
Form4.Show
End Sub
Private Sub mnuopennew_Click()
Form2.Show '資訊視窗
End Sub
Private Sub mnusupport_Click(Index As Integer)
Form6.Show
End Sub
Private Sub MSFlexGrid1_MouseDown(Button As Integer, Shift As
Integer, X As Single, Y As Single)
OldX = MSFlexGrid1.col
OldY = MSFlexGrid1.row '定義滑鼠座標
83
End Sub
Private Sub Form_Load()
Dim i As Integer, j As Integer, k As Integer
MSFlexGrid1.ColWidth(0) = 950
MSFlexGrid1.ColWidth(1) = 1000
MSFlexGrid2.ColWidth(0) = 800
MSFlexGrid2.ColWidth(1) = 1100
MSFlexGrid2.ColWidth(2) = 1100
MSFlexGrid2.ColWidth(3) = 700 '設定Grid1 的格子寬度
pi = 3.14159
cx = 320
cy = 240
pic1.ScaleMode = 3
pic1.Scale (0, 0)-(640, 480)
set_color
For i = 0 To 47
Pic2(i).BackColor = color(i)
Next '初始設定
Initialize
84
Text3 = ""
Text4 = ""
Text5 = ""
Text7 = ""
Text8 = ""
Text9 = ""
Text10 = ""
Text11 = ""
Text12 = ""
Text13 = ""
Text14 = ""
Text15 = ""
Text16 = ""
Text17 = ""
Text18 = ""
Text19 = ""
Text20 = ""
Text21 = ""
End Sub
85
Private Sub Command7_Click()
Dim d() As MYDATA
Dim n As Integer
Dim RowSel As Integer
Dim ColSel As Integer
RowSel = MSFlexGrid1.RowSel
ColSel = MSFlexGrid1.ColSel
Dim i As Long
For i = OldY To RowSel
ReDim Preserve d(n)
MSFlexGrid1.row = i
MSFlexGrid1.col = OldX
d(n).X = CSng(MSFlexGrid1.Text) * 1000
MSFlexGrid1.row = i
MSFlexGrid1.col = OldX + 1
d(n).Y = CSng(MSFlexGrid1.Text) * 1000
n = n + 1
Next
For i = 0 To n - 1
86
If i = 0 Then
minX = d(i).X
minY = d(i).Y
maxX = d(i).X
maxY = d(i).Y
Else
If d(i).X > maxX Then maxX = d(i).X
If d(i).Y > maxY Then maxY = d(i).Y
If d(i).X < minX Then minX = d(i).X
If d(i).Y < minY Then minY = d(i).Y
End If
Next
Picture7.Scale (maxX + 1000, maxY + 1000)-(minX - 1000,
minY - 1000)
Picture7.DrawWidth = 1
Picture7.DrawStyle = 2
Picture7.DrawWidth = 3
Picture7.DrawStyle = 0
For i = 0 To n - 1
Picture7.PSet (d(i).X, d(i).Y)
87
Next
Picture7.DrawWidth = 1
For i = 0 To n - 1
If i = 0 Then
Picture7.PSet (d(i).X, d(i).Y)
Else
Picture7.Line -(d(i).X, d(i).Y), vbBlue
End If
Next
End Sub
Private Sub mmufileend_Click()
End '結束程式
End Sub
Private Sub Pic2_Click(Index As Integer)
pic1.ForeColor = color(Index)
pic3.BackColor = color(Index)
End Sub
Sub design_exy()
88
Dim OldX As Single
Dim OldY As Single
Dim n As Integer
n = UBound(design_data)
Picture7.DrawWidth = 3
Picture7.DrawStyle = 0
For i = 0 To n - 1
Picture7.PSet (design_data(i).X, design_data(i).Y),
vbRed
Next
Picture7.DrawWidth = 1
For i = 0 To n - 1
If i = 0 Then Picture7.PSet (design_data(i).X,
design_data(i).Y)
Next
'設計段面線
Picture7.DrawWidth = 5
Picture7.PSet (0, (Val(Text102) + 0.1) * 1000), vbBlack
'設計中心點
89
Picture7.DrawWidth = 2
Picture7.Line (-1000, Val(Text102) * 1000)-(1000,
Val(Text102) * 1000), vbRed
'設計高程線
Picture7.DrawWidth = 2
End Sub
Sub measure_xy()
Dim OldX As Single
Dim OldY As Single
Dim d() As MYDATA
Dim n As Integer
n = UBound(measure_data)
Picture7.DrawWidth = 3
Picture7.DrawStyle = 0
For i = 0 To n - 1
Picture7.PSet (measure_data(i).X, measure_data(i).Y)
Next
Picture7.DrawWidth = 1
90
For i = 0 To n - 1
If i = 0 Then
Picture7.PSet (measure_data(i).X,
measure_data(i).Y)
Else
Picture7.Line -(measure_data(i).X,
measure_data(i).Y), vbBlue
End If
Next
End Sub
Private Sub VScroll2_Change()
Text24.Text = VScroll2.Value
End Sub
Private Sub Text24_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then Text24_LostFocus
End Sub
Private Sub Text24_Change()
Select Case Text24
Case "0"
Picture7.Cls
91
Text25 = "選擇斷面形式(1~6)"
Exit Sub
Case "1"
Text25 = "混凝土面"
Label2 = "隧道斷面測量圖"
Picture1.Visible = True
Case "2"
Text25 = "完成面"
Label2 = "隧道斷面測量圖"
Case "3"
Text25 = "避車(左)完成面"
Label2 = "隧道斷面測量圖"
Case "4"
Text25 = "避車(右)完成面"
Label2 = "隧道斷面測量圖"
Case "5"
Text25 = "避車(左)噴凝土面"
Label2 = "隧道斷面測量圖"
Case "6"
Text25 = "避車(右)噴凝土面"
Label2 = "隧道斷面測量圖"
92
Case Else
Text24 = "0"
Exit Sub
End Select
DrawPic
End Sub
Private Sub Text24_LostFocus()
If IsNumeric(Text24.Text) = False Then
MsgBox "必需是輸入數值才可以", 16
Text24.Text = VScroll2.Max - VScroll2.Value
End If
If Val(Text24.Text) > VScroll2.Max Or Val(Text24.Text) < 0
Then
MsgBox "數值範圍是 0 ~ " & VScroll2.Max, 16
Text24.Text = VScroll2.Max - VScroll2.Value
End If
End Sub
Function GetMaxRange(d As Single) As Long
93
Dim tmp As Long
tmp = d / 1000
tmp = tmp + 1
GetMaxRange = tmp * 1000
End Function
Function GetMinRange(d As Single) As Long
Dim tmp As Long
tmp = d / 1000
tmp = tmp - 1
GetMinRange = tmp * 1000
End Function
Private Sub Combo1_Click()
Dim r As String
r = Combo1.Text
If r = "混凝土面" Then Text15 = "1"
If r = "完成面" Then Text15 = "2"
If r = "避車(左)完成面" Then Text15 = "3"
If r = "避車(右)完成面" Then Text15 = "4"
If r = "避車(左)混凝土面" Then Text15 = "5"
If r = "避車(右)混凝土面" Then Text15 = "6"
End Sub
94
Private Sub Command1_Click()
Form4.Text105 = Text105
Form4.Text101 = Text101
Form4.Text102 = Text102
Form4.Text103 = Text103
Form4.Text104 = Text104
Form4.Text150 = Text15
Form4.Show
Me.Hide
End Sub
Private Sub Form_Load()
Combo1.AddItem "混凝土面"
Combo1.AddItem "完成面"
Combo1.AddItem "避車(左)完成面"
Combo1.AddItem "避車(右)完成面"
Combo1.AddItem "避車(左)混凝土面"
95
Combo1.AddItem "避車(右)混凝土面"
Combo1.SelText = "混凝土面"
End Sub
Dim connectionText As String
Dim con As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim rs As New ADODB.Recordset
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As
Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long,
ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long,
ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private Declare Function GetDC Lib "user32" (ByVal hwnd As
Long) As Long
Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As
Long, ByVal hdc As Long) As Long
Private Declare Function GetDesktopWindow Lib "user32" ()
As Long '以上為宣告區
Function Round1(num As Variant, n As Long) As String
Round1 = Format(num, IIf(n > 0, "0." & String(n, "0"),
"0"))
End Function
Function Asin(ByVal X As Single) As Double
96
If (1 - X ^ 2) <= 0 Then
Asin = 0
Else
Asin = Atn(X / Sqr(1 - X ^ 2)) / 0.0174532925
End If
'Asin 求法
End Function
Function Comp(obj As MSFlexGrid, col As Integer, ByVal mode As
Integer)
Dim tmp, row As Integer
For row = 0 To obj.rows - 1
If row = 0 Then
tmp = Val(obj.TextMatrix(row, col))
Else
Select Case mode
Case 1
tmp = GetMax(tmp, Val(obj.TextMatrix(row,
col)))
Case 2
tmp = GetMin(tmp, Val(obj.TextMatrix(row,
col)))
End Select
End If
Next
Comp = tmp
97
End Function
Function GetMax(ByVal data1 As Integer, ByVal data2 As Integer)
As Integer
If data1 > data2 Then
GetMax = data1
Else
GetMax = data2
End If
End Function
Function GetMin(ByVal data1 As Integer, ByVal data2 As Integer) As
Integer
If data1 < data2 Then
GetMin = data1
Else
GetMin = data2
End If
End Function
Function Comp2(obj As MSFlexGrid, col As Integer) As Integer ' 取
次大直
Dim tmp(2), row As Integer
For row = 0 To obj.rows - 1
' tmp(0) 第一大 tmp(1) 第二大
98
For i = 0 To 1
If tmp(i) < Val(obj.TextMatrix(row, col)) Then
If i = 0 Then
tmp(i + 1) = tmp(i)
End If
tmp(i) = Val(obj.TextMatrix(row, col))
Exit For
End If
Next
Next
Comp2 = tmp(1)
End Function
Function Comp3(obj As MSFlexGrid, col As Integer) As Integer ' 取
次小直
Dim tmp(2), row As Integer
tmp(0) = Comp2(MSFlexGrid4, 0)
tmp(1) = Comp(MSFlexGrid4, 0, 1)
For row = 0 To obj.rows - 1
' tmp(0) 第一小 tmp(1) 第二小
For i = 0 To 1
If tmp(i) > Val(obj.TextMatrix(row, col)) Then
If i = 0 Then
tmp(i + 1) = tmp(i)
End If
99
tmp(i) = Val(obj.TextMatrix(row, col))
Exit For
End If
Next
Next
Comp3 = tmp(1)
End Function
Function GetAvg(obj As MSFlexGrid, col As Integer) As Double ' 取
平均值
Dim sum As Double
Dim row As Integer
For row = 0 To obj.rows - 1
sum = sum + Val(obj.TextMatrix(row, col))
Next
GetAvg = sum / (row)
End Function
Private Sub Command1_Click()
'新增中線資料鈕
Me.MSFlexGrid1.rows = Me.MSFlexGrid1.rows + 1
Me.MSFlexGrid1.TextMatrix(Me.MSFlexGrid1.rows - 1, 0) =
100
IIf(Text1(0) = "", 0, Text1(0))
Me.MSFlexGrid1.TextMatrix(Me.MSFlexGrid1.rows - 1, 1) =
IIf(Text1(1) = "", 0, Text1(1))
Me.MSFlexGrid1.TextMatrix(Me.MSFlexGrid1.rows - 1, 2) =
IIf(Text1(2) = "", 0, Text1(2))
Me.MSFlexGrid1.TextMatrix(Me.MSFlexGrid1.rows - 1, 3) =
IIf(Text1(3) = "", 0, Text1(3))
Me.MSFlexGrid1.TextMatrix(Me.MSFlexGrid1.rows - 1, 4) =
IIf(Text1(4) = "", 0, Text1(4))
Me.MSFlexGrid1.TextMatrix(Me.MSFlexGrid1.rows - 1, 5) =
IIf(Text1(5) = "", 0, Text1(5))
Me.MSFlexGrid1.TextMatrix(Me.MSFlexGrid1.rows - 1, 6) =
IIf(Text1(6) = "", 0, Text1(6))
Me.MSFlexGrid1.TextMatrix(Me.MSFlexGrid1.rows - 1, 7) =
IIf(Text1(7) = "", 0, Text1(7))
Me.MSFlexGrid1.TextMatrix(Me.MSFlexGrid1.rows - 1, 8) =
IIf(Text1(8) = "", 0, Text1(8))
End Sub
Private Sub Command10_Click()
'開啟 EXCEL
Dim xls As Excel.Application
Set xls = Excel.Application
Dim book As Excel.Workbook
Set book = xls.Workbooks.Open("c:\150k.xls")
101
Dim sheet As Excel.Worksheet
Set sheet = xls.Sheets(1)
Dim rows As Integer, cols As Integer
Dim i As Integer, j As Integer
Dim k As Integer, l As Integer
For i = 45 To 71
For j = 1 To 27
sheet.Cells(i, 2) = MSFlexGrid1.TextMatrix(j, 1)
sheet.Cells(i, 3) = MSFlexGrid1.TextMatrix(j, 2)
sheet.Cells(i, 4) = MSFlexGrid1.TextMatrix(j, 3)
sheet.Cells(i, 5) = MSFlexGrid1.TextMatrix(j, 4)
sheet.Cells(i, 6) = MSFlexGrid1.TextMatrix(j, 5)
sheet.Cells(i, 7) = MSFlexGrid1.TextMatrix(j, 6)
sheet.Cells(i, 8) = MSFlexGrid1.TextMatrix(j, 7)
sheet.Cells(i, 9) = MSFlexGrid1.TextMatrix(j, 8)
Next
Next
'Print sheet.Cells(1, 3)
'Print sheet.Cells(2, 3)
'sheet.PrintOut print 用
102
xls.DisplayAlerts = True
xls.Quit
End Sub
Sub c1()
'計算距離高差
Dim n As Integer
For i = 1 To MSFlexGrid1.rows - 1
n = n + 1
If n >= fg3.rows Then
fg3.AddItem ""
fg3.col = 0
fg3.col = 1
fg3.col = 2
fg3.row = n
fg3.TextMatrix(n - 1, 0) =
Round(MSFlexGrid1.TextMatrix(i, 1) +
MSFlexGrid1.TextMatrix(i, 2) / 60 + MSFlexGrid1.TextMatrix(i,
3) / 3600, 2)
fg3.TextMatrix(n - 1, 1) =
Round((MSFlexGrid1.TextMatrix(i, 7) / 1000) *
Sin((MSFlexGrid1.TextMatrix(i, 4) +
MSFlexGrid1.TextMatrix(i, 5) / 60 + MSFlexGrid1.TextMatrix(i,
6) / 3600) * 3.1415926 / 180), 3)
103
fg3.TextMatrix(n - 1, 2) =
Round((MSFlexGrid1.TextMatrix(i, 7) / 1000) *
Cos((MSFlexGrid1.TextMatrix(i, 4) +
MSFlexGrid1.TextMatrix(i, 5) / 60 + MSFlexGrid1.TextMatrix(i,
6) / 3600) * 3.1415926 / 180), 3)
'高程 mm*弧度
End If
Next
'計算距離高差
Text15 = Round(Sqr((Val(Text7) - Val(Text3)) ^ 2 +
(Val(Text8) - Val(Text4)) ^ 2), 3) '已知測點距離
If Abs(Val(fg3.TextMatrix(1, 0)) - Val(fg3.TextMatrix(0,
0))) > 180 Then
Text16 = Round(360 - Abs(fg3.TextMatrix(1, 0) -
fg3.TextMatrix(0, 0)), 3)
Else
Text16 = Round(Abs(fg3.TextMatrix(1, 0) -
fg3.TextMatrix(0, 0)), 3)
End If '量測夾角
104
If Val(fg3.TextMatrix(1, 1)) > Val(fg3.TextMatrix(0, 1))
And Val(fg3.TextMatrix(1, 1)) > Val(Text15) Then
Text19 = Round((180 - (Val(Text16) * 3.1415926 /
180)) * (fg3.TextMatrix(1, 1) / Val(Text15) * 3.1415926 /
180), 3)
Else
Text19 = Round((Val(Text16) * 3.1415926 / 180) *
(fg3.TextMatrix(1, 1) / Val(Text15) * 3.1415926 / 180), 3)
End If '
If Val(fg3.TextMatrix(0, 1)) > Val(fg3.TextMatrix(1, 1)) Or
Val(fg3.TextMatrix(0, 1)) > Val(Text15) Then
Text20 = Round(180 - (Val(Text16) / 180 * 3.1415926) *
(fg3.TextMatrix(0, 1) / Val(Text15) / 3.1415926 * 180), 3)
Else
Text20 = Round((Val(Text16) / 180 * 3.1415926) *
fg3.TextMatrix(0, 1) / Val(Text15) / 3.1415926 * 180, 3)
End If '
If Val(Text19) > Val(Text20) Then
Text17 = Round(180 - Val(Text16) - Val(Text20), 3)
Else
Text17 = Text19
105
End If '計算距離高差 已知點 1 內角計算 worng
If Val(Text20) > Val(Text19) Then
Text18 = Round(180 - Val(Text16) - Val(Text19), 3)
Else
Text18 = Text20
End If '計算距離高差 已知點 2 內角計算
Text21 = Round(((Val(Text16) + fg3.TextMatrix(0, 0))
/ 360 - Int((Val(Text16) + fg3.TextMatrix(0, 0)) / 360)) *
360, 3)
Text22 = Round(fg3.TextMatrix(1, 0), 3)
End Sub
Sub c2()
'計算過程
Text37 = Round(Abs(Atn((Val(Text8) - Val(Text4)) /
(Val(Text7) - Val(Text3))) * 180 / 3.1415926), 3) '數學
方位角
If (Val(Text8) - Val(Text4)) >= 0 And (Val(Text7) -
Val(Text3)) >= 0 Then Text38 = Text37
If (Val(Text8) - Val(Text4)) >= 0 And (Val(Text7) -
Val(Text3)) < 0 Then Text38 = 180 - Val(Text37)
If (Val(Text8) - Val(Text4)) < 0 And (Val(Text7) -
Val(Text3)) >= 0 Then Text38 = 360 - Val(Text37)
106
If (Val(Text8) - Val(Text4)) < 0 And (Val(Text7) -
Val(Text3)) < 0 Then Text38 = 180 + Val(Text37) '基線方位角
'計算過程
If Val(Text21) = Val(Text22) Then
Text24 = Round(Val(Text3) + (fg3.TextMatrix(0, 1) *
Sin((90 - (Val(Text38) + Val(Text17))) / 180 *
3.1415926)), 3) '測站一算未知點N
Text27 = Round(Val(Text4) + (fg3.TextMatrix(0, 1) *
Cos((90 - (Val(Text38) + Val(Text17))) / 180 *
3.1415926)), 3) '測站一算未知點 E
Text25 = Round(Val(Text7) + (fg3.TextMatrix(1, 1) *
Sin((90 - (Val(Text38) - 180 - Val(Text18))) / 180 *
3.1415926)), 3) '測站二算未知點N
Text28 = Round(Val(Text8) + (fg3.TextMatrix(1, 1) *
Cos((90 - (Val(Text38) - 180 - Val(Text18))) / 180 *
3.1415926)), 3) '測站二算未知點 E
Else
Text24 = Round(Val(Text3) + (fg3.TextMatrix(0, 1) *
Sin((90 - (Val(Text38) - Val(Text17))) / 180 *
3.1415926)), 3) '測站一算未知點N
Text27 = Round(Val(Text4) + (fg3.TextMatrix(0, 1) *
Cos((90 - (Val(Text38) - Val(Text17))) / 180 *
3.1415926)), 3) '測站一算未知點 E
Text25 = Round(Val(Text7) + (fg3.TextMatrix(1, 1) *
107
Sin((90 - (Val(Text38) - 180 + Val(Text18))) / 180 *
3.1415926)), 3) '測站二算未知點N
Text28 = Round(Val(Text8) + (fg3.TextMatrix(1, 1) *
Cos((90 - (Val(Text38) - 180 + Val(Text18))) / 180 *
3.1415926)), 3) '測站二算未知點 E
End If
If Val(Text5) = 0 Then
Text30 = 0
Else
Text30 = Round(Val(Text5) + MSFlexGrid1.TextMatrix(1,
8) - fg3.TextMatrix(0, 2), 3)
End If '測站一算未知點高程
If Val(Text9) = 0 Then
Text31 = 0
Else
Text31 = Round(Val(Text9) + MSFlexGrid1.TextMatrix(2,
8) - fg3.TextMatrix(1, 2), 3)
End If '測站二算未知點高程
Text26 = Round(0.5 * (Val(Text24) + Val(Text25)), 3)
Text29 = Round(0.5 * (Val(Text27) + Val(Text28)), 3)
Text32 = Round(0.5 * (Val(Text30) + Val(Text31)), 3)
'平均值
108
If Val(fg3.TextArray(4)) > Val(fg3.TextArray(1)) Then
Text34 = Round(Val(Text7) - Val(Text26), 3)
Text35 = Round(Val(Text8) - Val(Text29), 3)
Else
Text34 = Round(Val(Text3) - Val(Text26), 3)
Text35 = Round(Val(Text4) - Val(Text29), 3)
End If
Text33 = Round(Abs(Atn(Val(Text35) / Val(Text34))
* 180 / 3.1415926), 3)
If Val(Text35) >= 0 And Val(Text34) >= 0 Then Text36 =
Round(Val(Text33), 3)
If Val(Text35) >= 0 And Val(Text34) < 0 Then Text36 =
Round(180 - Val(Text33), 3)
If Val(Text35) < 0 And Val(Text34) >= 0 Then Text36 =
Round(360 - Val(Text33), 3)
If Val(Text35) < 0 And Val(Text34) < 0 Then Text36 =
Round(180 + Val(Text33), 3)
If Val(fg3.TextMatrix(1, 1)) > Val(fg3.TextMatrix(0, 1))
Then
Text39 = Round(Val(Text36) - Val(fg3.TextMatrix(1,
0)), 1)
Else
109
Text39 = Round(Val(Text36) - Val(fg3.TextMatrix(0,
0)), 1)
End If
End Sub
Sub c3()
'成果資料 c3
Text43 = Text3
Text44 = Text4
Text45 = Text5
Text47 = Text7
Text48 = Text8
Text49 = Text9
Dim i As Integer
Dim j As Integer
For i = 3 To MSFlexGrid1.rows - 1 ' ROWS 改變
If fg4.rows <= i - 3 Then
fg4.AddItem ""
End If
If Val(MSFlexGrid1.TextMatrix(i, 1)) = 0 Then
fg4.TextMatrix(i - 3, 0) = 0
fg4.TextMatrix(i - 3, 1) = 0
fg4.TextMatrix(i - 3, 2) = 0
110
Else
fg4.TextMatrix(i - 3, 0) = Round(Val(Text26) +
Val(fg3.TextMatrix(i - 1, 1)) * Sin((90 - (Val(Text39) +
Val(fg3.TextMatrix(i - 1, 0)))) / 180 * 3.1415926), 3)
fg4.TextMatrix(i - 3, 1) = Round(Val(Text29) +
Val(fg3.TextMatrix(i - 1, 1)) * Cos((90 - (Val(Text39) +
Val(fg3.TextMatrix(i - 1, 0)))) / 180 * 3.1415926), 3)
fg4.TextMatrix(i - 3, 2) = Round(Val(Text32) +
Val(fg3.TextMatrix(i - 1, 2)), 3)
End If
Next
Text51 = Round(GetAvg(fg4, 0), 2)
Text53 = Round(GetAvg(fg4, 1), 2)
If Text10 = 0 Then
Text55 = Round(fg4.TextMatrix(0, 2), 2)
Else
Text55 = Text10
End If
End Sub
111
Sub c4()
'中心座標資料 c4
'執行於 fg4 之後
Text50 = Text70
Text52 = Text71
Text54 = Text72
If Text73 = 0 Then
Text56 = Round(GetAvg(fg4, 0), 2)
Else
Text56 = Text73
End If
Text57 = Text56
For i = 0 To fg4.rows - 1 ' ROWS 改變
If fg5.rows <= i Then
fg5.AddItem ""
End If
112
Text100 = Round(Sqr((Val(Text74) - Val(Text71)) ^ 2
+ (Val(Text75) - Val(Text72)) ^ 2), 2)
If Val(fg4.TextMatrix(i, 0)) = 0 Then
fg5.TextMatrix(i, 0) = 0
Else
fg5.TextMatrix(i, 0) = Round(Sqr((Val(Text52) -
Val(fg4.TextMatrix(i, 0))) ^ 2 + (Val(Text54) -
Val(fg4.TextMatrix(i, 1))) ^ 2), 2)
End If
Text200 = Round(Abs(Atn((Val(Text72) -
Val(Text75)) / (Val(Text71) - Val(Text74))) * 180 /
3.1415926), 2)
If Val(fg4.TextMatrix(i, 0)) = 0 Then
fg5.TextMatrix(i, 2) = 0
Else
fg5.TextMatrix(i, 2) =
Round(Abs(Atn((Val(fg4.TextMatrix(i, 1)) -
Val(Text54)) / (Val(fg4.TextMatrix(i, 0)) -
Val(Text52))) * 180 / 3.1415926), 2)
113
End If
If (Val(Text72) - Val(Text75)) >= 0 And (Val(Text71) -
Val(Text74)) >= 0 Then Text300 = Val(fg5.TextMatrix(0, 2))
If (Val(Text72) - Val(Text75)) >= 0 And (Val(Text71) -
Val(Text74)) < 0 Then Text300 = 180 - Val(fg5.TextMatrix(0,
2))
If (Val(Text72) - Val(Text75)) < 0 And (Val(Text71) -
Val(Text74)) >= 0 Then Text300 = 360 - Val(fg5.TextMatrix(0,
2))
If (Val(Text72) - Val(Text75)) < 0 And (Val(Text71) -
Val(Text74)) < 0 Then Text300 = 180 + Val(fg5.TextMatrix(0,
2))
fg5.TextMatrix(i, 1) = fg5.TextMatrix(0, 3)
fg5.TextMatrix(0, 1) = fg5.TextMatrix(0, 3)
If Val(fg4.TextMatrix(i, 0)) = 0 Then
fg5.TextMatrix(i, 3) = 0
Else: GoTo 12
End If
12:
114
If (Val(fg4.TextMatrix(i, 1)) - Val(Text54)) >= 0 And
(Val(fg4.TextMatrix(i, 0)) - Val(Text52)) >= 0 Then
fg5.TextMatrix(i, 3) = Val(fg5.TextMatrix(i, 2))
If (Val(fg4.TextMatrix(i, 1)) - Val(Text54)) >= 0 And
(Val(fg4.TextMatrix(i, 0)) - Val(Text52)) < 0 Then
fg5.TextMatrix(i, 3) = 180 - Val(fg5.TextMatrix(i, 2))
If (Val(fg4.TextMatrix(i, 1)) - Val(Text54)) < 0 And
(Val(fg4.TextMatrix(i, 0)) - Val(Text52)) >= 0 Then
fg5.TextMatrix(i, 3) = 360 - Val(fg5.TextMatrix(i, 2))
If (Val(fg4.TextMatrix(i, 1)) - Val(Text54)) < 0 And
(Val(fg4.TextMatrix(i, 0)) - Val(Text52)) < 0 Then
fg5.TextMatrix(i, 3) = 180 + Val(fg5.TextMatrix(i, 2))
Next
End Sub
Sub c5()
Text76 = Round(Sqr((Val(Text59) - Val(Text65)) ^ 2
+ (Val(Text60) - Val(Text66)) ^ 2), 3)
Text77 = Comp(MSFlexGrid4, 0, 2)
Text78 = Comp3(MSFlexGrid4, 0) '測試
Text70 = Round(Val(Text64) - (Val(Text64) -
Val(Text58)) / Val(Text76) * ((Val(Text78) ^ 2 +
Val(Text76) ^ 2 - Val(Text77) ^ 2) / 2 / Val(Text76)), 3)
115
Text71 = Round(Text65 - (Text65 - Text59) / Text76 *
((Text78 ^ 2 + Text76 ^ 2 - Text77 ^ 2) / 2 / Text76), 3)
Text72 = Round(Text66 - (Text66 - Text60) / Text76 *
((Text78 ^ 2 + Text76 ^ 2 - Text77 ^ 2) / 2 / Text76), 3)
Text73 = Round(Text67 - (Text67 - Text61) / Text76 *
((Text78 ^ 2 + Text76 ^ 2 - Text77 ^ 2) / 2 / Text76), 3)
Text74 = Round(Text68 - (Text68 - Text62) / Text76 *
((Text78 ^ 2 + Text76 ^ 2 - Text77 ^ 2) / 2 / Text76), 3)
Text75 = Round(Text69 - (Text69 - Text63) / Text76 *
((Text78 ^ 2 + Text76 ^ 2 - Text77 ^ 2) / 2 / Text76), 3)
End Sub
Sub c7()
For i = 0 To fg5.rows - 1 ' ROWS 改變
If fg7.rows <= i Then
fg7.AddItem ""
End If
'斷面測量線X軸
If Val(fg4.TextMatrix(0, 0)) = 0 Then
fg7.TextMatrix(i, 0) = Text51
Else
fg7.TextMatrix(i, 0) = Round(Val(fg5.TextMatrix(i, 0))
* Sin((90 - (Val(fg5.TextMatrix(i, 1)) -
Val(fg5.TextMatrix(i, 3)))) / 180 * 3.1415926) - 0, 2) 'e=-
116
1*s
End If
'斷面測量線Y軸
If Val(fg4.TextMatrix(0, 0)) = 0 Then
fg7.TextMatrix(i, 1) = "s"
Else
fg7.TextMatrix(i, 1) = Round(fg4.TextMatrix(i, 2), 2)
End If
'If Val(fg4.TextMatrix(0, 0)) = 0 Then
'fg7.TextMatrix(i, 2) = 0
'Else
'fg7.TextMatrix(i, 2) = Round(Val(fg5.TextMatrix(i, 0)) *
Cos((90 - (Val(fg5.TextMatrix(i, 1)) -
Val(fg5.TextMatrix(i, 3)))) / 180 * 3.1415926) - 0, 2) 'e=-
1*s
'End If
Next
End Sub
Sub centerdata_from_db()
117
'中線資料從資料庫匯入
Dim n As Integer
Dim X As String
Dim Y As String
Adodc7.Refresh
Adodc7.Recordset.MoveFirst
While Adodc7.Recordset.EOF = False
n = n + 1
If n >= MSFlexGrid3.rows Then
MSFlexGrid3.AddItem ""
End If
MSFlexGrid3.row = n
MSFlexGrid3.col = 0
MSFlexGrid3.Text = Adodc7.Recordset.Fields(1)
MSFlexGrid3.row = n
MSFlexGrid3.col = 1
MSFlexGrid3.Text = Adodc7.Recordset.Fields(2)
MSFlexGrid3.row = n
MSFlexGrid3.col = 2
MSFlexGrid3.Text = Adodc7.Recordset.Fields(3)
MSFlexGrid3.row = n
MSFlexGrid3.col = 3
118
MSFlexGrid3.Text = Adodc7.Recordset.Fields(4)
MSFlexGrid3.row = n
MSFlexGrid3.col = 4
MSFlexGrid3.Text = Adodc7.Recordset.Fields(5)
MSFlexGrid3.row = n
MSFlexGrid3.col = 5
MSFlexGrid3.Text = Adodc7.Recordset.Fields(6)
Adodc7.Recordset.MoveNext
Wend
End Sub
Sub centerdata_cal()
'中線資料計算部份
For i = 1 To MSFlexGrid3.rows - 1
If MSFlexGrid4.rows <= i - 1 Then
MSFlexGrid4.AddItem ""
End If
MSFlexGrid4.TextMatrix(i - 1, 0) =
Round(Sqr((Val(Text51) - Val(MSFlexGrid3.TextMatrix(i,
1))) ^ 2 + (Val(Text53) - Val(MSFlexGrid3.TextMatrix(i,
2))) ^ 2), 3)
119
Next
End Sub
Private Sub Command12_Click()
SSTab2.Tab = 1
'換頁動作
End Sub
Private Sub Command14_Click()
'MSFlexGrid3 表單清除
MSFlexGrid3.Clear
End Sub
Private Sub Command3_Click()
On Error GoTo fxxx
dlgcommon2.Filter = "TXT (*.txt;*,csv) |*.txt;*.csv"
120
dlgcommon2.InitDir = "\"
dlgcommon2.DialogTitle = "選取所要匯入的檔案"
dlgcommon2.ShowOpen
showTxt = dlgcommon2.FileName
txt = dlgcommon2.FileName
If Len(txt) <= 0 Or IsNull(txt) Then Exit Sub
Dim inputFile As Integer
inputFile = FreeFile
Open txt For Input As #inputFile
Do While Not EOF(inputFile)
Line Input #inputFile, aline
temp = Split(aline, ",")
Me.MSFlexGrid1.rows = Me.MSFlexGrid1.rows + 1
Me.MSFlexGrid1.TextMatrix(Me.MSFlexGrid1.rows - 1, 0)
= IIf(temp(0) = "", 0, temp(0))
Me.MSFlexGrid1.TextMatrix(Me.MSFlexGrid1.rows - 1, 1)
= IIf(temp(1) = "", 0, temp(1))
Me.MSFlexGrid1.TextMatrix(Me.MSFlexGrid1.rows - 1, 2)
= IIf(temp(2) = "", 0, temp(2))
Me.MSFlexGrid1.TextMatrix(Me.MSFlexGrid1.rows - 1, 3)
= IIf(temp(3) = "", 0, temp(3))
Me.MSFlexGrid1.TextMatrix(Me.MSFlexGrid1.rows - 1, 4)
121
= IIf(temp(4) = "", 0, temp(4))
Me.MSFlexGrid1.TextMatrix(Me.MSFlexGrid1.rows - 1, 5)
= IIf(temp(5) = "", 0, temp(5))
Me.MSFlexGrid1.TextMatrix(Me.MSFlexGrid1.rows - 1, 6)
= IIf(temp(6) = "", 0, temp(6))
Me.MSFlexGrid1.TextMatrix(Me.MSFlexGrid1.rows - 1, 7)
= IIf(temp(7) = "", 0, temp(7))
Me.MSFlexGrid1.TextMatrix(Me.MSFlexGrid1.rows - 1, 8)
= IIf(temp(8) = "", 0, temp(8))
Loop
Close #inputFile
MsgBox "匯入結束"
centerdata_from_db
'程式測試用
Text2 = "A-2"
Text3 = 2573903.424
Text4 = 288382.421
Text5 = 375.335
Text6 = "LC9190"
122
Text7 = 2573949.194
Text8 = 288214.311
Text9 = 380
Text58 = 9190
Text59 = 2573949.193
Text60 = 288214.31
Text61 = 378.32
Text62 = 2573968.591
Text63 = 288219.18
Text64 = 9185
Text65 = 2573950.402
Text66 = 288209.459
Text67 = 378.42
Text68 = 2573969.817
Text69 = 288214.263
'====================
'==========================================
c1
'
c2
'
c3
'
123
centerdata_cal
'
c5
'
c4
'
c7
'
'內部動作==================================
'==========================================
Close #inputFile
Exit Sub
fxxx:
MsgBox "資料不完整 請檢查後 再行操作"
'錯誤提示===================================
End Sub
Private Sub Command4_Click()
Form1.Show
124
Form1.Text2 = Text2
Form1.Text3 = Text3
Form1.Text4 = Text4
Form1.Text5 = Text5
'控制樁點 1
Form1.Text6 = Text6
Form1.Text7 = Text7
Form1.Text8 = Text8
Form1.Text9 = Text9
'控制樁點 2
Form1.Text10 = Val(Text24) - Val(Text25)
Form1.Text11 = Val(Text27) - Val(Text28)
Form1.Text12 = Val(Text30) - Val(Text31)
Form1.Text13 = Val(Text26)
Form1.Text14 = Val(Text29)
Form1.Text15 = Val(Text36)
Form1.Text16 = Val(Text71)
Form1.Text17 = Val(Text72)
Form1.Text18 = Val(Text73)
Form1.Text19 = Val(Text74)
Form1.Text20 = Val(Text75)
Form1.Text21 = Val(Text10)
125
For i = 0 To fg7.rows - 1 ' ROWS 改變
If Form1.MSFlexGrid1.rows <= i Then
Form1.MSFlexGrid1.AddItem ""
End If
Form1.MSFlexGrid1.TextMatrix(i, 0) = fg7.TextMatrix(i, 0)
Form1.MSFlexGrid1.TextMatrix(i, 1) = fg7.TextMatrix(i, 1)
Next
For i = 0 To fg4.rows - 1 ' ROWS 改變
If Form1.MSFlexGrid2.rows <= i Then
Form1.MSFlexGrid2.AddItem ""
End If
Form1.MSFlexGrid2.TextMatrix(i, 0) = i + 1
Form1.MSFlexGrid2.TextMatrix(i, 1) = fg4.TextMatrix(i, 0)
Form1.MSFlexGrid2.TextMatrix(i, 2) = fg4.TextMatrix(i, 1)
Form1.MSFlexGrid2.TextMatrix(i, 3) = fg4.TextMatrix(i, 2)
Next
Form1.Text105 = Text105
Form1.Text101 = Text101
Form1.Text102 = Text102
Form1.Text103 = Text103
Form1.Text104 = Text104
Form1.Text24 = Text150
Me.Hide
126
End Sub
Private Sub Command6_Click()
Static MyFun As Integer
Select Case MyFun
Case 0
Label3 = "手動鍵入新增資料或點選左欄選擇控制樁點 "
MyFun = 1
Case 1
Label3 = " "
MyFun = 2
Case 2
Label3 = " "
MyFun = 0
End Select
End Sub
Private Sub Command7_Click()
Dim n As Integer
Dim X As String
Dim Y As String
Adodc4.Refresh
Adodc4.Recordset.MoveFirst
127
While Adodc4.Recordset.EOF = False
n = n + 1
If n >= MSFlexGrid2.rows Then
MSFlexGrid2.AddItem ""
End If
MSFlexGrid2.row = n
MSFlexGrid2.col = 0
MSFlexGrid2.Text = Adodc4.Recordset.Fields(1)
MSFlexGrid2.row = n
MSFlexGrid2.col = 1
MSFlexGrid2.Text = Adodc4.Recordset.Fields(2)
MSFlexGrid2.row = n
MSFlexGrid2.col = 2
MSFlexGrid2.Text = Adodc4.Recordset.Fields(3)
MSFlexGrid2.row = n
MSFlexGrid2.col = 3
MSFlexGrid2.Text = Adodc4.Recordset.Fields(4)
Adodc4.Recordset.MoveNext
Wend
End Sub
Private Sub Initialize()
Db = App.Path & "\" & "ouvd.mdb"
connectiontxt = "Provider=Microsoft.Jet.OLEDB.4.0;Persist
128
Security Info=False;Data Source=" & App.Path & "\" & "ouvd.mdb"
con.Open connectiontxt
cmd.ActiveConnection = con
'初始化選單資訊
End Sub
Private Sub Command8_Click()
MSFlexGrid3.Clear
dlgcommon2.Filter = "TXT (*.txt;*,csv) |*.txt;*.csv"
dlgcommon2.InitDir = "\"
dlgcommon2.DialogTitle = "選取所要匯入的檔案"
dlgcommon2.ShowOpen
showTxt = dlgcommon2.FileName
txt = dlgcommon2.FileName
If Len(txt) <= 0 Or IsNull(txt) Then Exit Sub
Dim inputFile As Integer
129
inputFile = FreeFile
Open txt For Input As #inputFile
Do While Not EOF(inputFile)
Line Input #inputFile, aline
temp = Split(aline, ",")
Me.MSFlexGrid3.rows = Me.MSFlexGrid3.rows + 1
Me.MSFlexGrid3.TextMatrix(Me.MSFlexGrid3.rows - 1, 0)
= IIf(temp(0) = "", 0, temp(0))
Me.MSFlexGrid3.TextMatrix(Me.MSFlexGrid3.rows - 1, 1)
= IIf(temp(1) = "", 0, temp(1))
Me.MSFlexGrid3.TextMatrix(Me.MSFlexGrid3.rows - 1, 2)
= IIf(temp(2) = "", 0, temp(2))
Me.MSFlexGrid3.TextMatrix(Me.MSFlexGrid3.rows - 1, 3)
= IIf(temp(3) = "", 0, temp(3))
Me.MSFlexGrid3.TextMatrix(Me.MSFlexGrid3.rows - 1, 4)
= IIf(temp(4) = "", 0, temp(4))
Me.MSFlexGrid3.TextMatrix(Me.MSFlexGrid3.rows - 1, 5)
= IIf(temp(5) = "", 0, temp(5))
Loop
Close #inputFile
130
End Sub
Private Sub Form_Load()
Dim i As Integer
For i = 0 To 2
MSFlexGrid2.ColWidth(i) = 1000
Next
MSFlexGrid2.TextArray(0) = "點號"
MSFlexGrid2.TextArray(1) = "縱座標N"
MSFlexGrid2.TextArray(2) = "橫座標 E"
MSFlexGrid2.TextArray(3) = "高程 Z"
MSFlexGrid1.TextArray(0) = "控制樁點號"
MSFlexGrid1.TextArray(1) = "水平角 度"
MSFlexGrid1.TextArray(2) = "水平角 分"
MSFlexGrid1.TextArray(3) = "水平角 秒"
MSFlexGrid1.TextArray(4) = "垂直角 度"
MSFlexGrid1.TextArray(5) = "垂直角 分"
131
MSFlexGrid1.TextArray(6) = "垂直角 秒"
MSFlexGrid1.TextArray(7) = "斜距 mm"
MSFlexGrid1.TextArray(8) = "高度"
MSFlexGrid3.TextArray(0) = "里程"
MSFlexGrid3.TextArray(1) = "中心 N"
MSFlexGrid3.TextArray(2) = "中心 E"
MSFlexGrid3.TextArray(3) = "高程"
MSFlexGrid3.TextArray(4) = "法線N"
MSFlexGrid3.TextArray(5) = "法線 E"
Initialize
Text43 = ""
Text44 = ""
Text45 = ""
Text47 = ""
Text48 = ""
Text49 = ""
End Sub
Private Sub Label12_Click()
132
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As
Integer)
con.Close
End Sub
Private Sub MSFlexGrid1_Click()
MsgBox "(" & MSFlexGrid1.col & "," & MSFlexGrid1.row &
")=" & MSFlexGrid1.Text
End Sub
Private Sub MSFlexGrid2_Click()
MsgBox "(" & MSFlexGrid2.col & "," & MSFlexGrid2.row &
")=" & MSFlexGrid2.Text
End Sub
Private Sub MSFlexGrid3_Click()
MsgBox "(" & MSFlexGrid3.col & "," & MSFlexGrid3.row &
")=" & MSFlexGrid3.Text
End Sub
Private Sub MSFlexGrid4_Click()
MsgBox "(" & MSFlexGrid4.col & "," & MSFlexGrid4.row &
")=" & MSFlexGrid4.Text
End Sub
Private Sub fg3_Click()
MsgBox "(" & fg3.col & "," & fg3.row & ")=" & fg3.Text
133
End Sub
Private Sub fg4_Click()
MsgBox "(" & fg4.col & "," & fg4.row & ")=" & fg4.Text
End Sub
Private Sub fg5_Click()
MsgBox "(" & fg5.col & "," & fg5.row & ")=" & fg5.Text
End Sub
Private Sub Command11_Click()
c1
c2
c3
End Sub
Private Sub Command2_Click()
centerdata_cal
End Sub
Private Sub Command9_Click()
c5
End Sub
Private Sub Command13_Click()
c4 '中心座標資料
End Sub
Private Sub Command17_Click()
134
c7
End Sub
Private Sub Label1_MouseDown(Button As Integer, Shift As Integer, X
As Single, Y As Single)
Label1.ForeColor = vbRed
End Sub
Private Sub Label2_MouseDown(Button As Integer, Shift As Integer, X
As Single, Y As Single)
Label2.ForeColor = vbRed
End Sub
Private Sub Label3_MouseDown(Button As Integer, Shift As Integer, X
As Single, Y As Single)
Label3.ForeColor = vbRed
End Sub
Private Sub Label4_MouseDown(Button As Integer, Shift As Integer, X
As Single, Y As Single)
Label4.ForeColor = vbRed
End Sub
Private Sub Label11_Click()
End
End Sub
Private Sub Label1_Click()
135
Static MyByt As Byte
MyByt = MyByt + 1
Picture2.Picture = ImageList1.ListImages(MyByt).Picture
If MyByt = 3 Then MyByt = 0
'因為圖只有 5張,所以 Index值也只到 5,所以要做歸零。
'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^以
更換圖片形式進行程式說明,以下方式亦同。
Label5 = " 點擊新增檔案新增資料,或直接執行隧道收方資料處
理系統,如需技術性指導可點選說明選項裡的技術支援進行學習.
開啟新檔後,首先輸入基本資料,接著按下ㄧ步繼續動作."
End Sub
Private Sub Label2_Click()
Static MyByt As Byte
MyByt = MyByt + 1
Picture2.Picture = ImageList2.ListImages(MyByt).Picture
If MyByt = 2 Then MyByt = 0
Label5 = " 將隧道斷面收方資料整理,匯入至原始隧道收方資料
處理系統中進行處理"
End Sub
Private Sub Label3_Click()
Static MyByt As Byte
MyByt = MyByt + 1
Picture2.Picture = ImageList3.ListImages(MyByt).Picture
136
If MyByt = 4 Then MyByt = 0
Label5 = " 進行收方資料時請先輸入控制樁資料.
於收方資料處理部份,點擊原始收方資料匯入鈕後匯入資料
接著確認中線資料,於隧道中線資料部份,點擊匯入隧道中線資料,或
手動鍵入"
End Sub
Private Sub Label4_Click()
Static MyByt As Byte
MyByt = MyByt + 1
Picture2.Picture = ImageList4.ListImages(MyByt).Picture
If MyByt = 7 Then MyByt = 0
Label5 = " 各隧道斷面形式之收收方情形 1 至 6種"
End Sub
Private Sub Label7_Click()
End
End Sub
Private Sub Label8_MouseMove(Button As Integer, Shift As Integer, X
As Single, Y As Single)
Label8.ForeColor = vbYellow
End Sub
137
Option Explicit
Private Declare Function GetWindowsDirectory Lib "kernel32" Alias
"GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As
Long) As Long
Private Declare Function GetTempPath Lib "kernel32" Alias
"GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As
String) As Long
Private Declare Function GetSystemDirectory Lib "kernel32" Alias
"GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As
Long) As Long
Private Declare Function GetComputerName Lib "kernel32" Alias
"GetComputerNameA" (ByVal lpBuffer As String, nSize As Long)
As Long
Private Declare Function GetUserName Lib "advapi32.dll" Alias
"GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As
Long
Private Declare Function SetComputerName Lib "kernel32" Alias
"SetComputerNameA" (ByVal lpComputerName As String) As Long
Private Declare Function GetVersionEx Lib "kernel32" Alias
"GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As
Long
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
138
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 ' Maintenance string for PSS
usage
End Type
Private Sub Command2_Click()
Unload Me
End Sub
Private Sub Form_Load()
Dim StrTemp As String * 255
Dim WordLength As Long
Dim WinV As OSVERSIONINFO
WordLength = GetComputerName(StrTemp, 255)
TxtComName = StrTemp
WordLength = GetUserName(StrTemp, 255)
Label2.Caption = Label2.Caption & StrTemp
139
WinV.dwOSVersionInfoSize = Len(WinV)
GetVersionEx WinV
Label7.Caption = Label7.Caption & WinV.dwMajorVersion & "." &
WinV.dwMinorVersion & "." & (WinV.dwBuildNumber And &HFFF)
Select Case WinV.dwPlatformId
Case 0
Label5.Caption = Label5.Caption & "Windows 3.1"
Case 2
Label5.Caption = Label5.Caption & "Windows NT"
Case 1
Select Case WinV.dwMinorVersion
Case 0
Label5.Caption = Label5.Caption & "Windows
95"
Case Else
Label5.Caption = Label5.Caption & "Windows
98/Windows 98 SE/Windows ME"
End Select
Case Else
Label5.Caption = Label5.Caption & "無法識別作業系統"
End Select
End Sub
140
Private Sub Label2_Click()
End Sub
Private Sub Command1_Click()
Form8.Show
End Sub
Private Sub OKButton_Click()
Unload Me
End Sub
Private Sub Command1_Click()
Text8.Text = ""
End Sub
Private Sub Command11_Click()
Text8 = "1" & vbCrLf
End Sub
Private Sub Command12_Click()
Text8 = "2" + vbCrLf
End Sub
141
Private Sub Command2_Click()
Unload Me
End Sub
Private Sub Command21_Click()
WebBrowser1.Navigate "about:<html><body><div
id=""rtvl""></div><script language=""vbscript"">rtvl.innerText =
Eval(""" & Text8.Text & """)</script></body></html>"
'把計算內容轉成 HTML 與 VBScript,然後丟給WebBrowser
End Sub
Private Sub Command3_Click()
Static MyFun As Integer
Select Case MyFun
Case 0
Command3.Caption = "怎麼玩?? "
MyFun = 1
Case 1
Command3.Caption = " 用心去玩 !! "
MyFun = 2
Case 2
Command3.Caption = "鍵盤輸入運算式 對 就跟 Excel 一樣!!"
MyFun = 0
End Select
142
End Sub
Private Sub Command30_Click()
Text8.Text = ""
End Sub
Private Sub Command31_Click()
WebBrowser1.Navigate "about:<html><body><div
id=""rtvl""></div><script language=""vbscript"">rtvl.innerText =
Eval(""" & Text8.Text & """)</script></body></html>"
'把計算內容轉成 HTML 與 VBScript,然後丟給WebBrowser
143