2012-12-07 22 views
2

我真的很喜欢这个想法,即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() 

感谢

+0

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

回答

4

我把你的伪代码,并使其可运行与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. 

这是试图告诉你,你不需要告诉它哪个“变换”(或coord inate系统)多维数据集处于此状态。原因是Iris多维数据集应包含有关底层数据的完整元数据:坐标系是该元数据的一部分。

所以,要想让示例工作,你可以简单地删除您contourf通话变换关键字参数:

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() 

contoured result

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

HTH,

+0

非常感谢 - 非常感谢 – nrob

+0

感谢您的更新@ user1862785。如果这回答了您的问题,您是否介意通过点击此答案左侧的投票按钮下方的勾号来“接受”此答案 - 这意味着我们可以更轻松地跟踪“未答复”的问题。谢谢 – pelson