-J 选项¶
-J 选项用于指定坐标变换方式或地图投影方式,即将数据投影到画布上所采用的函数。
GMT投影代码¶
-J 选项有两种写法:
-J<δ>[<parameters>/]<scale>
-J<Δ>[<parameters>/]<width>[h|+|-]
其中,<δ> 和 <Δ> 用于指定投影代码,前者为小写字母,后者为大写字母。
<parameters> 是零个或多个由斜杠分隔的投影参数,参数数目由投影方式决定。
投影代码使用小写字母时,-J 的最后一个参数 <scale> 表示底图比例尺,即图上距离与真实地球距离之间的换算关系。<scale> 可以有两种格式:
- 单个数字加单位,例如
2c,表示真实地球距离的1度投影到画布上为2厘米 1:xxxx格式,例如1:10000000表示画布上的1厘米对应真实地球距离的10000000厘米
投影代码为大写字母时,-J 的最后一个参数 <width> 表示底图宽度。
h|+|- 可进一步修改最后一个参数 <width> 的含义,其中:
h表示<width>为底图的高度+表示<width>为底图维度中最大的那个维度的长度-表示<width>为底图维度中最小的那个维度的长度
注解
几乎所有地图投影方式,都只能指定底图宽度或高度中的任一个,而不能同时指定二者,因为地图高度会由地图宽度和投影方式自动决定。
画图时通常建议使用大写投影代码以直接指定图片宽度,除非需要明确指定比例尺。
例如:
-Jm1c表示使用墨卡托投影,地图上的1度距离投影到画布上为1厘米-Jm1:10000000表示使用墨卡托投影,画布上的1 cm代表实际距离中的10000000 cm,即100 km-JM15c也表示使用墨卡托投影,整个地图的宽度是15厘米,地图的高度由-R和-J自动确定-JM15ch表示整个地图的高度是15厘米-JX10c/5c使用线性投影,地图的宽度是10厘米,高度为5厘米
下表列出了GMT所支持的全部投影方式,详细介绍见 地图投影。
-J 代码 |
说明 |
|---|---|
| -JAlon0/lat0[/horizon]/width | Lambert azimuthal equal area |
| -JBlon0/lat0/lat1/lat2width | Albers conic equal area |
| -JClon0/lat0width | Cassini cylindrical |
| -JCyl_stere/[lon0[/lat0/]]width | Cylindrical stereographic |
| -JDlon0/lat0/lat1/lat2width | Equidistant conic |
| -JElon0/lat0[/horizon]/width | Azimuthal equidistant |
| -JFlon0/lat0[/horizon]/width | Azimuthal gnomonic |
| -JGlon0/lat0[/horizon]/width | Azimuthal orthographic |
| -JGlon0/lat0alt/azim/tilt/twist/W/H/width | General perspective |
| -JH[lon0/]width | Hammer equal area |
| -JI[lon0/]width | Sinusoidal equal area |
| -JJ[lon0/]width | Miller cylindrical |
| -JKf[lon0/]width | Eckert IV equal area |
| -JKs[lon0/]width | Eckert VI equal area |
| -JLlon0/lat0/lat1/lat2width | Lambert conic conformal |
| -JM[lon0[/lat0/]]width | Mercator cylindrical |
| -JN[lon0/]width | Robinson |
| -JOalon0/lat0azim/width | Oblique Mercator, 1: origin and azim |
| -JOblon0/lat0/lon1/lat1width | Oblique Mercator, 2: two points |
| -JOclon0/lat0/lonp/latpwidth | Oblique Mercator, 3: origin and pole |
| -JP[a]width[/origin] | Polar [azimuthal] (\(\theta, r\)) (or cylindrical) |
| -JPoly[lon0[/lat0/]]width | (American) polyconic |
| -JQ[lon0[/lat0/]]width | Equidistant cylindrical |
| -JR[lon0/]width | Winkel Tripel |
| -JSlon0/lat0[/horizon]/width | General stereographic |
| -JT[lon0[/lat0/]]width | Transverse Mercator |
| -JUzone/width | Universal Transverse Mercator (UTM) |
| -JV[lon0/]width | Van der Grinten |
| -JW[lon0/]width | Mollweide |
| -JXwidth[l|pexp|T|t][/height[l|pexp|T|t]][d] | Linear, log\(_{10}\), \(x^a-y^b\), and time |
| -JYlon0/lat0width | Cylindrical equal area |
Proj4投影代码¶
GMT用单个字母指定投影方式,但英文字母只有26个,而投影方式却不止26个,因而,从GMT 4.3.0开始,GMT开始支持 Proj4 包的命名方式。
Proj4 包不是使用单个字符指定投影方式,而是通过一个单词指定。比如墨卡托投影既可以用 -Jm 指定也可以用 -Jmerc 指定。
其语法为:
-J<code>[<parameters>/]<scale>
-J<Code>[<parameters>/]<width>
类似的,若投影代码的首字母为大写,则最后一个参数表示底图宽度;若投影代码为小写,则最后一个参数表述底图比例尺。
| 代码 | 说明 |
|---|---|
| -Jaea/lon0/lat0/lat1/lat2/scale | Albers conic equal area |
| -Jaeqd/lon0/lat0[/horizon]/scale | Azimuthal equidistant |
| -Jcass/lon0/lat0/scale | Cassini cylindrical |
| -Jcea/lon0/lat0/scale | Cylindrical equal area |
| -Jcyl_stere/[lon0[/lat0/]]scale | Cylindrical stereographic |
| -Jeqc/[lon0[/lat0/]]scale | Equidistant cylindrical |
| -Jeqdc/lon0/lat0/lat1/lat2/scale | Equidistant conic |
| -Jgnom/lon0/lat0[/horizon]/scale | Azimuthal gnomonic |
| -Jhammer/lon0/scale | Hammer equal area |
| -Jeck4/lon0/scale | Eckert IV equal area |
| -Jeck6/lon0/scale | Eckert VI equal area |
| -Jlaea/lon0/lat0[/horizon]/scale | Lambert azimuthal equal area |
| -Jlcc/lon0/lat0/lat1/lat2/scale | Lambert conic conformal |
| -Jmerc/[lon0[/lat0/]]scale | Mercator cylindrical |
| -Jmill/lon0/scale | Miller cylindrical |
| -Jmoll/[lon0/]scale | Mollweide |
| -Jnsper/lon0/lat0alt/azim/tilt/twist/W/H/scale | General perspective |
| -Jomerc/lon0/lat0azim/scale | Oblique Mercator, 1: origin and azimuth |
| -Jomerc/lon0/lat0/lon1/lat1/scale | Oblique Mercator, 2: two points |
| -Jomercp/:lon0/lat0/lonp/latp/scale | Oblique Mercator, 3: origin and pole |
| -Jortho/lon0/lat0[/horizon]/scale | Azimuthal orthographic |
| -Jpolar/[a]scale[/origin] | Polar [azimuthal] (\(\theta, r\)) (or cylindrical) |
| -Jpoly/[lon0[/lat0/]]scale | (American) polyconic |
| -Jrobin/[lon0/]scale | Robinson |
| -Jsinu/lat0/scale | Sinusoidal equal area |
| -Jstere/lon0/lat0[/horizon]/scale | General stereographic |
| -Jtmerc/[lon0[/lat0/]]scale | Transverse Mercator |
| -Jutm/zone/scale | Universal Transverse Mercator (UTM) |
| -Jvandg/[lon0/]scale | Van der Grinten |
| -Jwintri/[lon0/]scale | Winkel Tripel |
| -Jxyxscale[l|pexp|T|t][/yscale[l|pexp|T|t]][d] | Linear, log\(_{10}\), \(x^a-y^b\), and time |
GMT+PROJ4¶
从GMT6开始,GMT支持使用 PROJ.4 库来实现坐标和基准面的转换。这一特性是通过GDAL 实现的,因而需要GMT在安装时链接到GDAL库。详细的 PROJ.4 语法见 http://proj4.org/apps/index.html。
在PROJ.4中,投影一般有很多参数,多个参数之间用空格分隔。在GMT中,可以将所有参数用双引号括起来:
-J"+proj=merc +ellps=WGS84 +units=m"
或直接将所有参数连在一起:
-J+proj=merc+ellps=WGS84+units=m
也可以直接使用 EPSG codes,但需要设置环境变量
GDAL_DATA 指向 GDAL 的 data 子目录。例如 -JEPSG:4326 表示使用 WGS-84 系统。
对于 mapproject 和 grdproject 模块,可以直接使用
+to 关键字直接指定要将A参考系统转换为B参考系统,而不需要中间步骤。例如:
-JEPSG:4326+to+proj=aeqd+ellps=WGS84+units=m
对于使用 mapproject 和 grdproject 进行点和网格文件的转换,GMT可以使用所有的 PROJ.4投影。但对于绘图而言,其用处却很有限。一方面,只有一部分 PROJ.4 的投影方式可以被映射到GMT的投影语法中。另一方面,由于PROJ.4不是一个绘图库,其不支持设置地图比例尺或地图大小。因而,GMT为PROJ.4语法引入了两个扩展:+width= 和 +scale=1:xxxx
使得其与经典的GMT中的工作方式相似。也可以在投影参数的最后加上字符串 /1:xxx
来指定比例尺。