0

필자는 직교 투영을 사용하여지도를 그립니다. 나는이을 programm을 사용직교 투영 파이썬

from mpl_toolkits.basemap import Basemap 
import numpy as np  
import matplotlib.pyplot as plt 
import os, sys  
from sys import argv 
import pylab  
from mpl_toolkits.basemap import Basemap, shiftgrid  
from matplotlib import mpl  
from matplotlib import rcParams  
import matplotlib.pyplot as plt  
import matplotlib.mlab as mlab  
import matplotlib.patches as patches  
import matplotlib.path as path  
import matplotlib.dates as dt  
from numpy import linalg  
import netCDF4  
import time  
import datetime as d 
import sys  
import math  
from mpl_toolkits.axes_grid1 import make_axes_locatable 
from pylab import * 


nc = netCDF4.Dataset ('tt.nc')  
latvar = nc.variables['lat']  
lat = latvar[:]  
lon = nc.variables['lon'][:]  
lat_0=30;lon_0=-25  
m1 = Basemap(projection='ortho',lon_0=-25,lat_0=30,resolution='l')  
m = Basemap(projection='ortho',lon_0=lon_0,lat_0=lat_0,resolution='l',\ 
    llcrnrx=0.,llcrnry=0.,urcrnrx=m1.urcrnrx/2.,urcrnry=m1.urcrnry/2.) 

X, Y = m(lon, lat)  
O_x_1=nc.variables['O3'] 
h=9  
lev=0  
minOzone=0  
maxOzone=40  
plotOzone = m.pcolor(X,Y,O_x_1[h,lev,:,:],vmin=minOzone,vmax=maxOzone) 
ax=colorbar(plotOzone, shrink=0.8,norm=(0,40))  
m.drawcoastlines() 
m.drawparallels(np.arange(-90.,120.,30.))  
m.drawmeridians(np.arange(0.,420.,60.))  
plt.show() 

내가 내지도 유럽에 의 중심을 어떻게해야합니까?

이미 lat_0 및 lon_0와 함께 연주했다하지만 ...하지 않습니다 내가 원하는 것을 제공

내가 얻을 무엇을 내가 좋아하는 것이 무엇인지 보여주기 위해 그림을 추가 할 수 없습니다

...

감사합니다.

+0

하기 matplotlib 및하기 matplotlib-베이스 맵 태그는 –

답변

5

lat_0과 lon_0은지도의 범위가 아닌 투영의 원점을 설정하기위한 것입니다. 일반적으로 왜곡이 가장 적은 곳에서 원점이 관심 영역의 중심에서 너무 벗어나는 것을 원하지 않습니다. 범위를 지정하지 않으면 Basemap이 원점 주변의지도를 자동으로 가운데에 배치합니다.

사용하려는 익스텐트 (또는 경계 상자)를 알고있는 경우 맵의 원점과 다른 점을 중심에 배치 할 수 있습니다. 'ortho'투영에서 코너 좌표를 알고 있다면 예제 (llcrnrx 등)의 키워드를 사용할 수 있습니다. 나는 Baselap 1.0.6의 'llcrnrlon'키워드로 운이 없었으므로 지역 (위도/경도)에서 범위의 좌표를 입력 할 수 있다고 제안하는 것 같습니다.

다른 방법으로는 축을 잡고 x 및 y 제한을 수동으로 설정하는 것입니다. 이점은 좌표 변환에 사용할 수있는 Basemap 객체를 선언 한 후에 할 수 있다는 것입니다. 예 :

from mpl_toolkits.basemap import Basemap 

fig = plt.figure(figsize=(5,5)) 

m = Basemap(projection='ortho',lon_0=5,lat_0=35,resolution='l') 

m.drawcoastlines() 
m.drawparallels(np.arange(-90.,120.,15.)) 
m.drawmeridians(np.arange(0.,420.,30.)) 

# your extent in lat/lon (dec degrees) 
ulx = -10 
uly = 65 
lrx = 65 
lry = 35 

# transform coordinates to map projection 
xmin, ymin = m(ulx, lry) 
xmax, ymax = m(lrx, uly) 

# set the axes limits 
ax = plt.gca() 
ax.set_xlim(xmin, xmax) 
ax.set_ylim(ymin, ymax) 

맵 선언의 투영법이 사용자의 필요에 맞는지 확인하십시오. 유럽에있는 원점을 선택했습니다.

enter image description here

+0

여러분의 도움에 감사드립니다했다. 그것은 내가하고 싶었던 것이다! – user2050187