mgd77list

官方文档

mgd77list

简介

从 MGD77 文件中提取数据

mgd77list 读取 MGD77 文件并生成 ASCII 或二进制表数据。MGD77 文件包括测线信息,比如 ID,时间,位置,控制代码和地球物理观测,其中地球物理观测数据可能包括:重力,磁,水深等,因此还可能包括对这些观测数据的改正,例如:Eotvos 改正和 diurnal 改正。MGD77+ NetCDF 文件还可能包含其他用户自定义信息,见 mgd77info-C 选项;若想添加自定义列,参考 mgd77manage 。用户可以提取包括上面信息以及下面信息的任意组合,其中包括 8 个计算量(距离、航向、航向变化、速度、Carter 改正、Eotvos 改正以及重力和磁的全球参考场)和时间的子部分(年、月、日、时、分、秒)以及 GEODAS id 以及权重(见 -W )等。通过指定沿轨的累积时间或距离或者指定地理区域,可以选定特定的数据。提取出来的数据可以使用一定的逻辑判断来进一步筛选。如果需要提取多个测线的信息,则多个测线之间由段信息分隔。

语法

gmt mgd77list GEODAS-ids -Fcolumns[,logic][:bittests] [ -Ac|d|f|m|tcode[+f] ] [ -DA|astartdate ] [ -DB|bstopdate ] [ -E ] [ -Gastartrec ] [ -Gbstoprec ] [ -Ia|c|m|t ] [ -L[corrtable] ] [ -Nd|sunit ] [ -Qa|c|vmin/max ] [ -Rregion ] [ -Sastartdist ] [ -Sbstopdist ] [ -T[m|e] ] [ -V[level] ] [ -Wweight ] [ -Zn|p ] [ -bobinary ] [ -hheaders ] [ -jflags ] [ --PAR=value ]

必选选项

NGDC-ids

可以是 5 种说明符种的一种或者几种:

  1. 8 个字符的 GEODAS ID,例如:01010083,JA010010

  2. 2 个字符的机构 ID,将会返回所有该机构的测线

  3. 4 个字符代码,返回对应机构和测量船的测线,机构和测量船的代码见 mgd77info -L

  4. =listlist 文件中包含 GEODAS ID 列表,每行一个记录

  5. 什么都不指定,返回所有的测线

如果不指定文件扩展名,则搜索下面 4 个扩展名。搜素顺序为:

  • MGD77+ (“.nc”)

  • MGD77T (“.m77t”)

  • MGD77 (“.mgd77”)

  • 普通文本文件 (“.dat”)

使用 -I 选项可以略过其中的某种或几种格式。

搜索文件时首先在当前目录查找,如果未设置 $MGD77_HOME, 则在默认的 $GMT_SHAREDIR/mgd77 目录查找,如果设置了 $MGD77_HOME,则在其下的 $MGD77_HOME/mgd77_paths.txt 文件中保存的路径中查找。

-Fcolumns[,logic][:bittests]

指定输出列 columnscolumns 中的多列必须使用逗号分隔,列名为缩写,按给定的顺序输出。如果列名为大写字母,则表示该列输出中不能存在 NaN。除非经过设置,否则,输出的 ASCII 文件将使用 FORMAT_FLOAT_OUT 指定的格式。所有的可用的列名的缩写如下表:

列名

含义

recno

计数器

dst

数字记录类型,通常为 3 或者 5 (Y2K-compliant 测量)

id

测量 ID 字符串

ngdcid

8 字符的 NGDC(现在为 NCEI)测线 ID 字符串(通常是文件前缀)

time

