介绍了解了WebGL的基础知识后,我去看风场数据的获取和分析逻辑,又遇到了问题。系统:MacOS版本:11.6OriginMyGitHub安装ecCodes文章中示例源码库的描述中,必须先安装ecCodes,尝试使用HomeBrew,但是不行。于是按照ecCodes源码库的介绍在本地编译安装。在做第4步的时候遇到了一个问题:NoCMAKE_Fortran_COMPILERcouldbefound。查询信息说缺少gfortran,可以使用命令查看是否安装:其中gfortran有几种安装方式,我选择下载安装包。解决该问题后按照提示继续,编译安装成功,版本为2.23.0。执行脚本执行脚本时出现错误信息:grib_set:commandnotfoundgrib_dump:commandnotfound但是在之前安装的文件夹的bin目录下找到了grib_set的执行文件。推断是没有在全局路径中注册。查看ecCodes安装路径是否注册到全局路径:echo$PATH这里遇到的问题是没有注册到全局路径,设置方法可以参考这里。修改示例:vim./.bash_profile进入编辑模式后,添加如下内容:exportECCODE_HOME=/xx/xx/xx/xx/eccodesbuild/binexportPATH=$PATH:$ECCODE_HOME保存后,使其生效source./.bash_profile如果您想知道它是否有效,请尝试命令grib_set-h。如果发现没有效果,可能与你使用的shell有关。你可以参考这里。数据生成脚本可以正常执行,但是生成的数据是错误的:undefined:1{"u":,"v":}查看源库的问题,也有人提出这个问题。在里面尝试了一些方法后,发现这个pull修改可以正常运行。所以我fork它来获取修改后的内容并更改了一些数据,参见XXHolic/webgl-wind。数据含义在download.sh脚本中。数据解析后,生成可读文件tmp.json。让我们看一下这个文件中的主要结构和一些数据:{"u":{"messages":[[{"key":"name","value":"Ucomponentofwind"},{"key":"Ni","value":360},{"key":"Nj","value":181},{"key":"values","value":[5.51964,5.71964,...]},{“键”:“最大值”,“值”:103.02},{“键”:“最小值”,“值”:-36.0804}]]},“v”:{“消息”:[[{"key":"name","value":"风的V分量"},{“键”:“getNumberOfValues”,“值”:65160},{“键”:“值”,“值”:[14.9446,14.8446,...]},{“键”:“最大值”,“value":80.3446},{"key":"minimum","value":-66.4554}]]}}看到这些可能有点乱,大气中的气流既有速度又有方向,数学上你可以用一个向量表示在气象学中,如果知道风的方向和大小,就可以得到表示风的向量,u分量和v分量://wswindforceθ数学上描述风向u=ws*cos(θ)v=ws*sin(θ)更详细的介绍参见Wind:uandvComponents。那么,prepare.js中风数据使用的key是:Ni表示一条纬线上有多少个点,简单来说就是有多少列。Nj表示一条经线上有多少个点,简单来说就是有多少条线。values存储组件的所有值。minimum表示组件的最小值。maximum表示组件的最大值。其中Ni和Nj决定生成图像的宽高,颜色对应风速大小映射的主要逻辑如下:for(lety=0;y
