Who am I

我的照片
Hefei, Anhui, China
Research Fields: Satellite Geodesy

2012年2月17日星期五

GMT系列七 psbasemap, pstext, pslegend和psscale命令


 psbasemap, pstext, pslegendpsscale命令
1.      psbasemap命令
作用:绘制底图
用法:psbasemap [options] > *.ps
参数详解:
十三个常用参数在第四章已详细讲述过,这里只介绍没介绍过的参数或有部分不同意义的参数。
ü   -G
绘制底图的填充色(全部区域),与pscoastpsxy命令中的该选项有差别。
ü   -L
绘制比例尺(参见pscoast命令)
ü   -T
绘制指北针(参见pscoast命令)
备注:psbasemap只绘制底图(边框,经纬线,格网线,标题,annotation等);当在绘制地理地图时还可以用该命令绘制一个矩形边框。
举例:
对数图:下面四条语句,对应图形见上图
psbasemap -R1/10000/1e20/1e25 -JX5cl/5cl -B1p/a1pf3WSne -P -X1i -Y1i -K > $ps(底,左)
psbasemap -R -JX10cl/5cl -B2/a1pf3WSne -X7c -O -K >> $ps(底,右)
psbasemap -R -JX5cl/5cl -B1p/a1pf3WS -X-7c -Y7c -K -O >> $ps(中,左)
psbasemap -R -JX10cl/5cl -B2/a1pf3WS -X7c -O -K >> $ps(中,右)
指数图:下面两条语句,对应图形见上图
psbasemap -R0/100/0/5000 -JX5cp0.5/-7c -B1p/500 -X-7c -Y7c -O -K>> $ps(上,左)
psbasemap -R -JX8cp0.5/-7c -B10/500WS -X9c -O >> $ps(上,右)

