✍️ 陈箫翰 , 赵志远 • 📅 2022-10-31

# 绘制自定义符号

某些地学绘图中常用的符号（例如指北针符号） GMT 默认没有提供，如果需要绘制此类符号， 就需要读者 制作和使用自定义符号 ，编写自定义符号的配置文件，之后再使用 `gmt plot -Sk` 绘制。

以指北针符号为例，它的配置文件如下:

    # N: 1 意思是本符号需要一个附加参数（经纬度坐标之后的参数）
    # a 意思是该附加参数是地理方位角（从正北开始顺时针角度）
    N: 1 a
    # $1 代表第一个附加参数的值（本例中仅有一个），O 代表进行旋转
    # $1 O 表示先顺时针旋转 $1 角度
    $1 O
    # 以下宏命令绘制指北针的黑色右半边
    # 设置一个位于(0,0.5)的新绘图锚点(M)，并设置填充色为黑色(-Gblack)
    0 0.5 M -Gblack
    # 从上一个点绘制一条线(D)到(0.25,-0.5)
    0.25 -0.5 D
    # 从上一个点绘制一条线(D)到(0,-0.3)
    0 -0.3 D
    # 以下宏命令绘制指北针的白色左半边
    # 设置一个位于(0,-0.3)的新绘图锚点(M)
    0 -0.3 M
    # 从上一个点绘制一条线(D)到(-0.25,-0.5)
    -0.25 -0.5 D
    # 从上一个点绘制一条线(D)到(0,0.5)
    0 0.5 D

将以上配置文件的内容保存为 `compass.def` 的文件，之后即可使用 `gmt plot -Skcompass/符号大小` 绘制。

示例代码如下：

    gmt begin custom
        # 生成指北针符号自定义文件
        cat > compass.def << 'EOF'
    N: 1 a
    $1 O
    0 0.5 M -Gblack
    0.25 -0.5 D
    0 -0.3 D
    0 -0.3 M
    -0.25 -0.5 D
    0 0.5 D
    EOF

        # 绘制底图
        gmt basemap -R-1/1/-1/1 -JM5c -Baf

        # 在(0,0)位置绘制大小为1c的compass符号，旋转角0度
        echo 0 0 0 | gmt plot -Skcompass/1c

    gmt end show