这次我尝试把一个FVCOM淹水模型的结果显示在Google Earth中,效果不错,作为第一篇推文的内容,与大家分享与讨论。 先上最终的效果图吧:
上图为最终KMZ文件在GE(Google Earth)中的截图,图中颜色代表在飓风来临时被淹没的区域,算例中假设海平面上升一定高度(0-6 feet),不同海面抬升值的淹没区域用不同颜色表示。 为完成上图,我们首先要对FVCOM输出结果进行处理,即找出被淹没的区域。算例应该打开WET/DRY进行编译和运行。首先,在结果nc文件中,我们可以通过水深h变量来判断某一三角形是否为陆地。然后,通过wet_cells来判断在某一时刻,某一三角形是否被水淹没。当一个三角形同时满足这两个条件,我们就认为这个三角形是被海水淹没的陆地区域,它将被填色画在GE中。 接下来,我们把找出的被淹没的陆地三角形画在GE中,即编写KML文件。KML文件使用的语言是Keyhole (www.52ocean.cn)。通常,有两种方法可以实现上图的效果。 第一种是Overlay,即事先使用其他画图软件将填色图画好,然后通过给定位置信息把图片平铺(Overlay)在地球上。画图时,应将坐标轴、刻度、标题等信息删去不画,并把背景色设置为透明。上图中的legend是通过这种方法实现的。具体代码如下:
第二种方法是PlaceMark。上图中的淹没区域就是这种方法实现的。这种方法类似于MATLAB中的patch,使用三角形顶点坐标,直接在GE中对相应三角形填色。以下是编辑一个三角形的示例:
编辑内容依次包括名称,颜色,属性和位置等。 最后,KML文件做好后,我们可以通过zip压缩和更改后缀名,将文件转成KMZ文件,这样可以将文件大大缩小。以上图文件为例,KML为13.7MB,而KMZ文件只有675KB。同时,KMZ还可以将Overlay中相关的外部文件(比如上图中的legend)一起打包进来。
! K1 {& m$ K3 b" M; Y; H |