2.      pstext命令
作用:在图形上绘制文本(可以设置文本的对其方式,大小,字体),也包括特殊字符。
用法:pstext textfile [options] > *.ps
参数详解:
常用的十三个参数见第四章内容。
ü   textfile
该文件包含1条或多条记录,每条记录的格式为
x    y    size    angle    fontno    justify    text
x,y     设置文本字符串的起始位置
size   设置文本字体的大小(默认单位为p
angle         设置文本字体的角度(角度的定义为从水平方向按逆时针旋转)
fontno      设置文本字体类型,用一个整数代表(0-34)。可用pstext –L 查看。
justify        对齐方式,由两个字母组合确定,(Left,Center,Right) | (Bottom, Middle, Top)
例:
echo << EOF | pstext –R0/7/0/5 –Jx1i –P –B1g1 –Gblue > *.ps
1        1       30    0       4       BL    This is a test.
1        2       30    0       4       BL    try again.
1        3       30    0       4       BL    End.
EOF
当没有给出文本的时候,pstext从标准输入读取数据,如上例。
ü   -A    
以方位角的形式给出,并利用当前投影方式把它们转换成方向角。
ü   -Cdx/dy
设定文本和覆盖它的矩形框之间的空隙(默认是字体大小的15%),当然也可以通过dx/dy值设定在xy方向的间隙。必须配合-W命令使用。
ü   -W[color,][o|O|c|C[pen]]
在字符串底层绘制一个矩形框,并可以利用color设置矩形框的填充色(默认没有填充色)。o表示绘制出矩形的边框,并可设置pen的属性;O表示圆角矩形;c表示凹矩形;C表示凸矩形。
ü   -D[j]dx[/dy][v[pen]]
设置文本与对应点之间的间隙大小dx/dy,如果dy没有给出,默认等于dx的值。-Dj表示字符串远离对应点(类似于word的加注释),此时可通过v选项绘制一条线连接文本和对应点,并可设置线的属性;
ü   -Gcolor
设置绘制文本的底色
ü   -L
列出可选的字体及其对应的整数
ü   -N
不打断在图形边界处的文本(默认是打断的)
ü   -Spen
设置文本的边线,可设置画笔属性
补充:特殊字符

3.      psscale命令
作用:绘制灰度或彩色的比例条(水平或垂直放置)
用法:psscale [options] > *.ps
详解:
ü   -Dxpos/ypos/length/width[h]
xpos/ypos设定scale的位置(对于水平scale来说,对应的是centertop的位置;对于垂直的scale来说,对应的是centerleft的位置)。lengthwidth定义scale的大小。如果length给出的值是负数,表明反转scale的顺序。[h]表示绘制的是水平scale(默认是垂直的)。
ü   -A[a|l|c]
设置在水平scale上面(默认是下面)绘制annotationlabel,在垂直scale的左边(默认是右边)绘制annotationlabel. 后缀a表示将annotation移动到另一边;后缀l表示将label移到另一边;c表示想要将一列字符打印成为垂直的label
ü   -B [p|s]parameters
设定scaleannotation, tick, gridline的间隔。默认情况下,水平scale标注在下面,垂直进度条标注在右边。当然,可用-A选项来修改。如果没有给定-B选项,默认情况下是在.cptfile中寻找annotation。在.cptfileannotation这一项是以;开始,即;annotation
ü   -Ccptfile
调用cptfile来绘制scale
ü   -E[b|f][length]
scale增加三角形侧边栏,侧边栏主要是用来表示背景色(back-)或前景色(fore),默认是两者都有,用bf可以选择其一。length设定三角形侧边栏的高(默认等于scalebar宽的一半)。
ü   -I[max_intens][low_i/high_i]
增加照明(illumination)效果(默认是没有照明效果的)。设定亮度的范围(从-+,直到max_intens)。如果没有给出max_intens,默认为1。当然也可以用low/high给定一个非对称的亮度范围。
ü   -L[i][gap]
给出等大小的彩色条。默认情况下一段数值区间有一个颜色条对应。如果设置了该选项,-B选项将被忽略。如果给出了gap值,每个颜色条之间会有间隔,此时标注信息都将绘制在每个颜色条的中间。如果给出i选项,标注的形式将会是数据区间;
ü   -M
绘制的scale将会是黑白的
ü   -Ndpi
设置颜色条的分辨率
ü   -Q
选择对数或指数(以10为底)标注。在cpt文件里的所有z值都将被转化成p=log10(z) 或者10p格式。
ü   -S
不用黑线分割每个彩色条。
举例:
给出自定义的cptfile文件
cat > ages.cpt << EOF
# color model: RGB
#
0    197      0      255      23      197      0      255      ;Neogene
23    81      0      255      66      81       0      255      ;Paleogene
66    0      35      255      146      0      35      255      ;Cretaceous
146    0     151     255      200      0      151     255      ;Jurassic
200    0     255     244      251      0      255     244      ;Triassic
251    0     255     127      299      0      255     127      ;Permian
299    0     255      11      359      0      255     11       ;Carboniferous
359   104    255      0       416    104      255     0        ;Devonian
416   220    255      0       444    220      255     0        ;Silurian
444   255    174      0       488    255      174     0        ;Ordovician
488   255     58      0       542    255      58      0        ;Cambrian
B   black
F   white
EOF
cpt文件的意义:
z0       r       g       b       z1      r       g       b       ;annotation
B设定背景色;F设定前景色。
值在z0~z1区间的值被设定为颜色(r/g/b~r/g/b),并设定对应的annotation
psscale -Ef -Cages.cpt -D00/13/-8/0.5 -K > $ps
psscale -Ef -Cages.cpt -D04/13/-8/0.5 -O -K -L >> $ps
psscale -Ef -Cages.cpt -D08/13/-8/0.5 -O -K -L0.0 -M >> $ps
psscale -Ef -Cages.cpt -D12/13/-8/0.5 -O -K -L0.1 >> $ps
psscale -Ef -Cages.cpt -D16/13/+8/0.5 -O -K -L >> $ps
psscale -Ef -Cages.cpt -D20/13/+8/0.5 -O -K -L0.1 >> $ps
解释:-Ef绘制侧边栏三角形(只绘制前景色);-L每个color rectangular都是等大小的(标注在每个rectangular 的上面)。-L0.0每个color rectangular等大小,且标注是在每个rectangular的中间。-L0.1每个rectangular之间有间隔0.1个单位;+8-8表示顺序方向,长度为8个单位;
sed 's/;.*$//' ages.cpt > years.cpt
psscale -Ef -Cyears.cpt -D00/04/+8/0.5 -O -K >> $ps
psscale -Ef -Cyears.cpt -D04/04/-8/0.5 -O -K -L >> $ps
psscale -Ef -Cyears.cpt -D08/04/-8/0.5 -O -K -L0.0 -S >> $ps
psscale -Cyears.cpt -D12/04/-8/0.5 -O -Aa -K -L0.1 >> $ps
psscale -E -Cyears.cpt -D16/04/-8/0.5 -O -K -Li >> $ps
psscale -Ef -Cyears.cpt -D20/04/-8/0.5 -O -K -Li0.1 >> $ps
解释:去掉-Ef不绘制侧边栏三角形;-E两边都绘制侧边栏三角形;-Aa表示annotation放到另一边;-S表示不绘制每一个rectangular的边线;-M表示强制将彩色转换成灰度(转换算法同电视机色彩转换);-Li标注的形式是数据区间。

4.      pslegend命令
作用:绘制地图图例(legend
用法:pslegend textfile [options] > *.ps
详解:
ü   textfile
一个图例包含很多要素(items),如文本、符号、直线(横、竖)等等,为了区分每一种要素,在绘制这些要素时都有一个唯一的单字符来标示。以下将详细介绍这些要素及其属性设置。
a)       #      
注释行(对绘图不起作用)
b)       B cptfile offset height [optional arguments]
绘制一个水平颜色条,起始位置由offset确定(相对图形的左边界),height是颜色条的高度。此外,还可以增加psscale的选项,如-A –B –E –I –L –M –N –S –Z.
c)        C textcolor
C后面的文本将以所设定的颜色打印输出
d)       D offset pen
绘制一条水平线,线的上下留有1/4(单位为两条线之间的间距)空白,并可设定pen的属性。offset设定线的左右空白。
e)       G gap
设定一个垂直方向上的间隙,并可设定间隙的大小。
f)        H fontsize|-  font|-  header
绘制一个标题文本,并设定字体的大小和类型。如果没有给出具体大小和类型,仅给出-,表示采用默认的HEADER_FONT_SIZEHEADER_FONT
g)       I imagefile width justification
imagefile通常是epsras文件,在legend上绘制一个由imagefile定制的图片。width指图片的宽度,justification是相对当前点的对齐方式。
h)       L fontsize|- font|- justification label
在一个单元格里绘制文本字符串,并设定字符的大小、字号、对齐方式和内容。对齐方式由两个字符确定(L,C,R)(B,M,T)确定。
i)         M slon|- slat length f|p [-Rw/e/s/n -Jparameter]
在图例中绘制一个图形比例尺。比例尺是按slat指定的纬度处计算(如果是斜投影,通常还会给出slon),如果需要slon,则用-代替。length指定绘制多长举例的比例尺。fp表示fancyplain比例尺类型。
j)         N ncolumns
改变一行的列数,只对绘制符号或label的行起作用,对绘制文本的行不起作用。
k)        S dx1 symbol size fill pen [dx2 text]
绘制符号,并指定尺寸、填充色和轮廓线。符号的位置时在dx1处(在这一列的左边起计算),如果后接解释性文字,那么文字从dx2(相对符号的边缘)处开始。如果没有文字,则[dx2 text]可省略。如果在绘制符号的时候,不需要设定fillpen时,这两项内容可用-代替。
l)         T paragraph-text
绘制段落文本(字体大写和类型由ANNOT_FONT_SIZE_PRIMARYANNOT_FONT_PRIMARY决定)。分段时,可用>符号表示。
m)      V offset pen
在列与列之间绘制竖线。offset类似于D字符后的offset,但V表示竖直方向。
n)       paragraph-mode-header-for-pstext
开始新的一段
ü   -D[x]lon/lat/width/height/just
设定legend的位置和大小。just同样是由(L, C, R)(B, M, T)组成。如果想用图上距离来定义位置的时候,用-Dx
ü   -Cdx/dy
设定legend的边框和里面的内容之间的间隙大小,如0.15c/0.15c
ü   -F
利用FRAME_PEN的属性绘制一个边框
ü   -Gfill
设定legend box的填充色
ü   -Lspacing
设定线与线之间的距离,单位是当前annot_font_size的大小。如1.1,表示线与线之间的举例为1.1倍的annot_font_size
ü   -S[script]