时间,从绝对时间(默认),相对时间,以及小数年时间中选择,其中三种时间的参
数设置分别为:
- 绝对时间:FORMAT_DATE_OUTFORMAT_CLOCK_OUT
- 相对时间:FORMAT_FLOAT_OUTTIME_SYSTEM 或者(
- 小数年时间:FORMAT_FLOAT_OUT

lon

经度,格式由 FORMAT_GEO_OUT 指定

lat

纬度,格式由 FORMAT_GEO_OUT 指定

twt

双程传播时间,单位 s

depth

改正后的测深,单位为 m,正值,表示海面下深度

mtf1

传感器 1 的总磁场强度,单位 nTesla

mtf2

传感器 2 的总磁场强度,单位 nTesla

mag

残余磁异常,单位 nTesla

gobs

重力,单位 mgal

faa

自由空气重力异常,单位 mgal

ptc

位置类型代码,1 为固定位置,3 为内插位置,9 为未指定

bcc

测深改正代码。
- 01-55 Mattews zone 改正,
- 59 Mattews 改正,但未指定 zone,
- 60 S,Kuwahara formula for T-S,
_ 61 Wilson formula for T-S,
- 62 Del Grosso formula for T-S,
- 63 Carter’s tables,88 其他,在头部记录中,
- 99 未指定

btc

测深类型代码,1 观测值,3 内插值,9 未指定

msens

评估残余磁场的传感器,1 第一个或者 leading 传感器,2 第二个或 trailing
传感器,9 未指定

msd

磁传感器深度(或高度),单位 m,向下为正

diur

磁 diurnal 改正,单位 nTesla

eot

Eotvos 改正,单位 mgal

sln

Seismic Line Number 字符串

sspn

Seismic Shot Point Number 字符串

nqc

导航质量代码,5 怀疑(测量机构),6 怀疑(NCEI), 9 确定没问题

year

month

day

hour

min

sec

dist

沿轨距离,计算方法见 -j ,单位见 -N [km]

az

方位角,从北方向顺时针计算,单位 度

cc

航向变更,单位 度

vel

速度,单位见 -N [m/s]

weight

该数据集权重,见 -W

carter

Carter 深度改正(必须有 twt 的前提下)

igrf

国际地磁参考场(总场),单位 nTesla

ngrav

国际重力参考场,即正常重力,单位 mgal。
- 默认使用头部记录中的 Gravity Theoretical Formula Code 参数
- 如果该参数未设置就使用 IGF80。也可以使用
-Af 指定

ceot

从导航信息中计算 Eotvos 改正,
E = 7.5038 * V * cos(lat) * sin(az) + 0.004154 * V^2

处上述列名外,下表中还列出了一些其他可识别的参数:

参数

含义

mgd77

输出所有的 27 个 MGD77 字段

mgd77t

输出所有的 26 个 MGD77T 字段

geo

输出 10 个字段,分别为 timelonlat 和 7 个地球物理观测 twtdepthmtf1mtf2maggobs,和 faa

dat

mgd77t 相同,但是使用 plain 表文件顺序

all

返回文件中所有数据列

allt

mgd77t 相同,但是时间项输出为 日期-时间 格式

在这些集合后面使用 + 追加 distazimccvel,和 weight 将可输出对应信息。对上面提取的结果还可进行逻辑测试,其中 logic 由一个或多个逗号分隔的 parOPvalue 指令组成,其中 par 是上面列出的列名中的一个,OP 为逻辑运算符(<,<=,=,!=,>=,>,|),value 为常数。符点数进行数值比较,字符参数进行词法比较。位比较( | )中 value 中必须至少有一个位的结果是 1;且最少有一个逻辑通过测试测可以输出结果。但如果使用大写列名,则必须所有的逻辑测试通过才可输出。

:(1) 指定对某列进行逻辑判断并不意味着该列被输出,输出必须经过指定。(2) 某些运算符是特殊的 Unix 字符,建议在 -F 整个参数外添加引号。(3) 逻辑测试仅适用于观测数据,派生数据,例如距离和速度等,必须使用 -D-Q-S 等选项。

对于 MGD77+ 文件,可以追加 :bittests ,即一个冒号,后面为一个或多个逗号分隔的 +-col 项。+ 表示所选位必须是 1(打开),- 表示必须为 0(关闭)。所有的位必须都通过测试。默认情况下,具有特殊的 MGD77_flags 列的 MGD77+ 文件将使用这些标志,并且将与打开(ON)位相关的观测设置为 NaN,即表示出现错误。: 后面不添加任何信息将关闭此行为。需要注意的是,这些记录标志和用于沿轨的系统改正不同,后者不能使用 -T 选项。

可选选项

-Ac|d|f|m|tcode[+f]

默认情况下,改正后的测深( depth ),残余磁异常( mag ),自由空气重力异常( faa ),以及 Carter 深度改正( carter )如果被 -F 选项选择的话,都会按原样输出;-A 选项可改变该行为。对于上面的每种数据,都有 2-4 种方法来调整数据。通过 cdf 或者 m 可分别选择上述对应的变量。也可以通过数字代码相加的和表示选择多种处理。例如,-Ac3 将首先尝试使用 -Ac1 表示的方法来估计 Carter 改正,但如果深度为 NaN,将使用 -Ac2 表示的方法。在所有的情况下,如果计算过程中存在 NaN,则会导致结果为 NaN。使用 +f 选项将会重新计算异常,即使文件中异常为 NaN。此外,用户可以使用 -At 为没有时间的测线通过距离和持续的时间来创建伪时间。

-Ac

设置计算 carter 改正的方法。C(twt) Carter 改正的深度(同时依赖 lonlat );U(twt, v) 是未改正的深度(U = twt * v / 2 ),其中的 v 使用 MGD77 头部信息中的 “Assumed Sound Velocity” 参数,如果该速度为无效值,则假定为 1500 m/s,也可以自己设定 v 并追加 m/s 作为单位;TU(depth, v) 是从未改正的深度计算的双程传播时间;TC(depth) 是通过 Carter 改正后得到的深度计算的双程传播时间。下面介绍可选择的选项:

-Ac1[,v] 返回 U(twt, v) 和 depth 的差 [默认]

-Ac2[,v] 返回 U(twt, v) 和 Carter (twt) 的差

-Ac4[,v] 返回未改正的 depth 和 Carter (TU(depth)) 的差

-Ac8[,v] 返回 U(TC(depth), v) 和 depth 的差

-Ad

确定如何获取 depth 输出:

-Ad1 返回储存在数据集中的 depth [默认]

-Ad2[,v] 返回计算的未改正的深度 U(twt, v)

-Ad4 返回计算的改正后的深度 C(twt)

-Af

确定如何获取 faa 输出。如果计算中需要 ngrav (即International Gravity reference Field, IGF 或正常重力),则根据 MGD77 标题参数中的 “Theoretical Gravity Formula Code”计算重力异常,如果上述代码不存在或无效,默认设置为 4。可以在下面 4 个代码中选择来设置重力参考场:

  • 1 代表 Heiskanen 1924

  • 2 代表 IGF 1930

  • 3 代表 IGF 1967

  • 4 代表 IGF 1980

可设置的选项如下:

-Af1[,field] 返回储存在数据集中的 faa [默认]。可使用 -F 选项输出 ngrav

-Af2[,field] 返回 gobsngrav 的差

-Af4[,field] 返回以下结果 gobs + eot - ngrav

-Af8[,field] 返回以下结果 gobs + pred_eot - ngrav

-Am

确定如果获取 mag 输出。文件中可能存在一个或者两个测量值(mtf1mtf2 ),msens 可表明其中哪个传感器优先。可设置的选项如下:

-Am1 返回储存在数据集中的 mag [默认]

-Am2 返回 mgfxigrf 的差,其中 xmsens 指定,可以为 1 或者 2,表示优先使用的传感器,如果未指定则默认为 1

-Am4 返回 mgfxigrf 的差,其中 xmsens 指定,可以为 1 或者 2,表示优先使用的传感器,如果未指定则默认为 2

-Amcoffset 使用由于测量位置和船位置不同(导航引起)导致的改正值。通过将总磁场重新差值到船所在的位置得到(可能存在一定的偏移 offset )。由于插值以及导航质量差可能会导致出现重复点。GMT 已经采取一定措施处理这些情况,但不能保证全部处理干净。内插算法使用 GMT_INTERPOLANT 设置的算法。offset 的默认单位为 m,可以通过 fkMu 设置为英尺,km,英里,海里和 survery 英尺。

-At

使用已知的测线观测时长来计算测线缺失的时间记录,该计算时间记录为伪时间记录

-Dastartdate

不列出开始日期 startdata 之前收集的数据,startdata 格式为 yyyy-mm-ddT[hh:mm:ss]。使用 -DA 可排除缺失时间记录的数据。[默认输出所有数据]

-Dbstopdate

不列出截止日期 stopdata 之后收集的数据,stopdata 格式为 yyyy-mm-ddT[hh:mm:ss]。使用 -DB 可排除缺失时间记录的数据。[默认输出所有数据]

-E

精确匹配,仅输出指定的列 [默认输出至少一个匹配的列]

-Gastartrec

不列出在 startrec 之前的记录 [默认为 0,即第一个记录]

-Gbstoprec

不列出在 stoprec 之后的记录 [默认为最后一个记录]

-Ia|c|m|t

忽略某些数据格式的文件。a|c|m|t 分别表示忽略 MGD77 ASCII、MGD77+ NetCDF、MGD77T ASCII 、tab 分隔的普通文本文件。该选项可以重复使用以忽略多个格式

-L[corrtable]

使用改正表 corrtable 中的值来做改正[默认使用 $MGD77_HOME 文件夹下的 mgd77_corrections.txt 文件作为改正表]。改正表格式见 改正表

-Nd|sunit

设置距离和速度的单位。 d 表示距离,s 表示速度,然后可以分别指定距离和速度的单位。

  • e m 或 m/s,

  • f feet 或 feet/s

  • k km 或 kms/hr

  • m miles 或 miles/hr

  • n nautical miles 或 knots

  • u survey feet 或 survey feet/s).

