2012-12-07 1 views
2

cartopy가 다른지도 투영에 자동으로 플롯 할 수 있다는 생각이 정말 좋습니다. 그러나 아이리스 큐브를 사용하는 방법을 알지 못했습니다. 그 자매 프로젝트로서 나는 할 수있을 것으로 기대했다. 이런 식으로 할 수 있습니까?Cartopy에서 홍채 큐브 투영을 변경할 수 있습니까

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

나는 당신의 의사 코드를 가져다가 만든 그 아이리스 '샘플 데이터를 실행 가능한 :이 코드를 실행하면

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 시스템) 큐브가 들어 있습니다. 그 이유는 아이리스 큐브가 기본 데이터에 대한 전체 메타 데이터를 포함해야한다는 것입니다. 좌표 시스템은 해당 메타 데이터의 일부입니다.

그래서, 당신의 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

구체적으로, http://scitools.org.uk/iris/docs/latest/examples/graphics/rotated_pole_mapping.html#rotated-pole-mapping-03iris gallery에서 비슷한 예입니다 (이 예에서 마지막 줄거리).

HTH,

+0

대단히 감사합니다. 대단히 감사합니다. – nrob

+0

@ user1862785에 감사드립니다. 이것이 귀하의 질문에 답변 한 경우이 답의 왼쪽에있는 투표 버튼 아래의 체크를 클릭하여이 답변을 "수락"하시겠습니까? 즉, "대답하지 않은"질문을보다 쉽게 ​​추적 할 수 있음을 의미합니다. 감사 – pelson

관련 문제