fitcircle
- 官方文档:
- 简介:
拟合球面上数据点的平均位置及圆弧
fitcircle 从标准输入 [或 table] 的前两列读取 (经度, 纬度) 值。这些值被转换为单位球上的笛卡尔三维矢量。 然后找到两个位置:输入位置的平均值,以及最拟合输入位置的大圆的极点。用户可以从该问题的两个可能解中选择一个或两个。 第一个称为 -L1,第二个称为 -L2。当数据沿大圆紧密聚集时,两个解相似。 如果数据分散程度较大,则大圆极点的确定将不如平均值那样准确。比较这两个解可作为定性检查。
-L1 解近似于角距离余弦绝对值之和的最小化。 该解将平均位置确定为数据的 Fisher 平均值,将极点位置确定为平均值与数据之间叉积的 Fisher 平均值。 对叉积取平均会根据点到平均值的距离按比例赋予权重,类似于平面线性回归中远距离点的“杠杆作用”。
-L2 解近似于角距离余弦平方和的最小化。 它创建了一个由数据矢量分量平方和组成的 3 x 3 矩阵。该矩阵的特征向量给出了平均位置和极点位置。 当有数千个数据时,此方法可能更容易受到舍入误差的影响。极点由最小特征值对应的特征向量给出; 它是数据中表现最差的因子,且通过任何一种方法都不易估计。
语法
gmt fitcircle
[ table ]
-Lnorm
[ -Fflags ]
[ -S[lat] ]
[ -V[level] ]
[ -aflags ]
[ -bibinary ]
[ -dinodata[+ccol] ]
[ -eregexp ]
[ -fflags ]
[ -ggaps ]
[ -hheaders ]
[ -iflags ]
[ -oflags ]
[ -qflags ]
[ -:[i|o] ]
[ --PAR=value ]
输入数据
- table
一个或多个ASCII或二进制表数据。若不提供表数据,则会从标准输入中读取。
必须选项
- -L
- -Lnorm
norm 取值 - 1: 解法1 - 2: 解法2 - 3 或留空: 同时输出解法1和解法2的结果
可选选项
- -F
- -Ff|m|n|s|c
控制输出格式。
正常情况下,该命令会将计算结果以较复杂的形式输出。使用本选项,则只返回简单的坐标。 后面可以加上其他修饰符以指定要返回的坐标:
f 平面地球平均位置
m 平均位置
n 大圆北极
s 大圆南极
c 小圆极点及其余纬,需要
-S
- -S
- -Slat
尝试拟合小圆而非大圆。极点将被约束在连接“最佳拟合大圆极点”与“数据平均位置”的大圆上。 可附加所需的小圆固定纬度 lat [默认自动确定最佳纬度]。
- -V
- -V[level]
设置 verbose 等级 [w]。 (参数详细介绍)
- -a
- -a[[col=]name][,…]
控制输入或输出为 OGR/GMT 格式时对非空间元数据的处理方式。 (参数详细介绍)
- -bi
- -bi[ncols][type][w][+l|b]
控制二进制文件的输入格式。 (参数详细介绍)
- -di
- -dinodata
将输入数据某些特定值当作NaN。 (参数详细介绍)
- -e
- -e[~]“pattern” | -e[~]/regexp/[i]
筛选或剔除匹配指定模式的数据记录。 (参数详细介绍)
- -f
- -f[i|o]colinfo
显式指定当前输入或输出数据中每一列的数据类型。 (参数详细介绍)
- -g
- -g[a]x|y|d|X|Y|D|[col]zgap[+n|p]
确定数据或线段的间断。 (参数详细介绍)
- -h
- -h[i|o][n][+c][+d][+msegheader][+rremark][+ttitle]
在读/写数据时跳过文件开头的若干个记录。 (参数详细介绍)
- -i
- -icols[+l][+sscale][+ooffset][,…][,t[word]]
对输入的数据进行列选择以及简单的代数运算。 (参数详细介绍)
- -o
- -ocols[,…][,t[word]]
对输出的数据进行列选择以及简单的代数运算。 (参数详细介绍)
- -q
- -q[i|o][~]rows[+ccol][+a|f|s]
对输入或输出的行进行筛选,该选项在一定程度上可以代替 gawk 的某些功能。 (参数详细介绍)
- -:
- -:[i|o]
交换输入或输出数据的前两列。 (参数详细介绍)
- -^ 或 -
显示简短的帮助信息,包括模块简介和基本语法信息(Windows下只能使用 -)
- -+ 或 +
显示帮助信息,包括模块简介、基本语法以及模块特有选项的说明
- -? 或无参数
显示完整的帮助信息,包括模块简介、基本语法以及所有选项的说明
- --PAR=value
临时修改GMT参数的值,可重复多次使用。参数列表见 配置参数
ASCII 格式精度
ASCII 格式输出数据通过 gmt.conf 配置文件控制。控制经纬度格式的参数为 FORMAT_GEO_OUT ;控制绝对时间的的参数包括 FORMAT_DATE_OUT 和 FORMAT_CLOCK_OUT ;普通浮点数通过参数 FORMAT_FLOAT_OUT 控制。上述格式控制可能会导致精度损失,这会在下游计算中导致一些问题。 如果用户需要保证数据精度,则应考虑将数据写为二进制文件,或者使用 FORMAT_FLOAT_OUT 指定更多的有效数字。
示例
注: 下面是该模块的一些有效语法示例。使用远程文件(文件名以 @ 开头)的示例可以剪切并粘贴到您的终端中进行测试。其他需要输入文件的命令只是常见的使用类型的虚拟示例,但不能按编写的原样运行。
以最小二乘法寻找最拟合远程文件 @sat_03.txt 中 (经度, 纬度) 点的大圆参数:
gmt fitcircle @sat_03.txt -L2 -Fm
假设在文件 ship.xyg 中有沿着弯曲船迹的 经度, 纬度, 重力 数据。希望将这些数据投影到大圆上,并按距离进行重采样,以便对其进行滤波或检查其频谱:
gmt fitcircle ship.xyg -L2
gmt project ship.xyg -Cox/oy -Tpx/py -S -Fpz | gmt sample1d -S-100 -I1 > output.pg
此处,ox/oy 是 fitcircle 得到的平均位置的经纬度,而 px/py 是极点的经纬度。文件 output.pg 包含了沿最拟合 ship.xyg 的大圆每隔 1 km 采样一次的距离和重力数据。
数据文件 data.txt 中包含 经度, 纬度 点,使用 L2 范数返回北半球大圆极点位置:
gmt fitcircle data.txt -L2 -Fn > pole.txt
用两种计算方法拟合了数据的大圆弧路径和小圆弧路径,并借助 project 生成路径坐标。
#!/usr/bin/env bash
gmt begin fitcircle_ex1
# Fit great circle to red points and small circle to green points
# Plot the best-fitting great and small circles as well as the
# location of the mean locations and pole locations for both
# the -L1 and -L2 options (i.e., -L3).
gmt fitcircle gcircle.txt -L3 > g.txt
gmt fitcircle scircle.txt -L3 -S > s.txt
gpole1=`grep "L1 N Hemisphere" g.txt | gawk '{printf "%s/%s\n", $1, $2}'`
gpole2=`grep "L2 N Hemisphere" g.txt | gawk '{printf "%s/%s\n", $1, $2}'`
spole1=`grep "L1 Small Circle Pole" s.txt | gawk '{printf "%s/%s\n", $1, $2}'`
spole2=`grep "L2 Small Circle Pole" s.txt | gawk '{printf "%s/%s\n", $1, $2}'`
slat1=`grep "L1 Small Circle" s.txt | gawk '{print 90-$NF}'`
slat2=`grep "L2 Small Circle" s.txt | gawk '{print 90-$NF}'`
gmt plot -Rg -JG-30/40/7i -Bg gcircle.txt -Sc0.04i -Gred -Xc -Yc
gmt plot scircle.txt -Sc0.04i -Ggreen
gmt project -G1 -T$gpole1 -L-180/180 | gmt plot -W3p
gmt project -G1 -T$gpole2 -L-180/180 | gmt plot -W1p,-
gmt project -G1/$slat1 -T$spole1 -L-180/180 | gmt plot -W3p
gmt project -G1/$slat2 -T$spole2 -L-180/180 | gmt plot -W1p,-
grep "Great Circle Pole" g.txt | gmt plot -Sa0.2i -Gred -W0.25p
grep "Small Circle Pole" s.txt | gmt plot -Sa0.2i -Ggreen -W0.25p
grep "L1 Average" g.txt | gmt plot -Sa0.2i -Gyellow -W0.25p
grep "L2 Average" g.txt | gmt plot -Sa0.2i -Gyellow -W0.25p
grep "L1 Average" s.txt | gmt plot -Sa0.2i -Gyellow -W0.25p
grep "L2 Average" s.txt | gmt plot -Sa0.2i -Gyellow -W0.25p
rm g.txt s.txt
gmt end
fitcircle示例