海のマスク
Top
>
Python
> 描画 > 地図 (Basemap)
maskoceans
lonsin, latsin
グリッドの緯度経度(2次元配列)
datain
マスクする2次元配列
inlands
内陸の水面(湖など)もマスクする
resolution
海岸線の解像度('c', 'l', 'i', 'h', 'f')
grid
マスクの解像度(10, 5, 2.5, 1.25; 単位は分)
西経は
-180~0
の範囲で表さなければ認識してくれないことに注意. 以下では
0~360°
のデータをマスクする.
エラー
TypeError
が発生した.
エラーメッセージを読みながらひとつひとつ実行していくと,どうも
numpy.reshape
で配列の形状を指定する変数が
integer
ではなく
float
になっているらしい.
/usr/local/src/pyenv/versions/3.6.1/lib/python3.6/site-packages/mpl_toolkits/basemap/__init__.py
の
5132
行目に
nlons
,
nlats
が出てくる. いずれもその少し前で定義されており,
nlons
は
nlons = 4320
,
nlats
は
nlats = nlons/2
となっている.ここで
nlats
が
float
になってしまうため
numpy.reshape
で
TypeError
を起こす,というわけ. 仕方ないので管理者権限で以下のように書き換えたところ,問題なく通るようになった.
(old) nlats = nlons/2
(new) nlats = int(nlons/2)
References
matplotlib basemap toolkit — Basemap Matplotlib Toolkit 1.2.1 documentation +
https://matplotlib.org/basemap/api/basemap_api.html
http://seesaawiki.jp/met-python/d/Basemap +
Basemap - memoring
plot - Plotting oceans in maps using basemap and python - Stack Overflow +
https://stackoverflow.com/questions/31996071/plotting-oceans-in-maps-using-basemap-and-python