[物理海洋] [SMS] CST岸线文件的制作

[复制链接]

大家好!第14期,使用MATLAB来生成CST岸线文件。

这一期是对过去第二期内容的补充。在第二期中,我介绍了如何从GSHHG岸线数据中导出研究海域的岸线数据,并生成SMS可识别的cst文件。中间的几个细节和方法,当时由于篇幅和时间所限,没有展开讨论。许多朋友看完以后到后台问我这个问题。因此,我将在这期针对这些细节具体说明,以便大家可以用这个方法顺利将岸线导入SMS。

如果还没有看过第二期的朋友,可以先去浏览第二期,以便更好的理解接下来的内容。

[SMS]获取gshhs岸线数据

首先,从GSHHS官网上下载岸线数据:

http://www.soest.hawaii.edu/wessel/gshhg/

目前最新版本是2.3.7。官网为我们提供了nc、shape和binary三种格式。我是使用MATLAB处理的数据,MATLAB中提供了gshhs的命令来读取binary格式的数据,因此我选择下载该格式。下载完成后,以下五个文件就是我们所需要的岸线文件:

gshhs_c.b

gshhs_l.b

gshhs_i.b

gshhs_h.b

gshhs_f.b

文件名中的不同字母代表不同分辨率,依次是

crude(c)

low(l)

intermediate(i)

high(h)

full(f)

数据准备好后,我们就可以开始处理数据了。整个处理过程分为两步,程序在文末给出,感兴趣的朋友可以尝试一下。

第一步是将我们下载的binary格式文件中的经纬度信息提取出来并写入mat文件。在原始binary文件中,有许多信息是我们不需要的,比如面积、数据类型、数据来源等,这些信息增大了我们在处理岸线时花费的时间,因此,最好在开始时就删掉它们,只把我们最关心的经纬度信息保存到mat文件。此步程序为convert_gshhs_b2mat.m,输入变量为原始binary文件路径和输出mat路径。

第二步,读取mat文件,根据设定的经纬度信息,筛选出在此区域内的岸线,并保存成cst格式。这一步的主要运算是各个多边形岛屿的区别和连接处理,以及存储成cst格式。此步程序为gen_coastline_cst.m,输入变量是上一步mat文件路径、输出cst文件路径、经纬度范围和最大岛屿数目。

最后的结果如下图。图中,蓝色的线为陆地岸线,一般情况下,这条线最长;红色的线为其他的岛屿岸线,在分辨率较低或者岛屿较小时,某些岛屿可能会被简化为三角形,这时,可以考虑选择更高的分辨率或者在SMS中把这个岛屿删除(如果不重要的话)。

da6e96f6366b5b31f8708adb453166f4.png

以上两个代码可从该link下载:

https://share.weiyun.com/5wJVmAHW

Reference:

GSHHS Dataset (www.52ocean.cn)

构建三角形网格是多数人学习FVCOM的第一步,而导入岸线数据又是使用SMS建立网格的最开始工作。希望本期内容能够帮到对FVCOM感兴趣、或刚刚接触FVCOM的朋友。好的开始是成功的一半~

4 R# ~5 ~: N+ F) O6 c! l
回复

举报 使用道具

相关帖子

全部回帖
暂无回帖,快来参与回复吧
懒得打字?点击右侧快捷回复 【吾爱海洋论坛发文有奖】
您需要登录后才可以回帖 登录 | 立即注册
万老师
活跃在2024-2-1
快速回复 返回顶部 返回列表