【前言】
數值地形模型(DTM)的處理是空間資訊科學的基礎。在本系列的第一課中,我們介紹了 FORTRAN 的處理方式。接下來,我們將焦點轉向傳統的開發工具 Visual Basic 6.0 (VB6),看看如何處理同樣的資料。
本系列涵蓋內容:
- 如何用 FORTRAN 讀取 DTM 資料檔案? (Visual FORTRAN)
- 如何用 Visual Basic 讀取 DTM 資料檔案? (VB6)
- 讀取和寫入二進位檔案 (VB.NET)
- 如何用 Visual Basic 讀取 DTM 資料檔案? (VB.NET)
(2) 如何用 Visual Basic 讀取 DTM 資料檔案?(VB6)
假設我們有一個 DTM 資料檔案,其格式為二進位 (Binary) 整數矩陣。雖然科學界常用 C/C++ 或 FORTRAN,但在許多視窗應用程式開發中,VB6 依然有其便利性。
資料規格假設:
- 格式:二進位整數矩陣。
- 矩陣大小:477 (欄/Column) × 512 (列/Row)。
- 資料型態:2-byte 整數 (Integer)。
程式實作邏輯:
- 宣告陣列:首先宣告一個一維的整數陣列
Elev(477),用來暫存每一列的高程資料。 - 開啟檔案:使用
Open指令以Binary模式開啟 DTM 檔,並設定記錄長度為477 * 2bytes(一列的大小)。 - 讀取資料:利用 VB6 的
Get指令,依序將每一列的二進位高程資料讀入陣列。 - 輸出結果:每讀完一列,就將資料格式化輸出至標準文字檔案中。
- 循環處理:重覆以上步驟,直到 512 列資料全部處理完畢。
【VB6 範例原始碼:ReadDTM】
Private Sub ReadDTM()
' 宣告一維陣列,儲存一列的高程資料 (477個整數)
Dim Elev(477) As Integer
Dim i As Integer ' 欄迴圈變數
Dim j As Integer ' 列迴圈變數
' 以二進位模式開啟原始 DTM 資料檔,設定每筆記錄長度為一列的位元組數
Open "D:\dtm\relev.dat" For Binary As #1 Len = 477 * 2
' 開啟輸出用的純文字檔
Open "D:\dtm\relev.txt" For Output As #2
' 開始讀取 512 列資料
For j = 1 To 512
' 讀取第 j 列資料直接存入 Elev 陣列
Get #1, j, Elev
' 將該列的每個高程點輸出至文字檔
For i = 1 To 477
' 輸出格式:列索引, 欄索引, 高程值
Print #2, j, i, Elev(i)
Next i
Next j
' 關閉檔案
Close #1
Close #2
End Sub
整理說明:
- 技術要點:VB6 的
Get指令在處理二進位陣列時非常高效。透過指定Len,可以精確地控制檔案指標,達成「以列為單位」的快速讀取。 - 路徑修正:本文中的路徑,依據檔案實際所在目錄,以標準的 Windows 路徑格式修改,如
D:\dtm\relev.dat。










