earth_relief: 全球地形起伏數據

Source Code

../_images/earth-relief-gmtplot-0.png

地形起伏數據簡介

GMT對公開的全球地形起伏數據進行預處理,並提供了從1弧秒到1弧度的多種不同分辨率的全球地形起伏網格數據供GMT用戶使用。下表列出了GMT提供的地形數據的名稱、分辨率以及文件大小。

地形數據名稱 分辨率 大小
earth_relief_01d 1 弧度 112 KB
earth_relief_30m 30 弧分 377 KB
earth_relief_20m 20 弧分 783 KB
earth_relief_15m 15 弧分 1.4 MB
earth_relief_10m 10 弧分 2.9 MB
earth_relief_06m 6 弧分 7.5 MB
earth_relief_05m 5 弧分 11 MB
earth_relief_04m 4 弧分 16 MB
earth_relief_03m 3 弧分 28 MB
earth_relief_02m 2 弧分 58 MB
earth_relief_01m 1 弧分 214 MB
earth_relief_30s 30 弧秒 778 MB
earth_relief_15s 15 弧秒 2.6 GB
earth_relief_03s 3 弧秒 6.8 GB
earth_relief_01s 1 弧秒 41 GB
srtm_relief_03s 3 弧秒 6.8 GB
srtm_relief_01s 1 弧秒 41 GB

這些地形起伏數據保存在GMT的服務器上。當用戶第一次使用某個分辨率的地形起伏數據時,GMT會自動從服務器上下載該數據文件,並保存到GMT的緩存文件夾下(由 DIR_CACHE 控制,默認爲 ~/.gmt/server 目錄),然後再讀取該文件。以後再使用該數據時,GMT會自動從緩存文件夾下讀取該數據文件,而無需再次從服務器下載。

數據下載

當用戶第一次使用地形數據時,GMT需要從服務器下載數據,這通常很耗時。因而,建議用戶在閒置時提前將分辨率爲15弧秒到1弧分的地形數據下載到自己的計算機上。

Bash用戶可以直接使用GMT提供的數據下載腳本(注意,下面命令開始處的 $ 符號不是命令提示符,執行時必須加上):

$(gmt --show-sharedir)/tools/gmt_getremote.sh data

Windows下Batch用戶可以直接複製如下命令並在CMD中執行:

gmt which -Gu @earth_relief_01d
gmt which -Gu @earth_relief_30m
gmt which -Gu @earth_relief_20m
gmt which -Gu @earth_relief_15m
gmt which -Gu @earth_relief_10m
gmt which -Gu @earth_relief_06m
gmt which -Gu @earth_relief_05m
gmt which -Gu @earth_relief_04m
gmt which -Gu @earth_relief_03m
gmt which -Gu @earth_relief_02m
gmt which -Gu @earth_relief_01m
gmt which -Gu @earth_relief_30s
gmt which -Gu @earth_relief_15s

對於國內用戶,由於GMT服務器位於國外,下載通常很慢且容易由於網絡原因出現中斷。建議手動從中科大鏡像手動下載:

  1. 訪問中科大GMT鏡像的data目錄 http://mirrors.ustc.edu.cn/gmt/data/
  2. 下載網頁顯示的所有數據文件
  3. Linux或macOS用戶將數據文件放在目錄 ~/.gmt/server 下(若目錄不存在則新建)
  4. Windows 用戶將數據文件放在 C:\Users\用戶名\.gmt\server 目錄下(若目錄不存在則新建)

不建議提前下載1弧秒和3弧秒的地形數據,主要原因在於,這兩套數據佔據硬盤空間太大。基於同樣的理由,GMT服務器上這兩套數據不是以單個文件的形式存放,而是被分成了多個小塊,當用戶需要繪製某個區域的高分辨率地形時,GMT會自動下載該區域的所有區塊的地形數據,然後合併成單個網格數據供用戶使用。

使用方法

當需要使用地形數據時,可以直接通過 @earth_relief_res 的形式調用這些地形起伏數據,其中 res 表示網格檔的分辨率。如果命令中使用了 -R 選項,則只會讀取該區域內的地形起伏數據。例如:

查看60弧分的地形數據的信息:

gmt grdinfo @earth_relief_60m

使用15弧分地形起伏數據繪製全球地形圖:

gmt grdimage -JH15c @earth_relief_15m -pdf map

使用2弧分地形起伏數據繪製一個區域的地形圖:

gmt grdimage -JH15c -R90/120/20/60 @earth_relief_02m -pdf map

緩存空間問題

你可以使用多種方式來控制你的緩存目錄所佔用的空間大小:

  1. 通過參數 GMT_DATA_SERVER_LIMIT 設置允許下載的單個文件的大小上限,默認無限制;
  2. 可以通過 gmt clear data 命令清空整個數據緩存目錄

技術細節

  • 15弧秒的數據來源於 SRTM15+ [http://dx.doi.org/10.1029/2019EA000658]
  • 30弧秒及更低分辨率的全球地形數據均是SRTM15+ 的衍生產品。GMT利用笛卡爾高斯濾波對其進行重採樣以防止混疊現象,並保留了原始15弧秒數據的緯度依賴的分辨率信息。可以使用 grdinfo 查看生成網格檔所使用的濾波命令。
  • 3弧秒和1弧秒的數據來自於NASA提供的SRTM數據。數據被劃爲爲1度x1度的區塊。在使用時,GMT會根據 -R 選項指定的區域範圍只下載區域內的地形數據。
  • 原始的SRTM3和SRTM1數據只在北緯60度到南緯60度的陸地上有數據。當使用 @earth_relief_01s@earth_relief_03s 時,GMT會自動對 @earth_relief_15s 數據對增採樣以填充缺失的海洋部分。
  • 如果想使用最原始的只包含陸地的SRTM地形數據,則可以使用 @srtm_relief_03ssrtm_relief_01s
  • 所有的網格檔都是網格線配準的。網格檔採用了更高效的文件格式,使得其文件大小遠小於原始文件的大小,且完全保持數據分辨率。對於3弧秒和1弧秒的數據,是以JPEG2000 圖片格式保存在GMT服務器上的,一旦數據下載到本地目錄中,則會被轉換爲壓縮的netCDF4 格式,這一步通過GDAL來實現,且要求GDAL支持openjpeg。