diff --git a/source/installation.rst b/source/install-linux.rst similarity index 62% rename from source/installation.rst rename to source/install-linux.rst index 24ac3317c0..42b7497130 100644 --- a/source/installation.rst +++ b/source/install-linux.rst @@ -1,37 +1,69 @@ -安装GMT -======= +Linux 下安装GMT +=============== + +安装预编译版 +------------ + +大多数 Linux 发行版都可以通过系统自带的软件包管理器直接安装 GMT。但通常系统软件源里自带的 GMT 版本都比较老,因而如果可能,还是建议 Linux 用户手动编译安装。 + +可以到 https://pkgs.org/ 查询自己的 Linux 发行版软件源中是否包含 GMT 以及 GMT 的具体版本。 + +CentOS 7 用户:: + + sudo yum install epel-release + sudo yum install GMT GMT-devel GMT-doc + sudo yum install dcw-gmt gshhg-gmt-nc4 gshhg-gmt-nc4-full gshhg-gmt-nc4-high -这一节介绍如何在Linux/Windows/Mac OS下安装GMT 5.3.1。 +Ubuntu 用户:: -Linux ------ + sudo apt-get install gmt gmt-dcw gmt-gshhg -大多数Linux发行版的软件源中都有GMT,因而可以通过系统自带的软件包管理器来安装。但通常系统软件源里自带的GMT都比较老,所以在Linux还是建议自己手动编译安装。 +其他发行版请自行到 https://pkgs.org/ 搜索 GMT 并安装所有与 GMT 相关的包。 -编译过程有些复杂,一般用户可以尝试使用为CentOS和Ubuntu用户准备的 `快速安装脚本 `_ 。其他发行版的用户也可以测试一下。 +从源码编译 +---------- + +为了使用最新版本的 GMT,建议用户从源码编译 GMT。 解决依赖关系 ~~~~~~~~~~~~ -GMT主要依赖于 cmake(>=2.8.5)、fftw(>=3.3)、glib2(>=2.32)、netCDF(>4.0且支持netCDF-4/HDF5)、ghostscript等。 +GMT 主要依赖于 cmake(>=2.8.5)、fftw(>=3.3)、glib2(>=2.32)、netCDF(>4.0且支持netCDF-4/HDF5)、ghostscript等。 + +.. warning:: + + 由于 Linux 发行版众多,以下仅所列仅供参考,请自行确认自己的发行版上软件包的具体名字。 对于Ubuntu/Debian:: # 更新 $ sudo apt-get update + # 必须安装的包 - $ sudo apt-get install gcc g++ cmake make libc6 ghostscript libnetcdf-dev - # 可选包 - $ sudo apt-get install libgdal-dev python-gdal liblapack3 libglib2.0-dev - $ sudo apt-get install libpcre3-dev libfftw3-dev + $ sudo apt-get install gcc g++ cmake make libc6 + $ sudo apt-get install ghostscript + $ sudo apt-get install libnetcdf-dev + + # 可选包(即便安装不成功也不影响 GMT 的使用) + $ sudo apt-get install libgdal-dev python-gdal + $ sudo apt-get install liblapack3 + $ sudo apt-get install libglib2.0-dev + $ sudo apt-get install libpcre3-dev + $ sudo apt-get install libfftw3-dev 对于CentOS/RHEL/Fedora:: # 必须安装的包 - $ sudo yum install gcc gcc-c++ cmake make glibc ghostscript netcdf-devel + $ sudo yum install gcc gcc-c++ cmake make glibc + $ sudo yum install ghostscript + $ sudo yum install netcdf-devel + # 可选包 - $ sudo yum install glib2-devel gdal-devel gdal-python lapack64-devel lapack-devel - $ sudo yum install pcre-devel fftw-devel + $ sudo yum install gdal-devel gdal-python + $ sudo yum install lapack64-devel lapack-devel + $ sudo yum install glib2-devel + $ sudo yum install pcre-devel + $ sudo yum install fftw-devel 确认 netCDF 支持 netCDF-4/HDF5 格式:: @@ -87,6 +119,12 @@ Linux安装GMT需要下载三个文件(这里提供的国内下载源): - ``COPY_DCW`` 为TRUE会将DCW数据复制到 ``GMT/share/dcw`` 下 - ``GMT_USE_THREADS`` 表示是否开启某些模块的并行功能 +.. tip:: + + 此处为了便于一般用户理解,只向 ``cmake/ConfigUser.cmake`` 中写入了必要的5行语句。 + + 对于高级用户而言,可以直接在 GMT 提供的配置模板基础上进行更多配置。将 ``cmake/ConfigUserTemplate.cmake`` 复制为 ``cmake/ConfigUser.cmake`` ,然后根据配置文件中的大量注释说明信息自行修改配置文件。 + 继续执行如下命令以检查GMT的依赖关系:: $ mkdir build @@ -153,62 +191,3 @@ Linux安装GMT需要下载三个文件(这里提供的国内下载源): $ gmt --version 5.3.1 - -Windows -------- - -GMT为Windows用户提供了安装包,可以直接安装使用。Windows下需要安装GMT、ghostscript和gsview。 - -1. 下载 - - 到社区主页的 `下载页面 `_ 下载所需要的安装包。 - -2. 安装GMT - - 直接双击安装包即可安装,直接点击下一步,使用默认的选项即可,无须做任何修改。在“选择组件”页面,建议将四个选项都勾选上,然后点击下一步安装完成。 - - 安装完成后,“开始”->“所有程序”->“附件”->“命令提示符”以启动cmd。在cmd窗口中执行:: - - C:\Users\xxxx> gmt --version - 5.3.1 - - 即表示安装成功。 - -2. 安装ghostscript - - 安装的过程没什么可说的,在最后一步,记得勾选“Generate cidfmap for Windows CJK TrueType fonts”。 - -3. 安装gsview - - 双击直接安装即可。 - -Mac OS ------- - -Mac OS下GMT的安装方法有很多,可以直接使用安装包,也可以使用各种软件管理工具。推荐使用 `Homebre `_ 。 - -1. 使用homebrew安装:: - - brew update && brew upgrade - brew install gmt - -2. 直接使用GMT提供的安装包 - - 到社区主页的 `下载页面 `_ 下载安装包。 - - 安装完成后,在桌面会出现GMT的图标。点击该图标会启动一个终端,在终端内执行:: - - echo ${PATH%%:*} - - 并将输出的目录添加到 ``~/.bashrc`` 中:: - - echo 'PATH=${PATH}:/path/to/gmt' >> ~/.bashrc - -3. 使用macports安装:: - - sudo port install gdal +curl +geos +hdf5 +netcdf +fftw3 +openmp - sudo port install gmt5 - -4. 使用fink安装:: - - sudo fink install gmt5 diff --git a/source/install-macOS.rst b/source/install-macOS.rst new file mode 100644 index 0000000000..6f8f220a4b --- /dev/null +++ b/source/install-macOS.rst @@ -0,0 +1,69 @@ +macOS 下安装 GMT +================ + +macOS 下 GMT 的安装方法有很多,可以直接使用安装包,也可以使用各种软件管理工具。 + +使用 homebrew 安装 +------------------ + +`Homebrew `_ 是 macOS 下的第三方软件包管理工具。 + +1. 安装 Homebrew:: + + $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" + +2. 安装 GMT:: + + $ brew update && brew upgrade + $ brew tap homebrew/science + $ brew install gmt + +3. 测试安装是否成功:: + + $ gmt --version + 5.3.1 + +4. 如果你想要同时安装 GMT4 和 GMT5:: + + $ brew unlink gmt && brew install gmt4 + +5. 从 GMT5 切换至 GMT4:: + + $ brew unlink gmt && brew link gmt4 + + 从 GMT4 切换至 GMT5:: + + $ brew unlink gmt4 && brew link gmt5 + +.. warning:: + + 以下几种安装方法翻译自官方文档,我们未作验证。 + +使用 GMT 安装包 +--------------- + +1. 到社区主页的 `下载页面 `_ 下载安装包。 + +2. 安装完成后,在桌面会出现GMT的图标。点击该图标会启动一个终端,在终端内执行:: + + echo ${PATH%%:*} + + 并将输出的目录添加到 ``~/.bashrc`` 中:: + + echo 'PATH=${PATH}:/path/to/gmt' >> ~/.bashrc + +使用 macports 安装 +------------------ + +:: + + sudo port install gdal +curl +geos +hdf5 +netcdf +fftw3 +openmp + sudo port install gmt5 + + +使用fink安装 +------------ + +:: + + sudo fink install gmt5 diff --git a/source/install-windows.rst b/source/install-windows.rst new file mode 100644 index 0000000000..d360043628 --- /dev/null +++ b/source/install-windows.rst @@ -0,0 +1,31 @@ +Windows 下安装 GMT +================== + +GMT 为 Windows 用户提供了安装包,可以直接安装使用。Windows 下需要安装 GMT、ghostscript 和 gsview。 + +.. warning:: + + 从 GMT 5.2.1 开始,GMT 已经不再支持 Windows XP。 + +1. 下载 + + 到社区主页的 `下载页面 `_ 下载所需要的安装包。 + +2. 安装GMT + + 直接双击安装包即可安装,直接点击下一步,使用默认的选项即可,无须做任何修改。在“选择组件”页面,建议将四个选项都勾选上,然后点击下一步安装完成。 + + 安装完成后,“开始”->“所有程序”->“附件”->“命令提示符”以启动cmd。在cmd窗口中执行:: + + C:\Users\xxxx> gmt --version + 5.3.1 + + 即表示安装成功。 + +2. 安装ghostscript + + 安装的过程没什么可说的,在最后一步,记得勾选“Generate cidfmap for Windows CJK TrueType fonts”。 + +3. 安装gsview + + 双击直接安装即可。 diff --git a/source/intro-gmt.rst b/source/intro-gmt.rst index f8fa419294..41ff41f6a6 100644 --- a/source/intro-gmt.rst +++ b/source/intro-gmt.rst @@ -35,7 +35,7 @@ GMT的特点 #. 跨平台 - GMT的源码采用了高度可移植的ANSI C语言,其完全兼容于POSIX标准,几乎不需修改即可运行在大多数类UNIX系统上。GMT官方网站不仅提供了软件源码,还提供了供Windows和Mac OS使用的软件安装包。各大Linux发行版中也提供了预编译的二进制版本。 + GMT的源码采用了高度可移植的ANSI C语言,其完全兼容于POSIX标准,几乎不需修改即可运行在大多数类UNIX系统上。GMT官方网站不仅提供了软件源码,还提供了供 Windows 和 macOS 使用的软件安装包。各大Linux发行版中也提供了预编译的二进制版本。 #. 模块化 @@ -97,7 +97,7 @@ PS:GMT4和GMT5可在系统中共存,因而完全可以同时安装两个版 跨平台特性 ---------- -GMT是跨平台的,可以运行在Linux及Windows下,当然也可以运行在Mac下,这里姑且认为Mac跟Linux是同一个东西。 +GMT是跨平台的,可以运行在Linux及Windows下,当然也可以运行在 macOS 下,这里姑且认为 macOS 跟Linux是同一个东西。 推荐在Linux下使用GMT,原因如下: diff --git a/source/introductions.rst b/source/introductions.rst index 8dac808f37..f3198a1397 100644 --- a/source/introductions.rst +++ b/source/introductions.rst @@ -7,7 +7,9 @@ :maxdepth: 2 intro-gmt - installation + install-linux + install-windows + install-macOS directory-tree philosophy postscript diff --git a/source/julia-wrapper.rst b/source/julia-wrapper.rst index d56ad5ff8c..8d94215381 100644 --- a/source/julia-wrapper.rst +++ b/source/julia-wrapper.rst @@ -149,52 +149,52 @@ GMT 的 ``surface`` 命令会读入一个文本数据,对其进行插值以生 Julia 中网格变量 ``GMTJL_GRID`` 的定义为:: - type GMTJL_GRID # The type holding a local header and data of a GMT grid - ProjectionRefPROJ4::ASCIIString # Projection string in PROJ4 syntax (Optional) - ProjectionRefWKT::ASCIIString # Projection string in WKT syntax (Optional) - range::Array{Float64,1} # 1x6 vector with [x_min x_max y_min y_max z_min z_max] - inc::Array{Float64,1} # 1x2 vector with [x_inc y_inc] - n_rows::Int # Number of rows in grid - n_columns::Int # Number of columns in grid - n_bands::Int # Not-yet used (always == 1) - registration::Int # Registration type: 0 -> Grid registration; 1 -> Pixel registration - NoDataValue::Float64 # The value of nodata - title::ASCIIString # Title (Optional) - remark::ASCIIString # Remark (Optional) - command::ASCIIString # Command used to create the grid (Optional) - DataType::ASCIIString # 'float' or 'double' - x::Array{Float64,1} # [1 x n_columns] vector with XX coordinates - y::Array{Float64,1} # [1 x n_rows] vector with YY coordinates - z::Array{Float32,2} # [n_rows x n_columns] grid array - x_units::ASCIIString # Units of XX axis (Optional) - y_units::ASCIIString # Units of YY axis (Optional) - z_units::ASCIIString # Units of ZZ axis (Optional) + type GMTJL_GRID # The type holding a local header and data of a GMT grid + ProjectionRefPROJ4::ASCIIString # Proj4 语法的投影方式 (可选) + ProjectionRefWKT::ASCIIString # WKT 语法的投影方式 (可选) + range::Array{Float64,1} # 1x6 向量, 表示数值范围: [x_min x_max y_min y_max z_min z_max] + inc::Array{Float64,1} # 1x2 向量, 表示采样间隔: [x_inc y_inc] + n_rows::Int # 行数 + n_columns::Int # 列数 + n_bands::Int # 波段数(维数)(目前未启用,恒等于 1) + registration::Int # 格网表达方式: 0 -> Grid registration; 1 -> Pixel registration + NoDataValue::Float64 # 空值对应的数值 + title::ASCIIString # 标题 (可选) + remark::ASCIIString # Remark (可选) + command::ASCIIString # 生成网格所使用的命令 (可选) + DataType::ASCIIString # 数据格式 'float' 或 'double' + x::Array{Float64,1} # [1 x n_columns] 向量, 表示X坐标值 + y::Array{Float64,1} # [1 x n_rows] 向量, 表示Y坐标值 + z::Array{Float32,2} # [n_rows x n_columns] 网格数组 + x_units::ASCIIString # X轴单位 (可选) + y_units::ASCIIString # Y轴单位 (可选) + z_units::ASCIIString # Z单位 (可选) end 图片变量 ``GMTJL_IMAGE`` 的定义为:: type GMTJL_IMAGE # The type holding a local header and data of a GMT image - ProjectionRefPROJ4::ASCIIString # Projection string in PROJ4 syntax (Optional) - ProjectionRefWKT::ASCIIString # Projection string in WKT syntax (Optional) - range::Array{Float64,1} # 1x6 vector with [x_min x_max y_min y_max z_min z_max] - inc::Array{Float64,1} # 1x2 vector with [x_inc y_inc] - n_rows::Int # Number of rows in image - n_columns::Int # Number of columns in image - n_bands::Int # Number of bands in image - registration::Int # Registration type: 0 -> Grid registration; 1 -> Pixel registration - NoDataValue::Float64 # The value of nodata - title::ASCIIString # Title (Optional) - remark::ASCIIString # Remark (Optional) - command::ASCIIString # Command used to create the image (Optional) - DataType::ASCIIString # 'uint8' or 'int8' (needs checking) - x::Array{Float64,1} # [1 x n_columns] vector with XX coordinates - y::Array{Float64,1} # [1 x n_rows] vector with YY coordinates - image::Array{UInt8,3} # [n_rows x n_columns x n_bands] image array - x_units::ASCIIString # Units of XX axis (Optional) - y_units::ASCIIString # Units of YY axis (Optional) - z_units::ASCIIString # Units of ZZ axis (Optional) ==> MAKES NO SENSE - colormap::Array{Clong,1} # - alpha::Array{UInt8,2} # A [n_rows x n_columns] alpha array + ProjectionRefPROJ4::ASCIIString % Proj4 语法的投影方式 (可选) + ProjectionRefWKT::ASCIIString % WKT 语法的投影方式 (可选) + range::Array{Float64,1} % 1x6 向量, 表示数值范围: [x_min x_max y_min y_max z_min z_max] + inc::Array{Float64,1} % 1x2 向量, 表示采样间隔: [x_inc y_inc] + n_rows::Int % 行数 + n_columns::Int % 列数 + n_bands::Int % 波段数(维数) + registration::Int % 格网表达方式: 0 -> Grid registration; 1 -> Pixel registration (默认值) + NoDataValue::Float64 % 空值对应的数值 + title::ASCIIString % 标题 (可选) + remark::ASCIIString % Remark (可选) + command::ASCIIString % 生成网格所使用的命令 (可选) + DataType::ASCIIString % 数据格式 'uint8' 或 'int8' + x::Array{Float64,1} % [1 x n_columns] 向量, 表示X坐标值 + y::Array{Float64,1} % [1 x n_rows] 向量, 表示Y坐标值 + image::Array{UInt8,3} % [n_rows x n_columns] 图像数组 + x_units::ASCIIString % X轴单位 (可选) + y_units::ASCIIString % Y轴单位 (可选) + z_units::ASCIIString % Z单位 (可选) + colormap::Array{Clong,1} % CPT 结构体 + alpha::Array{UInt8,2} % [n_rows x n_columns] alpha 数组 end CPT变量 ``GMTJL_CPT`` 的定义为:: diff --git a/source/matlab-wrapper.rst b/source/matlab-wrapper.rst index 1732a1b820..b8cf20bcd9 100644 --- a/source/matlab-wrapper.rst +++ b/source/matlab-wrapper.rst @@ -130,25 +130,78 @@ GMT接口完全模仿了传统的matlab命令,可以在命令行、m文件或I 附录 ---- -**网格数据结构体说明:** +网格数据结构体 +++++++++++++++ :: - ProjectionRefPROJ4 % Proj4投影 (Optional) - ProjectionRefWKT % WKT投影 (Optional) - range % 1x6 向量表示数值范围: [x_min x_max y_min y_max z_min z_max] - inc % 1x2 向量表示采样间隔: [x_inc y_inc] + projection_ref_proj4 % Proj4 语法的投影方式 (可选) + projection_ref_wkt % WKT 语法的投影方式 (可选) + range % 1x6 向量, 表示数值范围: [x_min x_max y_min y_max z_min z_max] + inc % 1x2 向量, 表示采样间隔: [x_inc y_inc] n_rows % 行数 n_columns % 列数 - n_bands % 波段数(维数)(目前未启用,恒 1) + n_bands % 波段数(维数)(目前未启用,恒等于 1) registration % 格网表达方式: 0 -> Grid registration; 1 -> Pixel registration - NoDataValue % 空值 - title % 标题 - remark % Remark (Optional) - command % 生成命令 (Optional) - DataType % 数据格式'float' or 'double' - x % [1 x n列]表示X坐标值 - y % [1 x n行]表示y坐标值 - z % [n行x n列]格网点值 - x_units % x轴单位 (Optional) - y_units % y轴单位 (Optional) + nodata % 空值对应的数值 + title % 标题 (可选) + remark % Remark (可选) + command % 生成网格所使用的命令 (可选) + datatype % 数据格式 'float' 或 'double' + x % [1 x n_columns] 向量, 表示X坐标值 + y % [1 x n_rows] 向量, 表示Y坐标值 + z % [n_rows x n_columns] 网格数组 + x_units % X轴单位 (可选) + y_units % Y轴单位 (可选) + z_units % Z单位 (可选) + +图像结构体 +++++++++++ + +:: + + projection_ref_proj4 % Proj4 语法的投影方式 (可选) + projection_ref_wkt % WKT 语法的投影方式 (可选) + range % 1x6 向量, 表示数值范围: [x_min x_max y_min y_max z_min z_max] + inc % 1x2 向量, 表示采样间隔: [x_inc y_inc] + n_rows % 行数 + n_columns % 列数 + n_bands % 波段数(维数) + registration % 格网表达方式: 0 -> Grid registration; 1 -> Pixel registration (默认值) + nodata % 空值对应的数值 + title % 标题 (可选) + remark % Remark (可选) + command % 生成网格所使用的命令 (可选) + datatype % 数据格式 'uint8' 或 'int8' + x % [1 x n_columns] 向量, 表示X坐标值 + y % [1 x n_rows] 向量, 表示Y坐标值 + image % [n_rows x n_columns] 图像数组 + x_units % X轴单位 (可选) + y_units % Y轴单位 (可选) + z_units % Z单位 (可选) + colormap % CPT 结构体 + alpha % [n_rows x n_columns] alpha 数组 + +CPT 结构体 ++++++++++++ + +:: + + colormap % [ncolors x 3] 矩阵,保存了 [0-1] 范围内的颜色值 + alpha % [ncolors x 1] 矢量,包含了 [0-1] 范围内的透明度值 (可选) + range % [ncolors x 2] 矩阵,对于每个颜色而言包含了 z_low 和 z_high 两个值 + bnf % [3 x 3] 矩阵,包含了 [0-1] 范围内的前景色、背景色和NaN色 + minmax % [z_min z_max] + depth % CPT 颜色深度,取值 (1, 8, 24) + hinge % hinge 值 + +PostScript 结构体 +++++++++++++++++++ + +:: + + postscript % 包含了全部 PostScript 代码的字符串 + length % 字符串的长度(即字节数) + mode % 1 表示仅包含文件头,2表示只包含文件尾,3表示完整为文件 + +.. source: http://gmt.soest.hawaii.edu/doc/latest/matlab_wrapper.html