Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mercator grid not supported? #95

Closed
lkugler opened this issue Feb 13, 2018 · 8 comments
Closed

Mercator grid not supported? #95

lkugler opened this issue Feb 13, 2018 · 8 comments

Comments

@lkugler
Copy link

lkugler commented Feb 13, 2018

Hi there,
I got a TranslationError reporting mercator is an unhandled grid type.
Does this mean that mercator grid in general is not supported by iris-grib?
Thanks!

> File "iris-plot.py", line 21, in plotit
>     cubelist = iris.load(gribpath)
>   File "/home/miniconda2/lib/python2.7/site-packages/iris/__init__.py", line 341, in load
>     return _load_collection(uris, constraints, callback).merged().cubes()
>   File "/home/miniconda2/lib/python2.7/site-packages/iris/__init__.py", line 311, in _load_collection
>     result = iris.cube._CubeFilterCollection.from_cubes(cubes, constraints)
>   File "/home/miniconda2/lib/python2.7/site-packages/iris/cube.py", line 144, in from_cubes
>     for cube in cubes:
>   File "/home/miniconda2/lib/python2.7/site-packages/iris/__init__.py", line 298, in _generate_cubes
>     for cube in iris.io.load_files(part_names, callback, constraints):
>   File "/home/miniconda2/lib/python2.7/site-packages/iris/io/__init__.py", line 201, in load_files
>     for cube in handling_format_spec.handler(fnames, callback):
>   File "/home/miniconda2/lib/python2.7/site-packages/iris/fileformats/rules.py", line 1047, in load_cubes
>     user_callback_wrapper=loadcubes_user_callback_wrapper):
>   File "/home/miniconda2/lib/python2.7/site-packages/iris/fileformats/rules.py", line 960, in _load_pairs_from_fields_and_filenames
>     for field, filename in fields_and_filenames:
>   File "/home/miniconda2/lib/python2.7/site-packages/iris/fileformats/rules.py", line 1024, in _generate_all_fields_and_filenames
>     filename, **loader.field_generator_kwargs):
>   File "/home/miniconda2/lib/python2.7/site-packages/iris_grib/__init__.py", line 700, in _load_generate
>     message = GribWrapper(message_id, grib_fh=grib_fh)
>   File "/home/miniconda2/lib/python2.7/site-packages/iris_grib/__init__.py", line 170, in __init__
>     self._compute_extra_keys()
>   File "/home/miniconda2/lib/python2.7/site-packages/iris_grib/__init__.py", line 460, in _compute_extra_keys
>     raise TranslationError("unhandled grid type: {}".format(gridType))
> iris.exceptions.TranslationError: unhandled grid type: mercator
@pelson
Copy link
Member

pelson commented Feb 14, 2018

Hi,

Does this mean that mercator grid in general is not supported by iris-grib?

Yes, I'm afraid so. The process of adding mercator is entirely achievable, but it is multi-staged:

  1. Add the Mercator coordinate system to iris.coord_systems. Turns out, Iris already has it in https://github.com/SciTools/iris/blob/master/lib/iris/coord_systems.py#L826.
  2. Get iris-grib to construct a Mercator coordinate system much like is done for LambertConformal in https://github.com/SciTools/iris-grib/blob/master/iris_grib/__init__.py#L439
  3. If you want save support for your cube, add it much like LambertConformal in
    elif isinstance(cs, LambertConformal):
    .

In all cases, take a look at the pull requests that created the reference work, so that you can follow a similar pattern of testing (a pre-requisite for accepting changes to the repository).

Hope that is helpful. Let me know if you need any more detail.

Cheers,

Phil

@DPeterK
Copy link
Member

DPeterK commented Jun 11, 2018

Hi @loxn8773, we've now added support to iris-grib for loading the Mercator grid definition template, which is available on the latest iris-grib master (with save support coming soon along with an iris-grib release that contains load and save support for Mercator). Could you check whether this fixes the issue you reported here?

