0

我使用正射投影来绘制地图。 我用这个PROGRAMM:正投影Python

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用于设置投影的原点,而不是地图的范围。通常情况下,扭曲度最小的地方,因此您不希望原点偏离您感兴趣的区域的中心。如果不指定范围,底图将自动将地图集中在原点周围。

如果您知道要使用的范围(或边界框),则可以将地图居中(与其来源不同)。如果您知道“正射影”投影中的角坐标,则可以使用示例中的关键字(llcrnrx等)。我在Basemap 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