MeteoInfoLab启动预加载

在“MeteoInfo -> pylib”目录中的文件milab.py会在MeteoInfoLab启动时自动运行,里面的代码是导入mipylib包,并运行 mipylib包中__init__.py文件中的所有语句,起到预加载常用包和函数的目的,以方便后期使用。例如绘图函数plot会在软件启 动时预加载,Console里>>> help(plot)才能正常运行。Mipylib包的__init__.py文件中包含了所有预加载信息:

from .numeric import *
import numeric as np
import numeric.random as random
import numeric.linalg as linalg
from .geolib.migeo import *
import geolib.topology as topo
from .dataset import *
from .plotlib import *
import plotlib as plt
import meteolib as meteo
import imagelib
from dataframe import *

import os
mi_dir = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
migl.mifolder = mi_dir

lookup_cma = os.path.join(mi_dir, 'tables', 'bufr', 'tablelookup_cma.csv')
if os.path.isfile(lookup_cma):
    try:
        is_ok = dataset.add_bufr_lookup(lookup_cma)
    except:
        is_ok = False
    if is_ok:
        print('CMA Bufr lookup file added.')

MeteoInfoLab Jython包的开发在函数命名和参数设置上尽量和Python的Numpy、Matplotlib、Pandas等包一致,方便学习 和应用。可以看到numeric包也给出了别名np,plotlib的别名是plt。在主界面的Editor和Console里有代码提示功能,因此可 以输入 np.plt. 来查看两个包包含的常用函数,能够帮助用户更准确的输入代码。

../../../../_images/view_numeric_functions.png

“MeteoInfo -> pylib -> mipylib”目录中的migl.py文件中包含了几个全局变量:

  • milapp 是MeteoInfoLab主界面对象;

  • currentfolder 是MeteoInfoLab的当前目录;

  • mifolder 是MeteoInfo软件所在的目录。

还有三个函数来获取地图数据、示例文件、颜色图文件的目录,方便在脚本中使用:

  • get_map_folder()函数:获取地图数据所在目录;

  • get_sample_folder()函数:获取示例文件所在目录;

  • get_cmap_folder()函数:获取颜色图文件所在目录。

中国气象局的Bufr文件的解码需要用到自定义的表格文件,也在程序启动时进行了加载。

Jython包预加载会影响MeteoInfoLab的启动时间,如果对启动时间有要求,尤其是在命令行直接运行MeteoInfoLab Jython文件, 可以把milab.py文件中的加载语句注释掉,但是Jython程序代码中必须增加针对性的加载语句。