jupyter-notebookでcartopy使ってみる


このエントリーをはてなブックマークに追加

IPythonデータサイエンスクックブックを読んでる

第7章のレシピ7.6 カーネル密度推定によるノンパラメトリックな確率密度の推定のところ

matplotlibのbasemapを使用して地図表示をするらしく

公式のドキュメント読もうとしたところ

Introduction — Basemap Matplotlib Toolkit 1.1.0 documentation

Cartopy projectがBasemapに置き換わる予定、まだ全ての機能を実装したわけではないけどね

みたいな一文があったので、Cartopyも触ってみることに


Cartopyの公式は以下

SciTools/cartopy: Cartopy - a cartographic python library with matplotlib support

Anacondaを使っていればconda install で簡単に入れれるらしいけど

自分はMacでpython3.6をそのまま構築していっていたのと

インストールの方法が簡単に記載されてなかったのだがとりあえずpipで入れれないか試してみることに

以下を参考にした

basemapやcartopyで地図上でplot | mwSoft


結論から言うと以下コマンドをうっていけば入れれるはず

Downloadフォルダを使用したけどフォルダは自分の好きなところで大丈夫かと思われます

1
2
3
4
5
6
7
8
$ cd ~/Downloads/
$ git clone https://github.com/OSGeo/proj.4.git
$ cd proj.4
$ git checkout -b 4.9.0 tags/4.9.0
$ ./configure
$ make
$ make install
$ pip install shapely cartopy --no-binary shapely --no-binary cartopy


これで、pythonインタープリタなどで import cartopy.crs とかやってエラーがでなければ成功と思われます


以下はちょっとだけエラーなど出たのでメモ


proj.4が必要なのと、pip installする時に–no-binaryが必要


最初に $ pip install cartopy すると proj4 4.9.0 が必要だから入れてねみたいなエラーがでて出てきたので

まずはproj4を入れた

1
2
3
4
5
6
7
$ cd ~/Downloads/
$ git clone https://github.com/OSGeo/proj.4.git
$ cd proj.4
$ git checkout -b 4.9.0 tags/4.9.0
$ ./configure
$ make
$ make install

これでproj4が導入できたので次にcartopyを入れてみた


1
$ pip install cartopy

なんかあっけなく入ったので、下記webページのコードをJupyter-notebookで試してみるとエラーが出た

cartopyで地図を描画する(AlbersEqualArea) : 私的メモ

1
2
3
4
5
6
7
8
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
%matplotlib inline
plt.figure9figsize=(10, 5)
ax = plt.axes(projection=ccrs.AlbersEqualArea())
ax.coastlines()
ax.gridlines()

出てきたエラーの一部が下記

1
2
3
...
Assertion failed: (0 != cs), function GEOSCoordSeq_getSize_r, file geos_ts_c.cpp, line 3612.
...

なんか内部的にエラーが出ている模様

ググってみると下記issueがヒットした

cartopy possibly kills the kernel when using ipython/jupyter notebook · Issue #738 · SciTools/cartopy

Issue running sample code for new installs of Shapely and Cartopy · Issue #173 · descarteslabs/descarteslabs-python

なんかshapelyのところでconflictが起きてるらしいので、下記のように一旦uninstallしてから –no-binaryオプションをつけてinstallしてみた

1
2
3
$ pip uninstall shapely
$ pip uninstall cartopy
$ pip install shapely cartopy --no-binary shapely --no-binary cartopy


これでサンプルコードを試すと、ちゃんと下記画像のようにjupyter-notebookで表示された

これで色々試せそう


このエントリーをはてなブックマークに追加