|
1 g' N9 V1 v3 k( p( K+ N AcrGIS在地理信息系统空间分析有着得天独厚的优势,因此成为了我研究目前课题的主要工具。但是在交流过程中,由于大家处理数据和画图的主力工具不同,往往会遇到数据格式转换的问题。本文将介绍如何使用GMT 4的命令实现地形数据格式Arc ASCII与GMT可识别的netCDF之间的转换。 将Arc ASCII转换为GMT netCDF格式我的专栏文章海洋地球科学开放数据库列举了一些实用的数据库。如下图,我们首先从GMRT选取下载一段高精度的Arc ASCII格式的多波束文件MAR.asc。
- ?5 t8 c: Z9 x* I1 i" F ! ]6 ?' q* o+ r; c0 r$ B) k1 x
然后使用xyz2grd 命令将Arc ASCII格式的数据直接转换为GMT可识别的netCDF格式:
; f( s2 X9 T: {* }; y" _$ m xyz2grd MAR.asc -GMAR.grd -E -V & Z: n$ `3 ^! C# Z7 O4 Z9 B3 d8 X: C( z
如果是从JAMSTEC等数据库下载的ASCII文件,个人习惯使用nearneighbor插值: " X0 `4 z( }/ e% |) ~
blockmean MAR.dat -R-45.6/-44.2/25.3/27 -I0.001 > MAR.xyz" w9 S/ }" ?& Y) E9 U
nearneighbor MAR.xyz -V -R -I -S0.002 -N2 -GMAR.grd ) G5 Y, q+ L4 U3 d
输出的MAR.grd文件即为GMT netCDF格式。 将GMT netCDF转换为Arc ASCII格式将GMT netCDF格式的数据转换为Arc ASCII格式时,首先需要对netCDF文件重采样,使经、纬度方向的采样率完全相同,然后再使用grd2xyz命令将其转换为Arc ASCII格式:
+ N$ k- u& @7 ~$ `2 i) g grdsample MAR.grd -I0.001= -GMAR.nc
$ }( ]7 P4 q L' f, a' L grd2xyz MAR.nc -E > MAR_G.asc
5 |, B/ K$ y |* x J7 c6 Z 这里需要注意的是,重采样命令中的-I选项必须加上"=",使输出的MAR.nc文件在经、纬度方向的采样率完全相同,从而可以用于grd2xyz命令转换数据格式。
8 F" m5 ^2 ^% b 最终输出的MAR_G.asc文件即为Arc ASCII格式。使用ArcMAP计算一下hillshade,就可以看到下图的高精度海底地貌啦:
4 _( o* K3 k+ t1 X( w 总结容易踩的坑a. grd2xyz和xyz2grd命令处理涉及Arc ASCII格式数据时,必须加上"-E"选项!
8 o# b7 p7 z" ?+ x b. GMT netCDF转Arc ASCII时,第一步的重采样命令中的"-I"选项必须加上"="! ( I& R& e8 q+ g4 d8 G! T" ^
最后声明:本文中涉及的GMT代码均为GMT 4版本,不适用于GMT更高版本哦!
; R( q" T+ ]/ X1 h6 U% P+ m1 i' o/ ^( {% H8 g% Y- |8 a/ x
3 O. ~9 S7 ~! @0 u2 I
% ^! c1 k( N) @8 k
5 O$ y8 u, ^# ?. ^8 K
|