默认地,设置为 -Ndk -Nse (km 和 m/s)

-Qamin/max

指定可接受的方位角范围 min/max ,只输出该方位角范围内的记录 [0/360]。

-Qcmin/max

指定航向改变的范围 min/max ,只输出该范围内的记录 [-360/+360]。使用 -QC 可在判断前先取绝对值。

-Qvmin/max

指定速度范围 min/max ,只输出该范围内的记录 [0/infinity]。

-Rxmin/xmax/ymin/ymax[+r][+uunit] (more …)

指定数据范围

-Sastartdist

只列出测线累积距离大于 startdist 的数据,可追加单位。

-Sbstopdist

只列出测线累积距离小于 stopdist 的数据,可追加单位。

-T[m|e]

关闭基于 MGD77+ 文件中的改正项的自动调整,用于抵消源机构使用 MGD77+ 导出数据创建 MGD77 时使用的错误的单位等问题,普通 MGD77 文件不受该选项影响。m 表示只用于 MGD77 文件中存在的变量,e 表示只用于扩展的变量,默认两者都包括。 :基于记录的 E77 标志(仅限于 MGD77+ 文件)不被视为系统误差改正。相反,这些位标志可以通过 -F 选项中的冒号来控制。

-Wweight

为数据设置权重。权重的输出必须在 -F 选项中设置。如果使用 blockmeanblockmedianblockmode 模块进行加权平均处理数据,可使用该选项

