大家好!第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中把这个岛屿删除(如果不重要的话)。
以上两个代码可从该link下载: https://share.weiyun.com/5wJVmAHW Reference: GSHHS Dataset (www.52ocean.cn) 构建三角形网格是多数人学习FVCOM的第一步,而导入岸线数据又是使用SMS建立网格的最开始工作。希望本期内容能够帮到对FVCOM感兴趣、或刚刚接触FVCOM的朋友。好的开始是成功的一半~ $ E* S' B k0 v; e- `
|