@lkugler
Copy link
Author

lkugler commented Jun 18, 2018

Thank you all for your effort! I'm not sure if I did everything correct, so I set up a new conda env, installed iris and iris_grib from conda-forge.

The result is

(Iris) user@blablabla:~$ python iris-plot.py
iris.__version__: 2.1.0
iris_grib.__version__: 0.13.0
Traceback (most recent call last):
  File "iris-plot.py", line 27, in <module>
    cubes = iris.load(each)
  File "miniconda2/envs/Iris/lib/python2.7/site-packages/iris/__init__.py", line 343, in load
    return _load_collection(uris, constraints, callback).merged().cubes()
  File "/miniconda2/envs/Iris/lib/python2.7/site-packages/iris/__init__.py", line 313, in _load_collection
    result = iris.cube._CubeFilterCollection.from_cubes(cubes, constraints)
  File "/miniconda2/envs/Iris/lib/python2.7/site-packages/iris/cube.py", line 145, in from_cubes
    for cube in cubes:
  File "/miniconda2/envs/Iris/lib/python2.7/site-packages/iris/__init__.py", line 300, in _generate_cubes
    for cube in iris.io.load_files(part_names, callback, constraints):
  File "/miniconda2/envs/Iris/lib/python2.7/site-packages/iris/io/__init__.py", line 210, in load_files
    for cube in handling_format_spec.handler(fnames, callback):
  File "/miniconda2/envs/Iris/lib/python2.7/site-packages/iris/fileformats/rules.py", line 429, in load_cubes
    user_callback_wrapper=loadcubes_user_callback_wrapper):
  File "/miniconda2/envs/Iris/lib/python2.7/site-packages/iris/fileformats/rules.py", line 348, in _load_pairs_from_fields_and_filenames
    for field, filename in fields_and_filenames:
  File "/miniconda2/envs/Iris/lib/python2.7/site-packages/iris/fileformats/rules.py", line 412, in _generate_all_fields_and_filenames
    filename, **loader.field_generator_kwargs):
  File "/miniconda2/envs/Iris/lib/python2.7/site-packages/iris_grib/__init__.py", line 711, in _load_generate
    message = GribWrapper(message_id, grib_fh=grib_fh)
  File "/miniconda2/envs/Iris/lib/python2.7/site-packages/iris_grib/__init__.py", line 169, in __init__
    self._compute_extra_keys()
  File "/miniconda2/envs/Iris/lib/python2.7/site-packages/iris_grib/__init__.py", line 458, in _compute_extra_keys
    raise TranslationError("unhandled grid type: {}".format(gridType))
iris.exceptions.TranslationError: unhandled grid type: mercator

@DPeterK
Copy link
Member

DPeterK commented Jul 16, 2018

Hi @loxn8773, sorry this still isn't working for you! Interestingly all worked fine when loading the Mercator GRIB2 test file we were working from... I'll investigate further and see what I can come up with.

@lkugler
Copy link
Author

lkugler commented Jul 22, 2018

Thanks @dkillick. I think my files were GRIB1, but anyways, pygrib did the work for now and as long as nobody else had this issue you may also consider this closed.

@DPeterK
Copy link
Member

DPeterK commented Jul 23, 2018

Thanks @loxn8773 - the changes made were for GRIB2 only, which might explain this difference in behaviour...

@marfel
Copy link

marfel commented Oct 11, 2018

I can confirm this issue, plus the suspicion that it's related to GRIB1 support. After using grib_set edition=2 on my files (output from some customized WRF model, I believe), the mercator grid was correctly parsed.

@pp-mo
Copy link
Member

pp-mo commented Jan 8, 2021

Since old comment above

@lkugler Thanks @dkillick. I think my files were GRIB1, but anyways, pygrib did the work for now and as long as nobody else had this issue you may also consider this closed.

Can be closed.

@pp-mo pp-mo closed this as completed Jan 8, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants