Проблема при импорте нестандартного цветного файла - PullRequest
1 голос
/ 26 марта 2020

Итак, я пытаюсь импортировать настраиваемый цветовой файл .tbl через функцию metpy metpy.plots.ctables.read_colortable, чтобы построить некоторые поля радара с помощью Py-ART.

Это коды, которые я использую:

from metpy.plots import ctables

ctables.registry.add_colortable('zdr_table.tbl','nexrad_zdr')
zdr_cmap = ctables.registry.get_colortable('nexrad_zdr')

Проблема в том, что, когда я пытаюсь сделать это, я получаю следующее сообщение об ошибке:

Traceback (most recent call last):
  File "/home/viper/miniconda3/envs/pyart_env/lib/python3.8/site-packages/metpy/plots/ctables.py", line 95, in read_colortable
    literal = _parse(line)
  File "/home/viper/miniconda3/envs/pyart_env/lib/python3.8/site-packages/metpy/plots/ctables.py", line 67, in _parse
    return ast.literal_eval(s)
  File "/home/viper/miniconda3/envs/pyart_env/lib/python3.8/ast.py", line 96, in literal_eval
    return _convert(node_or_string)
  File "/home/viper/miniconda3/envs/pyart_env/lib/python3.8/ast.py", line 95, in _convert
    return _convert_signed_num(node)
  File "/home/viper/miniconda3/envs/pyart_env/lib/python3.8/ast.py", line 74, in _convert_signed_num
    return _convert_num(node)
  File "/home/viper/miniconda3/envs/pyart_env/lib/python3.8/ast.py", line 66, in _convert_num
    raise ValueError('malformed node or string: ' + repr(node))
ValueError: malformed node or string: <_ast.Name object at 0x7fcf76e35c40>

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "plot_zdr_ppi2.py", line 31, in <module>
    ctables.registry.add_colortable('zdr_table.tbl','nexrad_zdr')
  File "/home/viper/miniconda3/envs/pyart_env/lib/python3.8/site-packages/metpy/plots/ctables.py", line 187, in add_colortable
    self[name] = read_colortable(fobj)
  File "/home/viper/miniconda3/envs/pyart_env/lib/python3.8/site-packages/metpy/plots/ctables.py", line 100, in read_colortable
    raise RuntimeError('Malformed colortable.')
RuntimeError: Malformed colortable.

Я пытался использовать и Hex HTML, и RGB-арифметику c форматов с одинаковыми результатами.

Есть идеи?

1 Ответ

0 голосов
/ 31 марта 2020

Первый аргумент add_colortable - это не имя файла, а файлоподобный объект, поэтому вам нужно вызвать open() самостоятельно:

from metpy.plots import ctables

ctables.registry.add_colortable(open('zdr_table.tbl', 'rt'),'nexrad_zdr')
zdr_cmap = ctables.registry.get_colortable('nexrad_zdr')
...