【问题标题】:Can you change iris cube projections in cartopy你能改变cartopy中的虹膜立方体投影吗
【发布时间】:2012-11-25 19:40:10
【问题描述】:

我真的很喜欢 cartopy 可以在不同的地图投影中自动绘制的想法。但是,我不知道如何处理 Iris 立方体。作为一个姊妹项目,我希望我能做到。有可能做这样的事情吗?

import iris as I
import cartopy.crs as ccrs
import matplotlib.pyplot as plt

someCube = I.load('someCube.pp')
ax = plt.axes(projection=ccrs.Robinson())
I.plot.contourf(someCube, transform=ccrs.Robinson())
plt.show()

谢谢

【问题讨论】:

  • 如果解决了问题,请接受我的回答。这意味着该问题不会出现在 python-iris 标签的“未回答”类别中,并帮助我们找到仍然需要查看的问题。谢谢!

标签: python matplotlib cartopy python-iris


【解决方案1】:

我采用了您的伪代码,并使其可以使用 Iris 的示例数据运行:

import iris
import iris.plot as iplt
import cartopy.crs as ccrs
import matplotlib.pyplot as plt


fname = iris.sample_data_path('air_temp.pp')
air_temp = iris.load_cube(fname)

ax = plt.axes(projection=ccrs.Robinson())
iplt.contourf(air_temp, transform=ccrs.Robinson(central_longitude=180))
ax.coastlines()

plt.show()

如果你运行这段代码,你会得到一个异常:

Traceback (most recent call last):
  File "using_custom_projections.py", line 11, in <module>
    iris.plot.contourf(air_temp, transform=ccrs.Robinson())
  File "lib/iris/plot.py", line 452, in contourf
    result = _draw_2d_from_points('contourf', None, cube, *args, **kwargs)
  File "lib/iris/plot.py", line 263, in _draw_2d_from_points
    result = _map_common(draw_method_name, arg_func, iris.coords.POINT_MODE, cube, data, *args, **kwargs)
  File "lib/iris/plot.py", line 406, in _map_common
    assert 'transform' not in kwargs, 'Transform keyword is not allowed.'
AssertionError: Transform keyword is not allowed.

它试图告诉你你不需要告诉它立方体在哪个“变换”(或坐标系)中。原因是鸢尾花立方体应该包含有关基础数据的完整元数据:坐标系是该元数据的一部分。

因此,要使示例正常工作,您只需删除 contourf 调用中的 transform 关键字参数:

import iris
import iris.plot as iplt
import cartopy.crs as ccrs
import matplotlib.pyplot as plt


fname = iris.sample_data_path('air_temp.pp')
air_temp = iris.load_cube(fname)

ax = plt.axes(projection=ccrs.Robinson(central_longitude=180))
iplt.contourf(air_temp)
ax.coastlines()

plt.show()

iris gallery 中有一个类似的示例,特别是http://scitools.org.uk/iris/docs/latest/examples/graphics/rotated_pole_mapping.html#rotated-pole-mapping-03(示例中的最后一个情节)。

HTH,

【讨论】:

  • 感谢@user1862785 的更新。如果这回答了您的问题,您是否介意通过单击此答案左侧投票按钮下方的勾号来“接受”此答案 - 这意味着我们可以更轻松地跟踪“未回答”的问题。谢谢
猜你喜欢
  • 2012-12-28
  • 2023-02-20
  • 1970-01-01
  • 1970-01-01
  • 2017-02-17
  • 1970-01-01
  • 2015-05-03
  • 2022-01-11
  • 2019-11-07
相关资源
最近更新 更多