正射投影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-basemapタグが追加されました
追加された 著者 Francesco Montesano,

1 答え

lat_0とlon_0は地図の範囲ではなく投影の原点を設定するためのものです。通常、歪みが最も小さい場所で、起源があなたの興味のあるエリアの中心から大きく外れることを望みません。エクステントを指定しないと、Basemapは自動的に地図の原点を中心にします。

使用したいエクステント(またはバウンディングボックス)がわかっている場合は、マップの中心を(その起点とは異なる)中心にすることができます。あなたがあなたのオルソ投影のコーナー座標を知っているなら、あなたの例(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

5
追加された
ご協力ありがとうございました。私がやりたかったのです!
追加された 著者 user2050187,