netsel子网划分与解算
受限于数组规模,GAMIT软件最多一次只能解算99个站点的网,事实上,GLOBK内置了子网划分程序netsel,在解算时,其实不必额外写一个程序来进行子网划分。本次解算了120余个站点,探究如何利用netsel程序来进行子网划分解算[1]。
1 netsel模块帮助文档
安装了GAMIT后,netsel将被添加到环境变量中,仅需输入netsel即可输出代码块内的内容,从中可知,netsel必须输入以下几个参数/文件:
- -f RINEX文件的list (通过
ls -s <rinex_files>生成) - -v 速度场文件(直接使用
~/gg/tables/igb14.vel即可) - -n 每个网里的站点数目 (根据个人喜好调节)
- -t 每个网的连接站数量 (通过这些站把各子网连成一张大网,必须大于0)
假设在工程目录的rinex目录下分子网,则以下参数是可选项:
- -s station.info的文件路径 (默认是
../tables/station.info) - -c 两个字母的子网代码 默认会将各子网的expt命名为ne01,ne02,...,如果更改为hb,则为hb01,hb02,...
netsel会打印一个新生成的sites.defaults,通过指定不同的expt,实现划分子网的目的。
NETSEL: Subnetting program for regional GPS networks
NETSEL: Automatic sub-netting of rinex files. Generates a sites.default file
output to screen (normally redirected into file). All rinex files to be processed
are assumed to be already in rinex directory and must be downloaded first.
MOD TAH 150512: Upgraded to allow a sh_gen_stats rw file for input to give the list
of sites to make networks from and to limit the rw magnitude of sites in the solutions.
When the -rw option is used, GLOBK use_site list with the globk OPTION selection.
Usage:
netsel <options>
Options are
-f <file> -- List of rinex files generated with ls -s <rinex files>
-v <file> -- Globk velocity file with site coordinates
-n <number> -- Desired number of sites in each network (will be adjusted to make all
networks about the same size)
-t <number> -- Number of tie sites per network (must be >0)
-s <file> -- Name of station.info file to use (default ../tables/station.info)
-c <code> -- Specifies network code (2-characters). Default ne so that
networks will be ne01, ne02 .... neNN
NEW: 150512
-rw <file> <maxuse> [minrw] -- sh_gen_stats .rw random walk file name and maximum horizontal
random walk value to be used. Output will be GLOBK use_site commands.
Default for <maxuse> 2 mm^2/yr
MOD TAH 230128: Added optional minrw which sets foor for RW process noise when weighting
station. (Default is 0.25 mm^2/yr^2.) Values for individual stations
are given in output. (Sort to find median).
EXAMPLE: Normally run from control directory.
In this case we have 484 sites so about 13 networks will be formed. With -t 2, the overarching netw
have 26 sites (2x13).
ls -s ../rinex/*3280.13o > list.2013.328
netsel -f list.2013.328 -v ../tables/TVN_US_2010.vel -n 40 -t 2 -c tr > & ! ../tables/sites.defaults
Output: ../tables/sites.defaults.2013.328
Site Range Long 231.8650 307.3222 Latitude 24.6594 62.4809 deg
NETSEL: For 484 sites, with nominal 40 sites per network, final selection is:
NETSEL: Fin 38 sites in 13 networks with 28 sites in one network
NETSEL: Number of tie sites 2
#NETWORK Number 001 with 38 sites
# NN # Long Lat Name RK
# 001 1 272.49850 33.16800 AL50 19
# 001 2 272.38440 32.71150 AL55 15
...
# 001 37 271.32690 31.67870 MSWY 21
# 001 38 269.58800 32.84640 MSYZ 14
#NETWORK Number 002 with 38 sites
# NN # Long Lat Name RK
# 002 1 270.62340 38.37820 API1 10
# 002 2 268.81050 39.33390 BWGR 15
....
# 013 1 271.51280 32.82960 MSSB 13
# 013 6 262.66600 41.43910 NECB 13
# 013 2 270.31170 38.74750 TKCH 13
acso_gps tr05 xstinfo
acu5_gps tr13 xstinfo
... xcty_gps tr07 xstinfo
yell_gps tr13 xstinfo
zphr_gps tr07 xstinfo
zphr_gps tr06 xstinfo
(Note here zphr is used in two networks. No site should be used more than twice).
2 实际使用
建立工程文件夹hbc1,在hbc1文件夹内放置brdc、igs和rinex,(事先通过脚本改名,gfzrnx进行rinex文件的格式化操作,统计各天数据的数量,确定站点数据最全的一天用于station.info更新、lfile更新和子网生成),而后进入rinex文件夹,假设48是数据最全的一天,station.info、lfile.已经更新好,我想要每个子网内最多55个站,有5个接边站,则进行如下操作:
bash
ls -s *0480.26o > list.2026.048
netsel -f list.2026.048 -n 55 -t 5 -v ~/gg/tables/igb14.vel >> ../tables/sites.defaults
经过这番操作,sites.defaults内更新了一些新内容,由于涉及坐标就不展示了。这里生成了4个子网,分别为ne01,ne02,ne03,ne04,在hbc1同级目录建立hbc2,hbc3,hbc4三个目录,分别把brdc,igs,rinex链接进各目录,然后对各子网分别进行更新lfile、station.info的操作,由于sites.defaults对rinex文件夹内所有的观测值分了组,因此可以在sites.defaults内对不参与解算的网添加xsite参数,即:在hbc1文件夹内禁用ne02,ne03,ne04的站,以此类推。这里仅展示控制解算的行:
aaaa_gps ne01 xstinfo
......
bbbb_gps ne02 xsite xstinfo
cccc_gps ne03 xsite xstinfo
......
dddd_gps ne04 xsite xstinfo
操作完成后,启动4个tmux窗口,进入各工程目录,稍微错峰开始解算即可。注意,此时的expt名称要设置为ne01,ne02,ne03,ne04,以第一个子网为例,即:
bash
sh_gamit -s 2026 48 57 -orbit igsf -gnss C -expt ne01 -c -metutil Z
TODO
感觉这种操作还是比较麻烦,后面可以搞一套自动化流程来解算。
参考文献
1\] 程传录, 蒋光伟, 聂建亮, 田晓静. 利用双差的超大GNSS基准站网解算方法改进\[J\]. 武汉大学学报 (信息科学版), 2014, 39(5): 596-599.