ASCII表

ASCII表簡介

ASCII表是最常見的數據形式,可以用編輯器直接編輯。ASCII表常用於表示點或線。表數據中有N行M列,每行稱爲一個記錄,每列稱爲一個字段。一個記錄內的字段之間用空格、製表符、逗號或分號分隔。每個字段可以是整數(12)、浮點數(20.34)、地理座標(12:23:44.5W)、絕對時間(2010-10-20T10:30:53.250)、相對時間(30t)。同時,GMT還可以處理大多數CVS(Comma-Separated Values)文件,包括被雙引號擴起來的數字。

例如:

# This is a comment line
# lon      lat  evdp
# This is another comment line
133.949  34.219  20
133.528  34.676  15
130.233  33.410  43
135.133  35.313  35
131.377  34.398  22
132.792  34.457  34
133.620  34.936  6
131.101  32.811  23
129.435  33.212  55
133.144  33.647  67

記錄中以 # 開頭的行,即第一列是 # 的記錄,會被當做註釋行直接忽略,不算在N個記錄之內。所以這個ASCII表可以認爲有10行3列,三列數據分別代表經度、緯度和深度。

不同的模塊和選項的組合會對數據的列數以及每列的含義都有不同的定義,因而需要根據具體情況去準備數據。準備數據的過程中可能會用到GMT的 -i-o 選項以及 gawk 等工具。

在輸出ASCII 表時,字段之間默認用 TAB 鍵分隔,可以通過修改 IO_COL_SEPARATOR 來設置字段的分隔符,

文件頭記錄

在第一個記錄前,可以有一個或多個與數據無關的記錄,稱爲文件頭記錄(file header records)。

記錄中以 # 開頭的行都被當做註釋忽略,所以不算是文件頭記錄。其他不以 # 開頭但與數據無關的行,則是文件頭記錄。可以使用 -h 選項 選項或設置參數 IO_N_HEADER_RECS 跳過這些文件頭記錄。

下面的ASCII表有一個文件頭記錄,可以使用 -h1 選項跳過該文件頭段記錄:

# This is a comment line
# lon      lat  evdp
# This is another comment line
2015-01-05 10:20:30.456 15 45 60 6.0
133.949  34.219  20
133.528  34.676  15
130.233  33.410  43
135.133  35.313  35
131.377  34.398  22
132.792  34.457  34
133.620  34.936  6
131.101  32.811  23
129.435  33.212  55
133.144  33.647  67

多段數據

以繪製斷層爲例,在繪製斷層的時候,可以將每條斷層線的經緯度信息分別放在單獨的文件中。但當斷層數量很多時,這樣做會導致目錄下有太多數據文件而混亂不堪。爲了解決類似的問題,GMT引入了多段數據的概念。

多段數據,顧名思義,就是一個文件中包含了多個數據段。爲了區分每個數據段,需要在每段數據的開頭加上一個額外的數據段頭記錄(segment header records)來標記一段新數據的開始。

數據段頭記錄總是以某個特定的字符作爲開頭,GMT默認的段頭記錄的標識符爲 >,即所有以 > 開頭的行都會被認爲是一個段頭記錄,其標誌着新一段數據的開始。

下面是一個包含兩個數據段的多段數據,每段數據分別構成一個多邊形:

>
10  20
15  30
5   25
>
20  20
35  30
40  40
35  40

可以使用如下命令繪製上面的多段文件:

gmt plot input.dat -JX10c -R0/50/0/50 -Baf -W1p -Gred -pdf lines

用戶可以通過設置 IO_SEGMENT_MARKER 將段頭記錄的標識符修改爲任意字符,例如 @%等。

IO_SEGMENT_MARKER 可以取兩個特殊的值:

  • B 表示用空行作爲數據段的分隔符
  • N 表示用一個所有列都是NaN的記錄作爲數據段分隔符

數據段頭記錄中的額外屬性

數據段頭記錄不僅用於標記數據段的開始,還可以額外指定該段數據的其他屬性。比如在繪製線段時,可以在段頭記錄中加上如下一系列選項,以分別控制每段線段的屬性:

  • -W 指定當前數據段的畫筆顏色
  • -G 指定當前數據段的填充色
  • -Z 設置當前數據對應的Z值,並從CPT文件中獲取Z值對應的顏色
  • -L 設置當前數據段的標籤信息
  • -T 設置當前數據段的一般描述信息
  • -Ph 表明當前數據段構成的閉合多邊形位於另一個閉合多邊形的內部

下面的多段數據,分別設置兩段數據擁有不同的畫筆顏色和填充色:

> -W2p,red -Glightred
10  20
15  30
12  25
> -W2p,blue -Glightblue
22  20
30  30
40  50
35  44

可以使用如下命令繪製上面的多段數據:

gmt plot input.dat -JX10c -R0/50/0/50 -Baf -W1p -Gred -pdf lines

查看繪圖結果可以發現,數據段頭記錄中的選項參數會覆蓋命令行中相應選項的值。