2017-07-31 26 views
1

cartopyを使用して、AzimuthalEquidistant投影にいくつかのデータをプロットしようとしています。しかし、それは私にいくつかの問題をもたらします。最初に、海岸線はこの種の投影については表示されなくなりました。これが自分のコードかCartopyの問題かどうかはわかりません。私はまた、pcolormeshコマンドでccrs.PlateCarree()変換を使用すると、海岸線が表示されますが、おそらく私のデータは間違ったタイプの前処理になっていることに気付きましたか?Cartopy Azimuthal等距離投影:地域と海岸線をズームする

2番目に、私は、軸ボーダーがデータをプロットした後に円形だった場合、これを行うにはset_extentまたは同様の関数を使用できますか? 下のコードは問題を再現するはずです。円はどのようにボーダーに見せたいかを示しています。

import matplotlib.pyplot as plt 
import cartopy.crs as ccrs 
import matplotlib.patches as mpatches 

clat = 55.0 
clon = -8.0 
lons = np.arange(clon-15,clon+16,0.5) 
lats = np.arange(clat-15,clat+16,0.5) 
d = np.random.rand(lons.shape[0],lats.shape[0]) 

trans = ccrs.AzimuthalEquidistant(central_latitude=clat, central_longitude=clon) 

ax = plt.axes(projection=trans) 
ax.coastlines(resolution='10m') 

CB=ax.pcolormesh(lons-0.25, lats-0.25, d.T, 
       cmap=plt.cm.viridis, alpha=0.5, 
       transform=trans)#ccrs.PlateCarree()) 

p1 = mpatches.Circle((clon,clat), radius=15, color='k', lw=5, fill=False, 
        transform=trans) 
ax.add_patch(p1) 

答えて

0

あなたがプロットされているデータは、緯度/経度にある場合はtransformキーワードの正しい値が実際ccrs.PlateCarree()次いで座標。これは、新しいユーザーにはよくある問題です。 transform引数は、あなたのデータがどの座標にあるかをcartopyに伝え、プロットしたいprojectionから完全に独立しています。

プロットを円形にするには、境界線を自分で設定する必要があります。 Cartopyのドキュメントには、これのいくつかの例があります:http://scitools.org.uk/cartopy/docs/latest/examples/always_circular_stereo.htmlhttp://scitools.org.uk/cartopy/docs/latest/examples/star_shaped_boundary.html

関連する問題