

# 直面している問題

取得したデータを地図上にプロットしたくbasemapのインストールを行いました。  
インストールできていることを確認するため、単純に日本地図を描画するコードを実行したところ、『cyl projection cannot cross
pole』というエラーが出ました。

# エラーメッセージ

[code]

    ValueError                                Traceback (most recent call last)
    <ipython-input-6-d7b0840e2c1b> in <module>()
          6 
          7 # Basemapの定義
    ----> 8 m = Basemap(llcrnrlat=south,urcrnrlat=north, llcrnrlon=west,urcrnrlon=east,resolution='h')
          9 # 海岸線を引く
         10 m.drawcoastlines()
    
    C:\Users\9047247\AppData\Local\Continuum\Anaconda3\lib\site-packages\mpl_toolkits\basemap\__init__.py in __init__(self, llcrnrlon, llcrnrlat, urcrnrlon, urcrnrlat, llcrnrx, llcrnry, urcrnrx, urcrnry, width, height, projection, resolution, area_thresh, rsphere, ellps, lat_ts, lat_1, lat_2, lat_0, lon_0, lon_1, lon_2, o_lon_p, o_lat_p, k_0, no_rot, suppress_ticks, satellite_height, boundinglat, fix_aspect, anchor, celestial, round, epsg, ax)
       1107         if self.resolution is not None:
       1108             self.coastsegs, self.coastpolygontypes =\
    -> 1109             self._readboundarydata('gshhs',as_polygons=True)
       1110             # reformat for use in matplotlib.patches.Polygon.
       1111             self.coastpolygons = []
    
    C:\Users\9047247\AppData\Local\Continuum\Anaconda3\lib\site-packages\mpl_toolkits\basemap\__init__.py in _readboundarydata(self, name, as_polygons)
       1239         if containsPole and\
       1240             self.projection in _cylproj + _pseudocyl + ['geos']:
    -> 1241             raise ValueError('%s projection cannot cross pole'%(self.projection))
       1242         # make sure some projections have has containsPole=True
       1243         # we will compute the intersections in stereographic
    
    ValueError: cyl projection cannot cross pole
    
[/code]

# 該当するコード

[code]

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    import seaborn as sns
    import _geoslib
    from mpl_toolkits.basemap import Basemap
    
    # 緯度経度で範囲を指定する
    north = 46.
    south = 30.
    east = 147.
    west = 128.
    
    # Basemapの定義
    m = Basemap(llcrnrlat=south,urcrnrlat=north, llcrnrlon=west,urcrnrlon=east,resolution='h')
    # 海岸線を引く
    m.drawcoastlines() 
    
[/code]

# 前提

os : windows(32bit)  
python : 3.6.1  
basemap: 1.1.0

basemapのインストールは <http://www.lfd.uci.edu/~gohlke/pythonlibs/>
より該当するwhlファイルをダウンロードしてpipで行いました。  
また、basemapの前提となるpyprojのインストールは、Anaconda Navigatorから行いました。  
（versionは1.9.5.1です）


CC BY-SA 3.0
2017-12-13T16:08:51.497
40252
2020-06-20T05:06:55.757
2017-12-13T17:20:12.233
3060
26631
question
python python3
basemapの『cyl projection cannot cross pole』のエラー対処方法


自己解決したので以下に記載します。

結論  
以下のコマンドでconda-forgeからinstallする。

conda install -c conda-forge basemap

condaからだと、win32+python3.6に適用したbasemapがなかったのであきらめていたのですが、上記を試したところエラーなくコードが動きました。


CC BY-SA 3.0
2017-12-14T12:43:53.840
40278
2017-12-14T12:43:53.840
26631
40252
answer