欢迎光临散文网 会员登陆 & 注册

如何用fes2014全球潮模型做预测

2023-06-26 08:35 作者:北纬20杜  | 我要投稿

前言

    基于Python (C语言也可),MAC系统 (windows也可)

    python我用的编译器是Pycharm,没有python基础不影响使用


1 下载源数据

去aviso官网注册账号https://www.aviso.altimetry.fr/en/data/products/auxiliary-products/global-tide-fes/description-fes2014.html,我印象里注册的时候可以subscribe fes2014. 

  • fes2014_elevations_and_load文件夹用于计算水位,里面有fes2014b_elevations/、fes2014b_elevations_extrapolated/、fes2014a_loadtide/。extrapolated做了空间插值处理,包含更多近岸地区。下载fes2014b_elevations_extrapolated/和fes2014a_loadtide/这两个文件夹,里面都是一堆nc文件

  • fes2014a_currents用于计算潮流,感兴趣也可以下载

数据列表

2 下载源代码

源代码地址:https://github.com/CNES/aviso-fes

下载后打开此目录:/aviso-fes-main/data/fes2014,所有文件夹都是空的,需要把下载的数据放到相应文件夹里

  • 把上一步下载的fes2014b_elevations_extrapolated/夹里所有nc文件拷到/aviso-fes-main/data/fes2014/ocean_tide_extrapolated,load_tide做类似处理

  • 修改ocean_tide_extrapolated.iniload_tide.ini,把nc文件的路径全部改成绝对路径

/aviso-fes-main/data/fes2014
  ocean_tide_extrapolated.ini文件,把nc文件路径全部改成绝对路径


3 安装pyfes

pyfes是基于python的fes2014预报软件,需要安装后调用(通过命令行安装)。这一步大概是最艰难的,有不少人安装的时候出现类似的问题(后面详细说明)

安装guidance:https://github.com/CNES/aviso-fes/blob/main/INSTALL.md

  • 首先,需要安装cmake和netcdf。我看有些教程推荐通过homebrew安装cmake:https://cse.engineering.nyu.edu/cs653/OpenGLCompilationMacLinux8.pdf

  • 然后,安装conda。我直接在anaconda官网下载(如果喜欢折腾也可以通过命令行下载;不建议),如果你用的是mac M1/M2 chip,请不要下载官网提供的 for M1/M2,下载 for intel版本。根据我的经历,m1/m2版本目前大概率不支持pyfes。我下载的m1/m2版本根本找不到pyfes -- 如何确认,安装好anaconda后,打开anaconda navigator,在environment里找pyfes,如果在installed和uninstalled里都找不到,就无法安装pyfes。conda装好后,打开命令行,最前面应该出现base

  • 前面不建议用命令行安装conda,原因是如果你用的是mac m1/m2 chip,命令行下载应该是自动给你下载了anaconda for m1/m2而不是for intel,这样你就无法安装pyfes。希望后续的更新能解决这个问题。但是,pyfes是通过命令行安装的

  • 安装pyfes:在命令行里运行 conda install pyfes -c fbriol

下载for intel版本,无论你用的是什么mac
确认anaconda是否有pyfes

安装pyfes常见错误之一:

Collecting package metadata (current_repodata.json): done
Solving environment: unsuccessful initial attempt using frozen solve. Retrying with flexible solve.
Collecting package metadata (repodata.json): done
Solving environment: unsuccessful initial attempt using frozen solve. Retrying with flexible solve.

PackagesNotFoundError: The following packages are not available from current channels:

  • pyfes

如何解决上述错误:

可以参考这个帖子https://github.com/CNES/aviso-fes/issues/19。我参考其中的办法,先更新conda,再尝试安装pyfes,需要在命令行运行

    conda update --all -c conda-forge

    conda install pyfes -c fbriol -c conda-forge

或者,如果还有相同错误,可以用python3.9创建一个新的环境,在新环境里安装。我建议在报这个错误的时候,打开你的anaconda navigator,确认里面是否能找到pyfes


4 进行预报

打开源代码的此目录:/aviso-fes-main/examples,tide_gauge.py用于预报具体站位某段时间的水位,fes_uv.py用于预报具体站位某段时间的流速,fes_slev.py预报全球的水位,这里以tide_gauge.py举例。在此之前我没学过python,但好在代码不复杂,稍微上网搜一下也就解决问题了。

编译器用的是Pycharm,上一步安装好pyfes后,在pycharm里import pyfes也可能会报错,需要配置一下环境。在pycharm里setting -- project:examples -- python interpreter,选择anaconda3作为interpreter

配置pycharm环境


打开tide_gauge.py,这里用到了argparse函数,意思就是,你需要从命令行向tide_gauge.py传输三个(至少两个)参数,第一个指向ocean配置文件,第二个指向load配置文件,第三个是时间起点,默认是1983/01/01。这两个配置文件就是第二步里的ocean_tide_extrapolated.ini 和 load_tide.ini

此时,直接在pycharm里运行tide_gauge.py会报错,一种正确的运行方式是打开命令行,输入

  • python tide_gauge.py ocean_tide_extrapolated.ini load_tide.ini

注意,这两个配置文件都需要绝对路径,或者你把这两个文件拷贝到/aviso-fes-main/examples路径下


如何在pycharm里直接运行tide_gauge.py?

如果不想在命令行里运行代码,可以在pycharm里点击run -- edit configurations,新建一个python configuration,script path选你要运行的代码文件,parameters里面填入两个配置文件:ocean_tide_extrapolated.ini load_tide.ini

我填的是绝对路径,不需要添加双引号“”或者单引号‘’,用空格隔开,保存后就可以直接运行了。parameters如何填取决于代码里add_argument怎么写,遇到问题可以参考这个帖子https://stackoverflow.com/questions/33102272/pycharm-and-sys-argv-arguments

设置pycharm,无须通过命令行向argparse传递参数

至此,你已经能用pyfes进行潮汐预报,剩下的就是对源代码进行修改,包括经纬度坐标和时间,输出你想要的结果。

如何用fes2014全球潮模型做预测的评论 (共 条)

分享到微博请遵守国家法律