0

我使用正交投影来绘制地图。我使用这个程序:

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 但这并没有给出我想要的......

我无法添加数字来显示我获得了什么以及我想要什么......

谢谢!

4

1 回答 1

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)

确保地图声明中的投影符合您的需求,我刚刚选择了一个属于欧洲的原产地。

在此处输入图像描述

于 2013-02-07T12:36:00.703 回答