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は、マップの範囲ではなく、投影の原点を設定するためのものです。通常、歪みが最も少ない場所なので、原点が関心領域の中心から大きく外れないようにします。範囲を指定しない場合、ベースマップは自動的に原点を中心にマップを配置します。

使用する範囲(またはバウンディングボックス)がわかっている場合は、マップの中央揃え(原点とは異なります)を実行できます。'ortho'投影のコーナー座標がわかっている場合は、例のキーワード(llcrnrxなど)を使用できます。Basemap1.0.6の「llcrnrlon」キーワードはうまくいきませんでした。地理(lat / lon)で範囲の座標を入力できることを示唆しているようです。

別の方法は、軸をつかんで手動で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 に答える