basemap と比べて cartopy について日本語で書かれたサイトは少ない気がする。何故だろう……?
Qiita でも cartopy の記事数は basemap の記事数に比べて少ないし……
そもそも cartopy とは何か
cartopy とは python で地理データを描画する為のライブラリである。
anaconda 環境なら conda install で簡単にインストールすることができる。
conda install -c conda-forge cartopy
似たようなライブラリに basemap があるが、こちらは既に開発が終了しており、cartopy はその後継らしい。
であれば、今から使うのであれば cartopy で描画するのが良いだろう。
何がしたいのか
cartopy では、スクリプト実行時に Natural Earth というサイトから地理データを自動でダウンロードして描画する。
しかし、セキュリティの問題等何らかの理由でインターネットからダウンロードが行えない環境では、これでは困ってしまう。
また、cartopy を頻繁に使うのであれば、データをわざわざインターネットからダウンロードするのではなく、ローカルにあった方が良いだろう。
ということで、あらかじめローカルにデータを手動でダウンロードしておき、そのデータを参照して描画を行いたい。
どうすれば良いのか
Natural Earth のダウンロードページから zip データをダウンロードする。
この zip データを解凍し、anaconda のあるパスに以下のようなディレクトリ構造でデータを置く。シンボリックリンクでも良い。
ここで、category は Cultural, Physical, Raster で、resolution (解像度)は 10m, 50m, 110m のいずれかである。
name はデータの名前を指しており、例えば海岸線なら category が Physical の Coastline である。
anaconda3/lib/python3.7/site-packages/cartopy/data/shapefiles/natural_earth/{category}/ne_{resolution}_{name}.[ext]
そして、ソースコードに以下のように書いておく。
import cartopy
cartopy.config["data_dir"] = cartopy.config["repo_data_dir"]
これで、ローカルにあるデータを参照し、地理データを描画してくれる。めでたしめでたし。