2012年2月16日星期四

GMT系列六 pscoast和psxy命令详解


pscoast和psxy命令详解

pscoastGMT最为常用的绘制地理底图的命令;psxy是绘制2D多边形、符号或线的命令。以下将详细介绍这两个命令的用法及其常用参数的意义。
1.      pscoast命令
作用:绘制地理底图
常用参数解释:
ü  -Amin_area[/min_level/max_level]        
通常绘制地图都需要用到分层数据,对于数据层级小于min_level或大于max_level的数据,在面积小于min_area的地理特征将不会被绘出。默认选项是0/0/4(绘制所有的地理特征),常用方法如-A500(只设置最小面积)等。
ü  -C[l|r/]fill
设置lakesriver-lakes的填充属性(默认是wet areas,等同于-S选项)。-Clfill,设置laker的填充属性,如果还想填充river,继续使用-C选项,即-Crfill
ü  -Drevolution[+]
设定数据集的分辨率,共有full, high, intermediate, low and crude五个选项。默认选项是low.
+表示如果选定的分辨率达不到的话,自动选择一个较低的分辨率。
ü  -Eazim/elev
设定透视投影的方位角和高程。
ü  -Gfill|c
设定dry areas的填充属性;或者用-Gc设定裁剪区域。
ü  -Iriver_type[/pen]
绘制河流的边界,river_type如下(如果想绘制多种类型的河流,重复-I命令)
River type
Comment
1
Permanent major rivers
2
Additional major rivers
3
Additional rivers
4
Minor rivers
5
Intermittent(间断的) rivers – major
6
Intermittent rivers – additional
7
Intermittent rivers – minor
8
Major canals(运河)
9
Minor canals
10
Irrigation canals (灌溉运河)
a
All rivers and canals(1-10)
r
All permanent rivers (1-4)
i
All intermittent rivers (5-7)
c
All canals(8-10)
ü  -Sfill|c
设定wet areas的填充属性;-Sc用于剪切区域。
ü  -W[level/]pen
绘制海岸线
ü  -L[f][x]lon0/lat0[/slon]/slat/length[m|n|k][+llabel][+jjust][+ppen][+ffill][+u]
lon0/lat0(实际地理坐标)的位置绘制一个地图比例尺,-Lxx/y(图形坐标)的位置代替lon0/lat0
–Lf表示获得的是fancy比例尺;
slat:比例尺是在slat纬度上计算的(对于斜投影,可以提供slon参数);
length: 绘制多长举例的比例尺(如1500km),默认单位是km,也可以将单位设置成miles或者nautical miles(海里);
+l设定比例尺的label,与length后的单位对应;
+j设定label的对其方式,可以是left, right, top, bottom.
如果想在比例尺后面绘制一个矩形,可以用+p+f来设定矩形边框和填充属性。
+u在比例尺所有的annotation后加上单位。
ü  -Nborder_type[/pen]
绘制政治边界。常用的政治边界有四类,如下:
Boder Type
Comment
1
National boundaries
2
State boundaries(仅限美国)
3
Marine boundaries
a
All boundaries
ü  -T[f|m][x]lon0/lat0/size[/info][:w,e,s,n:][+gint[/mint]]
在地图lon0/lat0的位置上绘制一个指北针。-Txx/y位置代替lon0/lat0.
size是指北针玫瑰图中玫瑰的直径。
[:w,e,s,n:]::之间定制各个方向的label.
默认的指北针只绘制北方向,用-Tf可以绘制fancy的指北针,并可在[/info]里定制显示。info包含三种类型,1代表E-W, N-S指向;2增加了NW-SENE-SW指向;3又增加了四个方向。
Tm用于绘制磁罗经玫瑰图
ü  -U[just/dx/dy/][c|label]
绘制unix时间标签。just设定时间标签的对其方式(相对图形的左下角),dx/dy表示时间标签相对左下角的位移。如BL/0/0,时间标签就绘制在图形的左下角。
label,在时间后绘制标签。如-UBL/0/0”This is my first example”
ü  -Zzlevel
用于3D投影,设置海岸线的z方向的标签。
ü  -Jz|Zparameter
用于绘制3D图形,设置垂直方向的比例尺
2.      psxy命令
作用:在图形上绘制线、多边形和符号等。
用法:psxy files [options] > output.ps command | psxy [options] > output.ps
详解:
ü  命令的输入:数据可以来源于给定的files(一个或多个文件),如果没有给定数据文件,可以通过管道命令将其他命令的输出作为psxy命令的输入。
ü  -A[m|p]
默认情况下,在绘制线段的时候,用大圆的圆弧来代替;-A选项改变这个默认选项,按直线的方式绘制线段;在绘制地图时,通常有纬圈和经圈两种大选,此时绘制直线时需要加后缀m(经圈)或p(纬圈)来选择按哪个大圆来绘制直线。
ü  -Ccptfile
给出调色板文件,用于绘制符号或多边形的颜色。如果有-S选项,符号的填充色会由输入文件的第三列Z值决定(此时,其他列都将会后移一列,如尺寸大小会从第三列移到到第四列);如果没有给出-S选项,psxy命令希望输入数据还有多文件头(-m),每个文件头给出这一块数据的Z值,从而确定填充色。
ü  -Ddx[/dy]
在绘制线或符号时,使其位置偏离(offset)实际值dx/dy。默认的偏离值为0. 如果dy没有给出,默认其值等于dx
ü  -E[x|y|X|Y][n][cap][/[-|+]pen]
绘制误差条,x,y表示绘制x的误差条或者y的误差条。x或者y误差存储在(x,y)(x,y,size)的后两列。cap表示绘制的误差条终端线条的长度。图中蓝色显示的为误差条,cap控制误差条两端短线的长度。[+-]是在psxy命令调用了cptfile时,用来控制符号和误差条的颜色属性。
ü  -Gfill
填充符号或者多边形的颜色。
ü  -Iintens
模仿自发光的形式,利用提供的强度值(通常在-1~1之间)调制填充色。
ü  -L
绘制封闭的多边形或者将线段连接起来
ü  -N
对于那些超过地图边界的符号,同样要绘制(默认情况下绘制在地图边界上)。该选项对于绘制多边形和直线不起作用。
ü  -S[symbol][size]
绘制符号。如果没有给出符号的尺寸,此时会自动默认输入数据的第三列(有-C选项时,为数据的第四列)为每个符号的尺寸大小(不同数据用不同大小的符号来标示,以显示区别)。如果符号类型没有给出来的话,会默认输入数据的最后一列是符号类型。符号类型有很多种,具体参见man psxy,这里仅给出一些常用的类型。
-S+      +                -Sa          星形         -Sc            圆形
-Sd      菱形         -Sg            八边形    -Sh            六边形
-Ss      正方形    -St             三角形    -Sv            矢量        
-Sx     
-Se      椭圆形,需要给出方向(从水平方向按逆时针计算)、长轴和短轴(通常由数据的三四五列给出)
-Sk      绘制一些特殊符号(特殊符号的定制语句放在一个单独的文件里)
ü  -T
忽略所有输入文件或者标准输入。
ü  -W[-|+][pen]
设置绘制直线或者符号轮廓的画笔属性
       注:如果没有给出S的话,将绘制直线。