2013-07-15 1 views
0

mpl_toolkits.basemap을 사용하여 오클라호마지도에 기상 변수를 플로팅하려하지만 데이터를 보간하여지도 상단에 배치하는 방법을 알아내는 데 문제가 있습니다.위도/경도 값의 윤곽선 지정

lons = [-97.9547, -97.9747, -97.4256] 
lats = [35.5322, 35.864, 35.4111] 
data = [2,2,2] 
map = Basemap(llcrnrlon = -103.068237, llcrnrlat = 33.610045, urcrnrlon = -94.359076, urcrnrlat = 37.040928, resolution = 'i') 


CS = map.contour(X, Y, data) 
map.drawstates() 
plt.show() 

무엇을 달성하려고하고하면 Lons의의 관련 참조 인덱스를 기반으로지도 데이터 값을 플롯하는 것입니다/목록을 라트 : 여기

는 현재 코드의 일반적인 생각 나는 가지고있다 그런 다음 데이터 변수의 값 윤곽을 지정하십시오.

데이터를 보간해야하기 때문에 분명히 작동하지 않습니다. griddata 함수를 사용하여이 작업을 수행 할 수있는 방법이 있습니까? 위도와 경도 값이 선형으로 간격을 두지 않았기 때문에 그리드의 경계를 설정하는 방법에 대해 매우 혼란 스럽습니다.

누락 된 쉬운 방법이 있나요?

어떤 도움이나 힌트라도 크게 환영 할 것입니다. 이것은 연구 프로젝트의 다음 주요 부분으로 넘어가는 것을 저지하고 있습니다!

+0

[meshgrid] (http://docs.scipy.org/doc/numpy/reference/generated/numpy.meshgrid.html)와 같은 것을 사용해야합니다. 그런 다음,'lons'과'lats'가 생성하는 메쉬에 데이터를 보간해야합니다. – will

+0

내가 이해하는 것으로부터, meshgrid는 보간을 필요로하지 않는 데이터에만 작동합니다. 데이터가 이미 정사각형 좌표에서 작동 할 위치로 설정되었습니다. –

+0

meshgrid는 원하는 데이터를 보간하는 격자를 만듭니다. 이미 원하는 좌표를 모두 가지고있는 격자를 만들기 위해 두 개의 배열을 주면, 어떤 보간도 할 필요가 없습니다. – will

답변

0

이 컴퓨터에 python이 설치되어 있지 않으므로 이것을 테스트 할 수 없습니다. 하지만 이것과 같은 것은 countour 음모에 필요한 입력을 받아야합니다 ...

import numpy as np 

lons = [-97.9547, -97.9747, -97.4256] 
lats = [35.5322, 35.864, 35.4111] 
data = [2,2,2] 

xs, ys = np.meshgrid(lons, lats) 

dataMesh = np.empty_like(xs) 
for i, j, d in zip(lons, lats, data): 
    dataMesh[lons.index(i), lats.index(j)] = d 

map = Basemap(llcrnrlon = -103.068237, llcrnrlat = 33.610045, urcrnrlon = -94.359076, urcrnrlat = 37.040928, resolution = 'i') 


CS = map.contour(xs, ys, dataMesh) 
map.drawstates() 
plt.show() 

제가 말했듯이, 나는 이것을 테스트하지 않았습니다. 당신이 단위 화 된 값을 그리려고하면 어떻게 될지 모르겠습니다. 다른 numpy 배열 초기화를 사용해야 할 수도 있습니다.

+0

이렇게하면 안됩니다! 당신은 3 개의 데이터 포인트를 가지고 있으며, 9 개의 데이터 포인트를 가진 매트릭스 (meshgrid)를 생성합니다. 그렇다면 6 개 값은 어디서 구합니까? –

+0

@ dl.meteo 나는 그것이 실제 데이터라고 생각하지 않는다. 단지 그들이 가지고있는 형태의 예일 뿐이다. – will