distaz

本节贡献者

田冬冬(作者)、 姚家园(审稿)

最近更新时间

2021-01-12

阅读须知
  1. 我们假定用户已经根据《配置操作系统》中的内容安装了 C/C++ 和 Fortran 编译器 gccg++gfortran 以及常用命令行工具 makegit 等。

  2. 修改环境变量时,我们假定用户当前使用的 Shell 是 Bash,且 Bash 配置文件 为 ~/.bashrc。Z Shell (zsh)用户应修改 ~/.zshrc。不确定自己当前使用的是何种 Shell 的用户,可检查 echo $SHELL 命令的输出。

  3. 所有软件的安装方式及安装路径,均遵循《文件管理实践经验》《软件安装实践经验》


distaz 是一个可以用于计算球面上任意两点间球面距离、方位角和反方位角的小工具。

相关代码

distaz 代码很短,简单易懂,其采用的地球模型为椭球模型,精度上可以满足需求。

使用方法

仅以 C 语言版本的 distaz 为例,用如下命令即可编译:

$ cc distaz.c -o distaz -lm

并将生成的可执行文件移动到 ~/bin/ 目录下:

$ mkdir -p ~/bin/
$ mv distaz ~/bin/

~/bin/ 路径尚未添加到环境变量 PATH 中,则执行如下命令:

$ echo 'export PATH=${HOME}/bin:${PATH}' >> ~/.bashrc
$ source ~/.bashrc

其输入为台站纬度、台站经度、事件纬度、事件经度:

sta_lat sta_lon evt_lat evt_lon

输出为震中距(单位为°)、反方位角和方位角:

Delta Baz Az

例如,台站位于(10°S,14°E),地震位于(40°N,50°W):

$ distaz -10 14 40 -50
77.218 314.930 114.795

备注

C 语言版的 distaz 默认输出小数点后 3 位。可以将源码 distaz.cprintf("%6.3f %6.3f %6.3f\n", delta, baz, az);%6.3f 修改为更高精度的输出格式(例如 %8.5f)以达到所需的精度。