我使用正交投影来绘制地图。 我用这个程序:
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 :(得分:5)
lat_0和lon_0用于设置投影的原点,而不是地图的范围。通常是扭曲程度最小的地方,因此您不希望原点与您感兴趣的区域的中心偏离太多。如果未指定范围,底图将自动使地图围绕原点居中。
如果您知道要使用的范围(或边界框),则可以对地图进行居中(与其原点不同)。如果您知道'ortho'投影中的角坐标,则可以使用示例中的关键字(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)
确保地图声明中的投影满足您的需求,我刚刚选择了一个属于欧洲的原点。