From 711e8166eebe9e54f340761cb6c48e25911107fc Mon Sep 17 00:00:00 2001 From: Dongdong Tian Date: Sat, 29 Oct 2016 16:52:40 +0800 Subject: [PATCH] updates --- scripts/GMT_pens.sh | 2 +- source/color.rst | 21 +++++++---- source/fill.rst | 18 ++++++---- source/format.rst | 23 ++++++------ source/glossary.rst | 2 +- source/images/GMT_pens.pdf | Bin 6015 -> 6035 bytes source/index.rst | 11 +++--- source/install-windows.rst | 4 +++ source/intro-docs.rst | 4 +-- source/io.rst | 10 ++---- source/julia-wrapper.rst | 72 ++++++++++++++++++++++++++++--------- source/option-P.rst | 45 +++-------------------- source/option-colon.rst | 12 +++---- source/option-t.rst | 4 +-- source/paper.rst | 63 +++++++++++++++++++++++++------- source/pen.rst | 24 +++++++------ source/read-docs.rst | 15 ++++---- source/text.rst | 18 ++++++---- 18 files changed, 207 insertions(+), 141 deletions(-) diff --git a/scripts/GMT_pens.sh b/scripts/GMT_pens.sh index 2780ec8a8a..8fb4d87f42 100755 --- a/scripts/GMT_pens.sh +++ b/scripts/GMT_pens.sh @@ -6,7 +6,7 @@ line=lines.txt cat << EOF > $line 0 0 -10 0 +10 0 EOF gmt psxy -R$R -J$J -P -K -T > $PS diff --git a/source/color.rst b/source/color.rst index c7ba524e4b..14ce68bc7d 100644 --- a/source/color.rst +++ b/source/color.rst @@ -3,7 +3,13 @@ 颜色 ==== -既然是绘图,丰富的颜色是必须的。GMT中,可以通过五种不同的方式来指定颜色。 +既然是绘图,丰富的颜色是必须的。GMT中可以通过五种不同的方式来指定颜色,即: + +#. 颜色名 +#. RGB 值 +#. HSV 值 +#. CMYK 值 +#. 灰度值 颜色名 ------ @@ -57,9 +63,9 @@ CMYK 灰色 ---- -灰色是日常常见的一种颜色,而灰色有可以根据灰的不同程度细分为不同的灰色。指定灰色的办法很简单,用一个数值表示灰度即可,其取值范围为0到255。例如 ``0`` 表示黑色, ``255`` 表示白色, ``128`` 表示灰色。 +灰色是常见的一种颜色,而灰色又可以根据灰的不同程度细分为不同的灰色。指定灰色的办法很简单,用一个数值表示灰度即可,其取值范围为0到255。例如 ``0`` 表示黑色, ``255`` 表示白色, ``128`` 表示灰色。 -除了用灰度表示之外,灰色还可以用前面提到的几种形式表示。 +除了用灰度表示之外,灰色还可以用前面提到的几种形式表示: #. 用RGB表示灰度 @@ -67,7 +73,7 @@ CMYK #. 用GMT颜色名表示灰度 - GMT自定义了多个名字来表示灰度,除了前面说过的 ``gray`` 、 ``lightgray`` 和 ``darkgray`` 之外,还有 ``gray0`` 、 ``gray1`` 一直到 ``gray100`` 。其中 ``gray0`` 即黑色, ``gray100`` 即白色。 + GMT自定义了多个名字来表示不同程度的灰色,除了前面说过的 ``gray`` 、 ``lightgray`` 和 ``darkgray`` 之外,还有 ``gray0`` 、 ``gray1`` 一直到 ``gray100`` 。其中 ``gray0`` 即黑色, ``gray100`` 即白色。 颜色小结 -------- @@ -83,6 +89,9 @@ GMT中可以用五种方法指定颜色,分别是: 透明色 ------ -每一种颜色都可以额外指定不同的透明度。GMT中,可以通过在颜色后加上 ``@`` 再加上透明度来得到不同程度的透明色。透明度的取值范围是0到100,0表示不透明,100表示全透明。例如: ``red@25`` 、 ``30/25/128@60`` 。 +每一种颜色都可以额外指定颜色的透明度。GMT中可以通过在颜色后加上 ``@`` 再加上透明度来得到不同程度的透明色。透明度的取值范围是0到100,0表示不透明,100表示全透明。例如: ``red@25`` 、 ``30/25/128@60`` 。 + +除了可以指定某个颜色的透明度之外,还可以指定整个图层的透明度,见 :doc:`option-t` 。 -除了可以指定某个颜色的透明度之外,还可以指定整个图层的透明度。在使用透明特性时,还有一些额外的注意事项,见 :doc:`option-t` 一节。 +.. source: http://gmt.soest.hawaii.edu/doc/latest/GMT_Docs.html#specifying-pen-attributes +.. source: http://gmt.soest.hawaii.edu/doc/latest/gmtcolors.html diff --git a/source/fill.rst b/source/fill.rst index 63a63a1000..205fbac3c4 100644 --- a/source/fill.rst +++ b/source/fill.rst @@ -3,9 +3,9 @@ 填充 ==== -用彩色的画笔绘制了圆形或多边形之后,还需要为其填充颜色。在GMT模块的语法介绍中,一般用 ```` 表示需要指定填充属性,读者在见到 ```` 时应自动联想到本节介绍的内容。 +用画笔绘制了圆形或多边形之后,还需要为其填充颜色。在GMT模块的语法介绍中,一般用 ```` 表示需要指定填充属性,读者在见到 ```` 时应自动联想到本节介绍的内容。 -填充 ```` 有两种方式/形式:填充颜色和填充图案。GMT中通常使用 ``-G`` 选项来填充颜色,本节以该选项为例。 +填充 ```` 有两种方式/形式:填充颜色和填充图案。GMT 的模块中通常使用 ``-G`` 选项来填充颜色,本节以该选项为例。 填充颜色 -------- @@ -30,7 +30,7 @@ 对于GMT预定义的图案以及用户自定义的1位位图来说,可以用 ``:B[F]`` 设置图案的前景色和背景色,以分别替换默认的黑色和白色像素点。若设置前景色或背景色为 ``-`` ,则视为前景色或背景色为透明。 -下图列出了GMT中预定义的90种位图图案(右键查看大图),所有图案都是使用默认的黑白色在 ```` 取300的环境下生成的。 +下图列出了GMT中预定义的90种位图图案(右键查看大图并放大才能看到差异),所有图案都是使用默认的黑白色在 ```` 取300的环境下生成的。每张小图中左半部分使用 ``-Gp`` 绘制,右半部分使用 ``-GP`` 绘制。 .. figure:: /images/GMT_patterns.png :width: 600 px @@ -58,7 +58,13 @@ GMT中通常使用 ``-G`` 选项填充多边形或符号。有两种填充方式 - ``-Gp300/7:BredF-`` - ``-Gp100/marble.ras`` -说明: +读者可以将下面命令中的 ```` 修改为不同的值并查看效果以理解这一节的内容:: -#. 由于PostScript实现的限制, ``-G`` 选项里使用的光栅图片必须小于146x146像素;若要使用更大的图像,需要使用 ``psimage`` -#. 在PostScript Level 1下,图案填充是通过使用多边形做路径裁剪实现的。复杂的裁剪路径会需要更多的内存,因而可能导致某些PS解释器由于内存不足而退出。在这种情况下,建议使用灰度填充区域。 + echo 5 5 | gmt psxy -JX10c/10c -R0/10/0/10 -Baf -Sc2c -G > test.ps + +.. note:: + + #. 由于PostScript实现的限制, ``-G`` 选项里使用的光栅图片必须小于146x146像素;若要使用更大的图像,需要使用 ``psimage`` + #. 在PostScript Level 1下,图案填充是通过使用多边形做路径裁剪实现的。复杂的裁剪路径会需要更多的内存,因而可能导致某些PS解释器由于内存不足而退出。在这种情况下,建议使用灰度填充区域。 + +.. source: http://gmt.soest.hawaii.edu/doc/latest/GMT_Docs.html#specifying-area-fill-attributes diff --git a/source/format.rst b/source/format.rst index 63cb8ecd74..a8462e4d36 100644 --- a/source/format.rst +++ b/source/format.rst @@ -1,17 +1,18 @@ 数据格式 ======== -既然是个画图工具,肯定要输入一些数据,这就牵涉到数据格式的问题了。 +GMT 作为一个画图工具,肯定要输入一些数据,同时作为一个数据处理工具,也会输出一些数据。这就牵涉到数据格式的问题了。 GMT可以绘制一般的笛卡尔坐标轴、地图的经纬度轴以及绝对时间轴、相对时间轴。对于不同的坐标轴,需要的数据格式也不同。 + 地理坐标 ~~~~~~~~ 地理坐标(即经纬度)有两种表示方式: #. 以浮点型的度数表示:比如 ``-123.45`` 代表-123.45度 -#. 度分秒表示: ``ddd[:mm[:ss[.xxx[W|E|S|N]]]]`` 。其中, ``ddd`` 、 ``mm`` 、 ``ss`` 、 ``xxx`` 分别表示弧度、弧分、弧秒、弧毫秒。 ``W`` 、 ``E`` 、 ``S`` 、 ``N`` 分别代表西经、东经、北纬、南纬。例如 ``123:27:15.120W`` 表示西经123度27分15.12秒。 +#. 度分秒表示: ``ddd[:mm[:ss[.xxx[W|E|S|N]]]]`` 。其中, ``ddd`` 、 ``mm`` 、 ``ss`` 、 ``xxx`` 分别表示弧度、弧分、弧秒、弧毫秒。 ``W`` 、 ``E`` 、 ``S`` 、 ``N`` 分别代表西经、东经、北纬、南纬。例如 ``123:27W`` 代表西经123度27分, ``123:27:15.120W`` 表示西经123度27分15.12秒。 绝对时间坐标 ~~~~~~~~~~~~ @@ -24,15 +25,15 @@ GMT可以绘制一般的笛卡尔坐标轴、地图的经纬度轴以及绝对 #. ``yyyy[-jjj]`` :年-一年中的第几日,例如 ``2015-040`` #. ``yyyy[-Www[-d]]`` :年-第几周-该周内第几天,例如 ``2014-W01-3`` 、 ``2014-W01`` -时间 ```` 的格式为 ``hh:mm:ss.xxx`` ,例如 ``10:10:35.120`` 。 +时间 ```` 的格式为 ``hh:[mm:[ss[.xxx]]]`` ,例如 ``10:10:35.120`` 。 使用过程中需要注意: #. GMT的时间数据的输入/输出格式默认为 ``yyyy-mm-ddThh:mm:ss.xxx`` 。若想要输入其他格式的时间数据,需要修改 :ref:`FORMAT_DATE_IN ` 和 :ref:`FORMAT_CLOCK_IN ` ;若想要输出其他格式的时间数据,需要修改 :ref:`FORMAT_DATE_OUT ` 和 :ref:`FORMAT_CLOCK_OUT ` #. 若未指定 ```` 则假定 ```` 为今日 #. 若未指定 ```` 则认为是 ``00:00:00`` -#. 若指定了 ```` 则必须要加 ``T`` -#. 所有绝对时间在内部都会被转换成相对于某一时刻的秒数 +#. 若指定了 ```` 则必须要加 ``T`` ,比如 ``T10:20:34`` 表示今天的早晨10点多 +#. 所有绝对时间在程序内部都会被转换成相对于特定时刻的秒数 下面举几个绝对日期的例子: @@ -43,21 +44,23 @@ GMT可以绘制一般的笛卡尔坐标轴、地图的经纬度轴以及绝对 相对时间坐标 ~~~~~~~~~~~~ -相对时间坐标即相对于某个参考时刻的秒数、小时数、天数或年数。因而在使用相对时间时,首先要给定两个参数:参考时刻以及相对时间的单位。 +相对时间坐标即某个时间相对于参考时刻的秒数、小时数、天数或年数。因而在使用相对时间时,首先要给定两个参数:参考时刻以及相对时间所使用的单位。 GMT参数 :ref:`TIME_EPOCH ` 用于指定参考时刻, :ref:`TIME_UNIT ` 用于指定相对时间的单位。也可以用参数 :ref:`TIME_SYSTEM ` 同时指定这两个参数。默认的参考时刻为1970年1月1日午夜,默认的相对时间单位为秒。 在指定了参考时刻后,相对时间就跟一般的浮点数没什么区别了。那如何区分一般的浮点数与相对时间呢?有两种方式: -#. 在数据后加上小写的 ``t`` ,比如 ``30t`` 表示相对时间30,单位由 :ref:`TIME_UNIT ` 决定 +#. 在数据后加上小写的 ``t`` ,比如 ``30t`` 表示相对于 :ref:`TIME_EPOCH ` 间隔了 30 个 :ref:`TIME_UNIT ` 时间单位的时刻 #. 在命令行中使用 ``-ft`` 选项表明当前数据是相对时间,此时不需要在数字后加 ``t`` -其他坐标 -~~~~~~~~ +一般坐标值 +~~~~~~~~~~ -除了上面提到的地理坐标、绝对时间坐标、相对时间坐标之外的其他数据,都简单地用浮点数表示,而不去在意其物理含义及单位。比如,5牛顿的力,5千克的质量,在GMT看来都只是浮点数 ``5`` 。 +在绘制常规的笛卡尔坐标轴时,即输入数据不是地理坐标、绝对时间或相对时间时,输入数据可以直接用浮点数表示,而不去在意其物理含义及单位。比如,5牛顿的力,5千克的质量,在 GMT 看来都只是浮点数 ``5`` 。 这些浮点数坐标可以用两种方式表示: #. 一般表示: ``xxx.xxx`` ,比如 ``123.45`` #. 指数表示: ``xxx.xxExx`` ,其中 ``E`` 可以用 ``e`` 、 ``D`` 、 ``d`` 替换,比如 ``1.23E10`` + +.. source: http://gmt.soest.hawaii.edu/doc/latest/GMT_Docs.html#data-domain-or-map-region-the-r-option diff --git a/source/glossary.rst b/source/glossary.rst index 1efd8062ea..df24f1cbfe 100644 --- a/source/glossary.rst +++ b/source/glossary.rst @@ -1,7 +1,7 @@ 词汇表 ====== -在GMT中有不少与绘图有关的专业词汇。这些英文词汇没有固定的中文翻译,因而这里统一给出本文所使用的中文翻译,并在图中指出这次词汇的含义。 +在GMT中有不少与绘图有关的专业词汇。这些英文词汇没有固定的中文翻译,因而这里统一给出本文所使用的中文翻译,并在图中指出这些词汇的含义。 .. figure:: /images/GMT_glossary.* :align: center diff --git a/source/images/GMT_pens.pdf b/source/images/GMT_pens.pdf index 328e5f1c8716e9ec9a91a69ad58e66c43faf03ed..e1bda1c153655b822448c4cc0552c8d652bbb03a 100644 GIT binary patch delta 353 zcmeybH(7s!JwKDN`DRCcTSnew6N@Cnw3I~M6tkq%$%=yVlUE63VTeX?8ykce8Cn?{ zSQ(j2ZWA;>;U5$%M$_Ra6o)3FC@3-ch>!|~sQhFR;c6~J1&ty@b0Z^5&CL^p7clx8 z8yFcH8W@>q8(63t7^rJ<>HFrVxFnXOYPeV#85o)w8epmj$t=l9)o}L>Q7ALjGuAUy zh=H0Jqd9qku*~EMqN$9Qo4<+bGRC-Cn7A6a8W|ZGT9_MKxVc)on7f*r8ylDyI$9W+ l7~0vG6H*b&WoO4#T#{H+Qc;we#${@1VZ^1X>gw;t1ps4*Ts!~( delta 312 zcmbQN|6gx|JwKC?#b!r-TSi_B!{lT$^F$NfWHW>0$%=yVlUE63VTeX?8(4-Inpzo} zSQ!{kZWA;>;U5$%M$_Ra6o)3FC@3-ch>!|~sQhFR;c7;M%`=4;Fmf1J8k!oK0Bvv- zl~RInv<)oO4Gh#Zx%5LaOL9^*+lx8BQ8}{ ISARDy0Q~Aty#N3J diff --git a/source/index.rst b/source/index.rst index 9e73facc79..a07515a447 100644 --- a/source/index.rst +++ b/source/index.rst @@ -10,7 +10,7 @@ GMT |version| 参考手册 \listoftables \cleardoublepage -欢迎来到 GMT(Generic Mapping Tools)的世界。 +欢迎来到 `GMT `_ (Generic Mapping Tools)的世界。 本项目是GMT中文社区维护的GMT中文手册,既可以作为入门读物,也可以作为日常参考。希望通过阅读本手册,能够让用户尽快掌握GMT的用法。 @@ -19,13 +19,15 @@ GMT |version| 参考手册 - 社区主页:http://gmt-china.org - 项目主页:http://docs.gmt-china.org - 项目源码:https://github.com/gmt-china/GMT_Docs -- GMT官方主页:http://gmt.soest.hawaii.edu - GMT官方手册:http://gmt.soest.hawaii.edu/doc/latest/index.html +- GMT模块手册: http://modules.gmt-china.org +- GMT图库: http://gmt-china.org/gallery/ **本手册的章节结构如下:** - :doc:`preface`\ :介绍本文档的起源、文档约定以及阅读方式 - :doc:`introductions`\ :简单介绍GMT的基本信息 +- :doc:`tutorial`\ :通过一些简单的示例帮助初学者快速入门 - :doc:`basics`\ :介绍GMT中的基础知识 - :doc:`advances`\ :介绍GMT中的进阶知识 - :doc:`options`\ :介绍GMT所有模块的通用选项 @@ -34,11 +36,6 @@ GMT |version| 参考手册 - :doc:`appendix`\ :与GMT相关但很少用到的一些知识 - :ref:`索引 `\ :关键词索引,方便通过关键字查找 -**除了本手册之外,还可以阅读GMT中文社区的其他资源:** - -- GMT模块手册: http://modules.gmt-china.org -- GMT示例: http://gmt-china.org/gallery/ - .. toctree:: :maxdepth: 3 :numbered: 3 diff --git a/source/install-windows.rst b/source/install-windows.rst index d360043628..88b7f0f1f7 100644 --- a/source/install-windows.rst +++ b/source/install-windows.rst @@ -29,3 +29,7 @@ GMT 为 Windows 用户提供了安装包,可以直接安装使用。Windows 3. 安装gsview 双击直接安装即可。 + +4. 安装 UnixTools + + 解压压缩包,并将解压得到的 exe 文件移动到 GMT 的 bin 目录即可。 diff --git a/source/intro-docs.rst b/source/intro-docs.rst index e347525d0c..c915cdda6c 100644 --- a/source/intro-docs.rst +++ b/source/intro-docs.rst @@ -14,7 +14,7 @@ 因而,我于2014年开始写针对GMT5的中文文档。新的GMT中文文档具有如下特点: -#. 开源:源代码用rST语言写成,并在GitHub上开源 +#. 开源:源代码用 `rST `_ 语言写成,并在GitHub上开源 #. 高质量排版:文档有网页版和PDF版,保证高质量的排版 #. 完整性:尽可能覆盖GMT的方方面面,成为一个完整的参考手册 #. 协同合作:依托强大的GitHub和Git,使得多人合作共同编辑同一份文档变得很简单 @@ -23,7 +23,7 @@ 经过两年努力,文档的整体结构已经大体完成。我希望文档今后能够持续更新,不断完善,能随着GMT版本的升级而不断更新,但这些已非我一人之力所能完成。故而成立GMT中文社区,将维护工作转移至社区,希望能够有更多的志愿者加入到文档的维护工作中来。 -本文档会针对每一个GMT版本发布相应的文档。目前最新的版本是GMT 5.3.1,读者可以从社区主页的 `下载页面 `_ 下载网页版和PDF版的文档供离线阅读。 +本文档会针对每一个GMT版本发布相应的文档。目前最新的版本是GMT |GMT5_latest_release|,读者可以从社区主页的 `下载页面 `_ 下载网页版和PDF版的文档供离线阅读。 本文档会不断更新, `项目主页 `_ 中总是展示最新最完善的网页版版本。 diff --git a/source/io.rst b/source/io.rst index ef3dc5a3a1..15e3196102 100644 --- a/source/io.rst +++ b/source/io.rst @@ -13,11 +13,9 @@ GMT 每个模块都有很多输入和输出。总的来说,输入输出可以 表数据 ------ -英文称为table data,也称为列数据或多列数据,常用于表示点和线。 +英文称为table data,也称为列数据或多列数据,常用于表示点和线。表数据中有N个记录,每个记录都有M个字段。 -表数据中有N个记录,每个记录都有M个字段。表数据可以有三种形式:ASCII表、二进制表和netCDF表。 - -最常用的表数据形式是ASCII表,可以用编辑器直接编辑。ASCII表中有N行M列,每行是一个记录,每列是一个字段。一个记录内的字段之间用空格、制表符、逗号或分号分隔。 +表数据可以有三种形式:ASCII表、二进制表和netCDF表。最常用的表数据形式是ASCII表,可以用编辑器直接编辑。ASCII表中有N行M列,每行是一个记录,每列是一个字段。一个记录内的字段之间用空格、制表符、逗号或分号分隔。 下面这个ASCII表数据有10行3列,三列数据分别代表经度、纬度和深度:: @@ -61,9 +59,7 @@ CPT文件的作用在于定义了任意一个Z值所对应的颜色,常用于 PostScript 代码 --------------- -GMT的绘图模块会生成 PS 代码到标准输出流。为了将结果保存到 PS 文件中,需要将 PS 代码重定向到 PS 文件中。 - -PS代码几乎只能作为GMT模块的输出,偶尔可以作为输入。 +GMT的绘图模块会生成 PS 代码到标准输出流。为了将结果保存到 PS 文件中,需要将 PS 代码重定向到 PS 文件中。PS代码几乎只能作为GMT模块的输出,偶尔可以作为输入。 警告和错误消息 -------------- diff --git a/source/julia-wrapper.rst b/source/julia-wrapper.rst index 8d94215381..d056c0cbcb 100644 --- a/source/julia-wrapper.rst +++ b/source/julia-wrapper.rst @@ -6,12 +6,14 @@ GMT的Julia接口 `Julia `_ 是一门为科学计算设计的编程语言,简单易学。其与 Matlab、Python 等编程语言都有相似之处。GMT 提供了 Julia 接口,使得 Julia 用户可以直接在 Julia 脚本中调用 GMT 的相关模块。 +GMT 的 Julia 接口的官方地址为: https://github.com/joa-quim/GMT.jl + 安装 ---- 关于 Julia 的安装请参考 `Julia 官方网站 `_ 的相关说明。 -启动 Julia 并按照如下方式即可安装GMT 的 Julia 接口(即 Julia 下的 GMT 模块):: +启动 Julia 并按照如下方式即可安装 GMT 的 Julia 接口(即 Julia 下的 GMT 模块):: $ julia _ @@ -19,25 +21,23 @@ GMT的Julia接口 (_) | (_) (_) | Documentation: http://docs.julialang.org _ _ _| |_ __ _ | Type "?help" for help. | | | | | | |/ _` | | - | | |_| | | | (_| | | Version 0.4.6 (2016-06-19 17:16 UTC) - _/ |\__'_|_|_|\__'_| | - |__/ | x86_64-redhat-linux + | | |_| | | | (_| | | Version 0.5.0 (2016-09-19 18:14 UTC) + _/ |\__'_|_|_|\__'_| | Official http://julialang.org/ release + |__/ | x86_64-pc-linux-gnu julia> Pkg.init() - INFO: Initializing package repository /home/seisman/.julia/v0.4 - INFO: Cloning METADATA from git://github.com/JuliaLang/METADATA.jl + INFO: Initializing package repository /home/seisman/.julia/v0.5 + INFO: Cloning METADATA from https://github.com/JuliaLang/METADATA.jl julia> Pkg.clone("git://github.com/joa-quim/GMT.jl.git") INFO: Cloning GMT from git://github.com/joa-quim/GMT.jl.git INFO: Computing changes... - INFO: No packages to install, update or remove + INFO: Cloning cache of Compat from https://github.com/JuliaLang/Compat.jl.git + INFO: Installing Compat v0.9.3 INFO: Package database updated -安装完成后,还需要通过如下命令:: - - echo 'push!(Libdl.DL_LOAD_PATH, "/opt/GMT-5.3.1/lib64")' >> ~/.juliarc.jl - -将 GMT 的动态库文件所在目录添加到 Julia 的搜索路径中。 + julia> using GMT + INFO: Precompiling module Compat. 使用 ---- @@ -53,9 +53,9 @@ GMT的Julia接口 说明: -#. ``using GMT`` 的作用是在 Julia 中导入 GMT 模块,使得可以在 Julia 中通过 ``gmt()`` 函数调用 GMT 的所有模块。 +#. ``using GMT`` 的作用是在 Julia 中导入 GMT 模块,使得可以在 Julia 中通过 ``gmt()`` 函数调用 GMT 的所有模块 #. 安装完 GMT 即可后第一次使用 ``using GMT`` 时,Julia 会对 GMT 即可进行预编译,因而会消耗一段时间,但之后再调用时,速度就非常快了 -#. 函数 ``gmt()`` 用于调用 GMT 模块,其第一个参数与GMT命令行版本的参数几乎一致,之后的参数是当前命令所需的输入数据 +#. 函数 ``gmt()`` 用于调用 GMT 模块,其第一个参数与 GMT 命令行版本的参数几乎一致,之后的参数是当前命令所需的输入数据 #. 最后,调用函数 ``gmt("destroy")`` 以清理不需要的内存 最简单的例子 @@ -72,6 +72,14 @@ GMT的Julia接口 gmt pscoast -Rg -JA280/30/3.5i -Bg -Dc -A1000 -Gnavy -P > GMT_lambert_az_hemi.ps +.. note:: + + Julia 接口能够正确使用的前提是 Julia 可以找到 GMT 的动态链接库文件。所以若以上命令报错,则可以执行:: + + echo 'push!(Libdl.DL_LOAD_PATH, "/opt/GMT-5.3.1/lib64")' >> ~/.juliarc.jl + + 将 GMT 的动态库文件所在目录添加到 Julia 的搜索路径中。 + 向 GMT 传递数据 +++++++++++++++ @@ -89,7 +97,7 @@ GMT 的 ``surface`` 命令会读入一个文本数据,对其进行插值以生 G = gmt("surface -R0/150/0/150 -I1", t); gmt("grdimage -JX8c -Ba -P -Cblue,red > crap_img.ps", G) -本例生成了一个 *100x3* 的随机数数组(矩阵) ``t`` ,并将其作为 ``gmt()`` 函数的第二个参数,即将数组 ``t`` 作为 ``surface`` 命令的输入数据(即命令行中的 ``input.txt`` )。同时,将 ``surface`` 命令的输出数据(即命令行中生成的网格数据 ``-Goutput.grd`` )保存到网格变量 ``G`` 中。 +本例生成了一个 *100x3* 的随机数矩阵 ``t`` ,并将其作为 ``gmt()`` 函数的第二个参数,即将矩阵 ``t`` 作为 ``surface`` 命令的输入数据(即命令行中的 ``input.txt`` )。同时,将 ``surface`` 命令的输出数据(即命令行中生成的网格数据 ``-Goutput.grd`` )保存到网格变量 ``G`` 中。 紧接着调用了 ``grdimage`` 模块绘制网格变量 ``G`` 。注意,在命令中使用或不使用 ``-G`` 选项是完全等效的。即上面例子中的最后一个命令也可以写成: @@ -102,7 +110,7 @@ GMT 的 ``surface`` 命令会读入一个文本数据,对其进行插值以生 若需要向 GMT 命令传递多个数据,则输入参数的顺序就变得很重要。 -下面的例子在之前例子的基础上先生成了一个CPT文件,再利用 ``-C`` 选项绘图。 +下面的例子在之前例子的基础上先生成了一个 CPT 文件,再利用 ``-C`` 选项绘图。 .. code-block:: julia @@ -112,6 +120,10 @@ GMT 的 ``surface`` 命令会读入一个文本数据,对其进行插值以生 cpt = gmt("grd2cpt -Cblue,red", G); gmt("grdimage -JX8c -Ba -P -C -G > crap_img.ps", cpt, G) +.. error:: + + 本示例可能存在问题! + 命令行版本中的命令应该是:: gmt grdimage -JX8c -Ba -P -Cbluered.cpt -Goutput.grd > crap_img.ps @@ -142,6 +154,32 @@ GMT 的 ``surface`` 命令会读入一个文本数据,对其进行插值以生 lines = Any["5 6 Some label", "6 7 Another label"]; gmt("pstext -R0/10/0/10 -JM6i -Bafg -F+f18p -P > text.ps", lines) +在 Julia 脚本结束时,可以使用:: + + gmt("destroy") + +以清理不必要的内存。 + +更多示例 +-------- + +GMT 官方将 GMT 自带的 46 个示例用 Julia 重写了一遍,Julia 用户可以阅读并运行这些 Julia 代码。 + +Julia 示例位于: ``~/.julia/v0.5/GMT/test/gallery.jl`` 中,你可以直接阅读 Julia 源码。 + +如果想要执行该 Julia 脚本,你需要将 ``~/.julia/v0.5/GMT/test/gallery.jl`` 的第7行修改为:: + + global g_root_dir = "/opt/GMT-5.3.1/share/" + global out_path = "" + +并安装如下方式运行示例: + +.. code-block:: julia + + using GMT + include("/home/seisman/.julia/v0.5/GMT/test/gallery.jl") + gallery("ex01") + 附录 ---- @@ -205,3 +243,5 @@ CPT变量 ``GMTJL_CPT`` 的定义为:: range::Array{Float64,2} rangeMinMax::Array{Float64,1} end + +.. source: http://gmt.soest.hawaii.edu/doc/latest/julia_wrapper.html diff --git a/source/option-P.rst b/source/option-P.rst index 265a7920e4..ef505353d1 100644 --- a/source/option-P.rst +++ b/source/option-P.rst @@ -1,47 +1,12 @@ ``-P`` 选项 =========== -在 :doc:`paper` 一节中说过,画布有两种放置方式:Portrait模式和Landscape模式。 +``-P`` 选项用于设置纸张方向为 Portrait 模式。 -.. figure:: /images/GMT_-P.* - :width: 500px - :align: center +由于历史原因,GMT 默认使用 Landscape 模式,详情见 :doc:`paper` 。可以通过 ``-P`` 选项设定使用Portrait模式,也可以通过设置GMT参数 :ref:`PS_PAGE_ORIENTATION ` 来修改纸张方向。 - ``-P`` 选项指定画布方向 +.. important:: -由于历史原因,GMT默认使用Landscape模式,可以通过 ``-P`` 选项设定使用Portrait模式,也可以通过设置GMT参数 :ref:`PS_PAGE_ORIENTATION ` 来修改纸张方向。 + ``-P`` 选项设置的是\ **画布的属性**\ ,对于由多个命令绘制而成的图片来说,只有第一个命令的 ``-P`` 选项是有效的。因而其他绘图命令中使用或不使用 ``-P`` 选项,不会影响绘图效果。 -``-P`` 选项设置的是\ **画布的属性**\ ,对于由多个命令绘制而成的图片来说,只有第一个命令的 ``-P`` 选项是有效的。因而其他绘图命令中使用或不使用 ``-P`` 选项,不会影响绘图效果。 - -Linux下默认的PS阅读器evince可以自动识别两种模式,Landscape模式的PS文件横着放,Portrait模式的文件竖着放,所以看上去总是对的。而 ``gs`` 无法自动识别两种模式,总是将文件竖着放,因而用gs看Landscape模式的PS文件时就会很别扭。 - -以下是进阶内容,仅供高级用户阅读。 - -将一个Landscape模式的PS文件与一个Portait模式的PS文件对比:: - - $ gmt psbasemap -R0/10/0/10 -JX10c/10c -B1 > 01.ps - $ gmt psbasemap -R0/10/0/10 -JX10c/10c -B1 -P > 02.ps - -两个文件的差异如下:: - - $ diff 01.ps 02.ps - 11c11 - < %%Orientation: Landscape - --- - > %%Orientation: Portrait - 658c658 - < V 595 0 T 90 R 0.06 0.06 scale - --- - > V 0.06 0.06 scale - 661,662c661,662 - < /PSL_page_xsize 14033 def - < /PSL_page_ysize 9917 def - --- - > /PSL_page_xsize 9917 def - > /PSL_page_ysize 14033 def - 669c669 - < %%GMT: psbasemap -R0/10/0/10 -JX10c/10c -B1 - --- - > %%GMT: psbasemap -R0/10/0/10 -JX10c/10c -B1 -P - -可以发现,两个PS文件的差异主要在于 ``595 0 T 90 R`` 以及交换了 ``PSL_page_xsize`` 和 ``PSL_page_ysize`` 的值。 ``595 0 T 90 R`` 的含义应该是将坐标系移动( **T**\ ransition)到 ``(595,0)`` 再旋转( **R**\ otate)90度,即由Portrait模式变成Landscape模式。 +.. source: http://gmt.soest.hawaii.edu/doc/latest/GMT_Docs.html#portrait-plot-orientation-the-p-option diff --git a/source/option-colon.rst b/source/option-colon.rst index 13bc47393c..660237d749 100644 --- a/source/option-colon.rst +++ b/source/option-colon.rst @@ -1,15 +1,13 @@ ``-:`` 选项 =========== -GMT在读入数据时,会认为第一列是X值,第二列是Y值。对于地理数据而言,即第一列是经度、第二列是纬度。 - -若要读入的数据中第一列是纬度、第二列是经度,则需要先交换第一列和第二列再读入,可以使用 ``-:`` 选项实现前两列数据的交换。 +GMT 在读入数据时,会认为第一列是X值,第二列是Y值。对于地理数据而言,即第一列是经度、第二列是纬度。若要读入的数据中第一列是纬度、第二列是经度,则需要先交换第一列和第二列再读入,可以使用 ``-:`` 选项实现前两列数据的交换。 默认情况下,该选项同时对输入输出生效: -- ``-:i`` 表明该选项仅交换输入数据的前两列,等效于 ``-i1,0`` -- ``-:o`` 表明该选项仅交换输出数据的前两列,等效于 ``-o1,0`` +- ``-:i`` 表明该选项仅交换输入数据的前两列,等效于使用 ``-i1,0`` 选项 +- ``-:o`` 表明该选项仅交换输出数据的前两列,等效于使用 ``-o1,0`` 选项 -说明: +.. note:: -#. 该选项仅用于交换输入/输出的前两列数据, ``-R`` 选项中始终是经度在前,网格文件中经度始终是第一维度 + 该选项仅用于交换输入/输出的前两列数据, ``-R`` 选项中始终是经度在前,网格文件中经度始终是第一维度。 diff --git a/source/option-t.rst b/source/option-t.rst index f703a62674..60625993be 100644 --- a/source/option-t.rst +++ b/source/option-t.rst @@ -3,6 +3,6 @@ ``-t`` 选项 =========== -``-t`` 用于设置某个图层的透明度,其后接0到100内的数字,默认值为0,即不透明,100表示全透明。 +``-t`` 用于设置当前图层的透明度,其后接0到100内的数字。默认值为0,即不透明,100表示全透明。 -由于PostScript语言本身是不支持透明的,所以即便使用了 ``-t`` 选项,也无法在生成的PS文件中看到透明效果。想要看到透明效果,需要先用 ``psconvert`` 将PS文件转换为其他图片格式。 +由于 PostScript 语言本身并不支持透明效果,所以即便使用了 ``-t`` 选项,也无法在生成的 PS 文件中看到透明效果。想要看到透明效果,需要先用 ``psconvert`` 模块将 PS 文件转换为 PDF 等其他图片格式。 diff --git a/source/paper.rst b/source/paper.rst index 6eacf56e6c..d8bc8b9cf8 100644 --- a/source/paper.rst +++ b/source/paper.rst @@ -1,26 +1,34 @@ 画布 ==== -要画一张图,首先需要准备一个画布。前面已经说过,GMT的画布就是PS文件。GMT默认的画布是A4大小的横置的白色PS文件。 +要画一张图,首先需要准备一个画布。GMT 的画布就是 PS 文件。GMT 默认的画布是 A4 大小的横置的白色PS文件。 -本节介绍的内容,涉及到后面的一些知识,因而这里只是做介绍,具体如何操作在后面的章节中会提到。 +.. note:: + + 本节介绍的内容,涉及到后面的一些知识。因而这里只是做简单介绍,具体的操作看不懂也没关系。 画布尺寸 -------- -GMT默认的画布尺寸为A4,即 ``210mmx297mm`` 。修改GMT参数 :ref:`PS_MEDIA ` 可以控制画布尺寸,GMT提供了几十种预定义的画布尺寸可供选择,还支持自定义尺寸,见 :ref:`PS_MEDIA ` 的说明。 +GMT默认的画布尺寸为A4,即 ``210mmx297mm`` 。 + +通过修改 GMT 参数 :ref:`PS_MEDIA ` 可以控制画布的默认尺寸。GMT提供了几十种预定义的画布尺寸,还支持自定义尺寸,详情见 :ref:`PS_MEDIA ` 的说明。 -一般不建议随便修改纸张尺寸,一方面期刊对于图件的尺寸可能有要求,另一方面其他尺寸的纸张的打印效果可能很差。 +一般不建议随便修改纸张尺寸,一方面期刊对于图件的尺寸可能有要求,另一方面非 A4 尺寸的图直接打印的效果可能很差。 画布颜色 -------- -默认的画布颜色为白色。可以通过设置 :ref:`PS_PAGE_COLOR ` 来修改画布颜色。 +默认的画布颜色为白色,可以通过设置 :ref:`PS_PAGE_COLOR ` 来修改画布颜色。 + +.. warning:: + + 若设置画布颜色为其他颜色,则使用 ``psconvert`` 将 PS 文件转化为其他图片格式时无法使用 ``-A`` 选项进行裁边。 画布方向 -------- -取一张A4(210mmx297mm)纸放在桌面上,有两种放置的方式:竖着放和横着放。如图所示: +取一张 A4 纸放在桌面上,有两种放置的方式:竖着放和横着放。如图所示: .. figure:: /images/GMT_-P.* :width: 500px @@ -30,13 +38,36 @@ GMT默认的画布尺寸为A4,即 ``210mmx297mm`` 。修改GMT参数 :ref:`PS_ 图中左边把纸张竖着放的称为Portrait(肖像)模式,右边把纸张横着放的方式称为Landscape(风景)模式。记起来也很简单,人是瘦长的,所以人的肖像照需要竖着拍,风景是矮胖的,就需要横着拍。 -对于Portrait模式和Landscape模式,还有另外一种理解方式,即认为画布总是竖着放的。若X轴从左到右递增,与画布的短边平行,Y轴从下往上递增,与画布的长边平行,则称之为Portrait模式;若X轴从下往上递增,与画布的长边平行,Y轴从右往左递增,与画布的短边平行,则称为Landscape模式。Landscape模式可以认为是在Portrait模式的基础上先将坐标原点沿X轴移动到右下角,在将坐标系旋转90度得到。 +.. note:: -由于历史原因,GMT中画布的默认放置方式是Landscape模式。修改画布的方向有两种方式: + 对于Portrait模式和Landscape模式,还有另外一种理解方式,即认为画布总是竖着放的。 + + - Portrait模式:此模式下坐标原点位于纸张左下角,X轴从左到右递增,与画布的短边平行,Y轴从下往上递增,与画布的长边平行 + - Landscape模式:此模式下坐标原点位于纸张右下角,X轴从下往上递增,与画布的长边平行,Y轴从右往左递增,与画布的短边平行 + + 这种理解方式下,Landscape模式可以认为是在Portrait模式的基础上先将坐标原点沿X轴移动到右下角,在将坐标系旋转90度得到。 -#. 在第一个\ **绘图**\ 命令中使用 ``-P`` 选项 +由于历史原因,GMT中画布的默认放置方式是Landscape模式。有两种方式可以修改画布方向: + +#. 在第一个\ **绘图**\ 命令中使用 :doc:`option-P` #. 修改GMT参数中的 :ref:`PS_PAGE_ORIENTATION ` +.. tip:: + + Linux下默认的PS阅读器evince可以自动识别两种模式,Landscape模式的PS文件横着放,Portrait模式的文件竖着放,所以看上去总是对的。而 ``gs`` 无法自动识别两种模式,总是将文件竖着放,因而用gs看Landscape模式的PS文件时就会很别扭。 + +.. note:: + + 从底层来看,Landscape模式和Portait模式的PS文件之间的差异在于,Landspace 模式下的PS代码为:: + + V 595 0 T 90 R 0.06 0.06 scale + + 而 Portrait 模式下的 PS 代码为:: + + V 0.06 0.06 scale + + ``595 0 T 90 R`` 的含义应该是将坐标系移动( **T**\ ransition)到 ``(595,0)`` 再旋转( **R**\ otate)90度,即由Portrait模式变成Landscape模式。 + 底图原点 -------- @@ -48,13 +79,19 @@ GMT默认的画布尺寸为A4,即 ``210mmx297mm`` 。修改GMT参数 :ref:`PS_ 底图原点 -图中所示是一个完整的A4画布。其中灰色实线的间距是1 cm,灰色虚线(右键查看大图)的间距是0.5 cm。图中的底图用如下命令得到:: +图中所示是一个完整的A4画布。其中灰色实线的间距是 1 cm,灰色虚线(右键查看大图)的间距是 0.5 cm。图中的底图用如下命令得到:: gmt psbasemap -R0/10/0/10 -JX10c/10c -B1 -B+glightblue > map.ps -该命令中, ``-JX10c/10c`` 规定了底图的宽和高都是10 cm,可以看到,底图的左边界位于 ``1i`` ,右边界位于 ``1i+10c`` 处,下边界位于 ``1i`` ,上边界位于 ``1i+10c`` 处。需要说明的是,此处提到的底图原点是指矩形底图的坐标轴的左下角相对于画图左下角的位置,而不包括坐标轴的标注或标签部分。 +该命令中, ``-JX10c/10c`` 规定了底图的宽和高都是 10 cm,可以看到,底图的左边界位于 ``1i`` ,右边界位于 ``1i+10c`` 处,下边界位于 ``1i`` ,上边界位于 ``1i+10c`` 处。 + +.. important:: -可以通过两种方式修改底图的原点: + 此处提到的底图原点是指矩形底图的坐标轴的左下角相对于画图左下角的位置,而不包括坐标轴的标注或标签部分。 + +有两种方式可以修改底图的原点位置: #. 修改GMT参数 :ref:`MAP_ORIGIN_X ` 和 :ref:`MAP_ORIGIN_Y ` -#. 命令中使用 ``-X`` 和 ``-Y`` 选项 +#. 命令中使用 :doc:`option-KO` + +.. source: http://gmt.soest.hawaii.edu/doc/latest/GMT_Docs.html#portrait-plot-orientation-the-p-option diff --git a/source/pen.rst b/source/pen.rst index 6aa1893257..9152107d57 100644 --- a/source/pen.rst +++ b/source/pen.rst @@ -5,24 +5,24 @@ 有画笔才能画线条,才可以画出三角形、圆形等各种复杂的形状。 -GMT中的画笔有三个属性:笔宽、颜色和线型,三者用逗号分隔,即 ``,,