project

官方文档:project
简介:将数据点投影到线或大圆路径上,生成测线,坐标转换

不管是要生成测线还是要将数据投影到测线上,首先要定义测线。

测线可以用如下三种方式中的任意一种来定义:

  1. -C 选项定义测线的起点,并用 -A 定义测线方位角
  2. -C 选项定义测线的起点,并用 -E 选项定义测线的结束点
  3. -C 选项定义测线的中心,并用 -T 选项定义rotation pole的位置

在指定测线后,该命令可以将输入的 (x, y) 数据投影到该测线上,默认的输出格式为:

x  y   z   p   q   r   s

其中:

  • xy 是数据在原坐标系下的位置,
  • z 是输入数据中的其余所有列
  • pq 是数据 (x,y) 在测线坐标系下的位置
  • rs 是测线上与(x,y)最近的点在XY坐标系下的坐标

关于测线坐标系,在指定了测线后,会创建一个倾斜的坐标系。该倾斜坐标系的赤道线 沿着测线,零经度线则穿过测线的中心,此时 p 是倾斜坐标系下的经度, q 是倾斜坐标系下的纬度。

必选选项

-C<cx>/<cy>
对于定义1和2而言,该选项指定测线的起点坐标;对于定义3而言,该选项指定了 旋转坐标下零经线所穿过的点

可选选项

-A<azimuth>
定义1中用于指定测线的方位角
-E<bx>/<by>
定义2中用于指定测线的终点
-F<flags>

指定输出格式, flags 可以是 xyzpqrs 的任意组合。

默认输出格式为 xyzpqrs 。若使用 -G 选项,则输出格式为 rsp

-G<dist>[/<colat>][+h]

生成测线模式。

该选项用于生成测线,此时不需要输入文件。 <dist> 的单位规定见 -Q 选项。输出数据有三列:经度、纬度以及 当前点离测线起点的距离。默认情况下,会按照大圆路径生成测线,当使用定义2 指定测线的两个端点时,可以通过指定 <colat> 来生成小圆。

若使用 +h 则会在段头记录中报告pole的位置。

-L[w][<l_min>/<l_max>]
仅坐标 p<l_min><l_max> 之间的数据会被投影到测线上。 <l_min><l_max> 的单位规定见 -Q 选项。 如果是负数则表示反方向的数据范围。 若使用了 -E 选项,则可以使用 -Lw 来限制只绘制能投影到测线起点和 终点之间的数据。
-N
Flat Earth。在平面内使用笛卡尔坐标变换。默认使用球面三角。
-Q
使用地图单位。即投影假设x、y、r、s 的单位是弧度,p、q、 <dist><l_min><l_max><w_min><w_max> 的单位是千米。 若不使用该选项,则所有量都假设为相同的单位。
-S
将输出按照 p 增序排列。
-T<px>/<py>
定义3中用于指定rotation pole的位置
-W<w_min>/<w_max>
仅坐标 q<w_min><w_max> 范围内的数据才会被投影到测线上。

示例

指定测线的起点和终点,在测线上每隔10千米生成一个点:

gmt project -C-50/10 -E-10/30 -G10 -Q > great_circle_points.xyp

指定测线的起点和终点,沿着colatitude=60的小圆上,每隔10千米生成一个点:

gmt project -C-50/10 -E-10/30 -G10/60 -Q > small_circle_points.xyp

利用 -F 选项指定输出哪些坐标来得到某点在某测线上的投影点:

echo 102 30| gmt project -C103/31 -A225 -L0/500 -Frs -Q

已知某点,根据方位角和大圆距离计算另一点。已知一点(120, 25),根据方位角 45 度,大圆距离 123 千米的点位置

gmt project -C120/25 -A45 -L0/123 -G123 -Q | tail -1