-Zn|p

为低于海平面的 depthcartermsd 指定符号,-Zn 指定为负的测深,默认使用 -Zp 表示向下为正

-V[level] (more …)

设置 verbose 等级 [w]

-bo[ncols][type][w][+l|b] (more …)

设置二进制输出的数据格式

-h[i|o][n][+c][+d][+msegheader][+rremark][+ttitle] (more …)

跳过或生成指定数目的头段记录

-je|f|g (more …)

设置球面距离的计算方式

-^-

显示简短的帮助信息,包括模块简介和基本语法信息(Windows下只能使用 -

-++

显示帮助信息,包括模块简介、基本语法以及模块特有选项的说明

-? 或无参数

显示完整的帮助信息,包括模块简介、基本语法以及所有选项的说明

--PAR=value

临时修改GMT参数的值,可重复多次使用。参数列表见 配置参数

示例

01010047.mgd77 文件中提取 distance,heading,gravity 以及 bathymetry,将数据限定为 June 3 1971 20:45 以后,且累积观测距离小于 5000 km 的范围内

gmt mgd77list 01010047 -Da1971-06-03T20:45 -Sb5000 -Fdist,azim,faa,depth > myfile.txt

使用 Cruises.lis 文件中列出的所有测线中的自由空气重力异常以便后续作为 blockmeansurface 模块的输入,数据必须在限定的区域内,且输出为二进制

gmt mgd77list `cat cruises.lis` -Flon,lat,faa -R-40/-30/25/35 -bo > allgrav.b

Cruises.lis 中列出的测线数据中提取深度超过 9000 m 且未插值( btc != 1 )的数据的位置

gmt mgd77list `cat cruises.lis` -F"depth,DEPTH>9000,BTC!=1" > really_deep.txt

从所有的 MGD77+ NetCDF 文件中提取 dist,faa,和 grav12_2 ,要求这些字段的值不能为 NaN,测线文件的 ID 位于 Cruises.lis

gmt mgd77list `cat cruises.lis` -E -Ia -F"dist,faa,grav12_2,depth<3000" > \
    shallow_grav.txt

与上例使用相同的数据,但只提取 faa 的位标志为 BAD 的数据

gmt mgd77list `cat cruises.lis` -E -Ia -F"dist,faa,grav12_2:+faa" > bad_grav.txt

输出所有测线中的 lon,lat,mag 和 faa,根据最新的参考字段计算 mag 和 faa 的残余量

gmt mgd77list `cat cruises.lis` -Flon,lat,mag,faa -Af2,4 -Am2 > data.txt

重新计算的异常

当通过 -A 选项显式地或通过 MGD77+ 文件中 E77 元数据隐式地指定重新计算异常时,GMT 只计算原始异常中不为 NaN 的异常。这样的做的原因是,许多异常列包括手动编辑的修改,这些结果不能被重新计算。

IGRF (International Geomagnetic Reference Field)

IGRF 基于英国地质调查局的 Susan Macmilan 编写的 Fortran 程序,由 Algrave 大学的 Joaquim 通过 f2c 转换到 C 语言,最终 Paul Wessel 改成 GMT 风格。

IGF (International Gravity reference Field)

这里给出代码中使用的公式

(1) g = 978052.0 * [1 + 0.005285 * sin^2(lat) - 7e-6 * sin^2(2*lat) + 27e-6 * cos^2(lat) * cos^2(lon-18)]

(2) g = 978049.0 * [1 + 0.0052884 * sin^2(lat) - 0.0000059 * sin^2(2*lat)]

(3) g = 978031.846 * [1 + 0.0053024 * sin^2(lat) - 0.0000058 * sin^2(2*lat)]

(4) g = 978032.67714 * [(1 + 0.00193185138639 * sin^2(lat)) / sqrt (1 - 0.00669437999013 * sin^2(lat))]

如果您发现上述公式存在问题,请向 GMT 官方 报告。

改正表

改正表是一个 ASCII 文件,其中包含实施改正所需的系数和参数。文件头部可以存在以 # 为开头的注释,改正记录的格式如下

cruiseID observation correction

其中 cruiseID 为测线 ID,NCEI 定义的前缀,observation-F 选项里列名表中的某个列名, correction 由一项或者多项组成,所有的项在输出观测值前都被扣除,每项的格式为

factor[*[function]([scale](abbrev[-origin]))[^power]]

其中方括号中的值是可选的,除不同项之间,其他地方不允许有空格。factor 是基函数的幅值,可选的 function 可以是 sin,cos,或者 exp。可选的 scaleorigin 用于对参数进行一定的转换。 abbrev 参数是上面列出的列名之一。如果 originT ,则将其替换为文件中第一个 abbrev 值(通常同于时间)。如果第一条记录为 NaN,则将 origin 设置为 0。在乘以幅度前,可也对整个表达式设置一定的幂指数 power

下面是对测线 99999999 的虚构数据的改正示例,三行分别表示:对深度 depth 进行 Carter 改正,对自由空气重力异常 faa 移除线性趋势,对磁异常 mag 进行依赖航向和纬度的改正,对重力 gobs 需要添加 10 mGal 的增量

99999999 depth 1.0*((carter))

99999999 faa 14.1 1e-5*((time-T))

99999999 mag 0.5*cos(0.5*(azim-19))^2 1.0*exp(-1e-3(lat))^1.5

99999999 gobs -10

参考

MGD77 (Marine Geophysical Data Exchange Format) 格式见 http://www.ngdc.noaa.gov/mgg/dat/geodas/docs/mgd77.txt.

IGRF 见 https://www.ngdc.noaa.gov/IAGA/vmod/igrf.html

相关模块

mgd77convert, mgd77header, mgd77magref mgd77manage, mgd77path, mgd77track, mgd77sniffer, mgd77track