Basemapをインストールしようとしたらつまづいたので忘備録

本屋で立ち読みしたら[Basemap](https://matplotlib.org/basemap/index.html)( pythonで簡単に地図をプロットできるモジュール。データの可視化を地図上にしたいときにとても重宝します。)っていうなんかかっこよさそうなものがあるってことで帰って早速インストールしてみました。

以下のようなシンプルなコードでかっこいい地図が描けます。
インストールまで結構つまづいたので忘備録としてのメモ。




```
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
%matplotlib inline

m = Basemap()
m.bluemarble()

```

![20ca7dd8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240982/b6a7ae89-04f2-fce4-4a1e-d87267910d5b.png)




##実行環境

Python 3.7.6
macOS Mojave 10.14.6
Jupyter Notebook


##インストール方法


最初に。


```
$ brew install geos
```

以下でいきなりつまづく。

```
$ wget https://jaist.dl.sourceforge.net/project/matplotlib/matplotlib-toolkits/basemap-1.0.7/basemap-1.0.7.tar.gz
```

以下のエラーが吐かれた。うーん。。どうやらwgetに問題があるよう。

```
dyld: Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
  Referenced from: /usr/local/bin/wget
  Reason: image not found
zsh: abort      wget 
```

whichで確認。wgetはインストールされている模様。

```
$ which wget
/usr/local/bin/wget
```
wgetをアップグレードしてみる。

```
$ brew upgrade wget

==> Upgrading 1 outdated package:
wget 1.20.3 -> 1.20.3_2
```

アップグレードがうまく行ったので再度チャレンジ。

```
$ wget https://jaist.dl.sourceforge.net/project/matplotlib/matplotlib-toolkits/basemap-1.0.7/basemap-1.0.7.tar.gz
```


ダウンロード失敗。

```
$ wget https://jaist.dl.sourceforge.net/project/matplotlib/matplotlib-toolkits/basemap-1.0.7/basemap-1.0.7.tar.gz
--2020-01-05 19:35:46--  https://jaist.dl.sourceforge.net/project/matplotlib/matplotlib-toolkits/basemap-1.0.7/basemap-1.0.7.tar.gz
jaist.dl.sourceforge.net (jaist.dl.sourceforge.net) をDNSに問いあわせています... 2001:df0:2ed:feed::feed, 150.65.7.130
jaist.dl.sourceforge.net (jaist.dl.sourceforge.net)|2001:df0:2ed:feed::feed|:443 に接続しています... 接続しました。
エラー: jaist.dl.sourceforge.net の証明書(発行者: `CN=Let\'s Encrypt Authority X3,O=Let\'s Encrypt,C=US')の検証に失敗しました:
  発行者の権限を検証できませんでした。
jaist.dl.sourceforge.net に安全の確認をしないで接続するには、`--no-check-certificate' を使ってください。
```

そうか、そうか。もう一度。`--no-check-certificate'をつけて再実行してみる。




```
$ wget https://jaist.dl.sourceforge.net/project/matplotlib/matplotlib-toolkits/basemap-1.0.7/basemap-1.0.7.tar.gz --no-check-certificate

--2020-01-05 19:36:28--  https://jaist.dl.sourceforge.net/project/matplotlib/matplotlib-toolkits/basemap-1.0.7/basemap-1.0.7.tar.gz
jaist.dl.sourceforge.net (jaist.dl.sourceforge.net) をDNSに問いあわせています... 2001:df0:2ed:feed::feed, 150.65.7.130
jaist.dl.sourceforge.net (jaist.dl.sourceforge.net)|2001:df0:2ed:feed::feed|:443 に接続しています... 接続しました。
警告: jaist.dl.sourceforge.net の証明書(発行者: `CN=Let\'s Encrypt Authority X3,O=Let\'s Encrypt,C=US')の検証に失敗しました:
  発行者の権限を検証できませんでした。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 129694711 (124M) [application/x-gzip]
`basemap-1.0.7.tar.gz' に保存中

basemap-1.0.7.tar.g 100%[===================>] 123.69M   121KB/s 時間 21m 6s   

2020-01-05 19:57:34 (100 KB/s) - `basemap-1.0.7.tar.gz' へ保存完了 [129694711/129694711]

```

次に以下のコマンドを実行。

```
$ tar zxvf basemap-1.0.7.tar.gz
$ cd basemap-1.0.7
$ python setup.py install
```

python setup.py installの後にエラーが。。長いなあ。


```

ModuleNotFoundError: No module named 'numpy.random.mtrand'
```

今度はnumpyに問題がありそうなのでアンインストール→インストールの実行。

```
$ pip3 uninstall numpy

$ pip3 install numpy

```

再インストール後にもう一度以下を実行。

```
$ python setup.py install

```

うまく行った！！！

ただ、実際にjupyterで使おうと思ったらエラーが。

```
ImportError: No module named 'mpl_toolkits.basemap'
```

いろいろ探してたらこのコマンドを使ったらいけそう。

```
$ pip3 install https://github.com/matplotlib/basemap/archive/master.zip
```

ところがzipファイルじゃないよ。というエラー。

```
zipfile.BadZipFile: File is not a zip file
```

netCDF4を落としたらいけるとのことで実行。


```
$ pip3 install netCDF4
```

やっといけました！！

##参考にさせていただいた記事

[matplotlib.basemapで簡単にマップを描画する](https://qiita.com/msrks/items/ed18a2653bc177a24cca)

[python3でbasemapのインストールに失敗するとき (Mojave)](https://qiita.com/rpscrw/items/7b0c4be3fb06872d74ad)