../_images/logo_gmt.png

GMT Quickstart

gmt是一组工具,允许用户操作(x,y)和(x,y,z)数据集(包括过滤、趋势拟合、网格划分、投影等),并生成封装的PostScript文件(eps)插图,从简单的x-y图到轮廓图,再到人工照明的表面和黑白三维透视图,g光线色调、Hachure图案和24位颜色。

在这个快速的格林尼治标准时间教程中,我们将使用数字地形模型(DTM)来生成阴影地形图。

创建地图

作为我们的输入数据集,我们将使用来自GRASS GIS示例数据集的DTM,GDAL可以使用GDAL-GRASS驱动程序访问该数据集。

通过快速查看DTM元数据,打开一个终端并使用GDAL命令 gdalinfo

gdalinfo /home/user/grassdata/nc_basic_spm_grass7/PERMANENT/cellhd/elevation

我们可以看到DTM在投影坐标系中,数据范围在50到160米之间。

我们可以将DTM转换为与GMT兼容的netcdf文件格式 gdal_translate 如下:

gdal_translate -of GMT /home/user/grassdata/nc_basic_spm_grass7/PERMANENT/cellhd/elevation elevation.gmt

对于我们的GMT示例,我们首先将数据集转换为地理坐标经度纬度(epsg:4326),使用 gdalwarp 命令:

gdalwarp elevation.gmt geo_elevation.gmt -t_srs EPSG:4326

制作调色板

要为网格指定颜色映射,我们可以使用 makecpt 命令。我们将用标记“-t”设置颜色的范围和数量,并用标记“-c”分配一个颜色映射。

gmt makecpt -Chaxby -T50/160/10 -Z > elevation.cpt

你可以尝试其他颜色表,看 man gmt makecpt 完整的清单。

定义渐变

对于阴影浮雕示例,我们需要指定显示颜色强度如何沿网格分布。为此,我们将使用 grdgradient 命令。在 grdgradient 我们将使用`-ne`标志通过累积拉普拉斯分布和`-a`标志(方向导数的方位方向)来规范化输出。

gmt grdgradient geo_elevation.gmt -Ne0.8 -A100 -fg -Ggradient.nc

输出是一个netcdf文件,然后可以被用作颜色强度 grdimage 命令如下:

gmt grdimage geo_elevation.gmt -Igradient.nc -JM6i -P -Ba -Celevation.cpt -K > GMT_tut_OSGeoLive.ps

显示颜色栏

最后我们可以添加一个颜色条 psscale:

gmt psscale -DjTC+w5i/0.25i+h+o0/-1i -Rgeo_elevation.gmt -J -Celevation.cpt -I0.4 -By+lm -O >> GMT_tut_OSGeoLive.ps

这里,标志“-d”用于选择颜色条位置。 TC: Top Center, 尺寸 5x0.25 以英寸表示 i 方向 h: horizontal 和标记“-by”设置标签 my axis.

输出PS文档应如下所示:

North Caroline - sample elevation data

尝试的东西

请参阅中的一些示例: /usr/share/doc/gmt/examples

浏览GMT教程,并遵循src代码中提供的几个示例。有30个内置的示例作业要测试:

打开终端,然后

cp -R /usr/share/doc/gmt/examples gmt-examples
cd gmt-examples/ex20
./example_20.sh

在Ghostview中查看结果(http://www.gnu.org/software/gv/),使用命令 gv . 类型 q 退出Ghostview。

gv example_20.ps