{"action":"opened","issue":{"url":"https://api.github.com/repos/SciTools/cartopy/issues/724","repository_url":"https://api.github.com/repos/SciTools/cartopy","labels_url":"https://api.github.com/repos/SciTools/cartopy/issues/724/labels{/name}","comments_url":"https://api.github.com/repos/SciTools/cartopy/issues/724/comments","events_url":"https://api.github.com/repos/SciTools/cartopy/issues/724/events","html_url":"https://github.com/SciTools/cartopy/issues/724","id":132786927,"number":724,"title":"Mollweide projection for polygons that intersect a pole","user":{"login":"xylar","id":4179064,"avatar_url":"https://avatars.githubusercontent.com/u/4179064?v=3","gravatar_id":"","url":"https://api.github.com/users/xylar","html_url":"https://github.com/xylar","followers_url":"https://api.github.com/users/xylar/followers","following_url":"https://api.github.com/users/xylar/following{/other_user}","gists_url":"https://api.github.com/users/xylar/gists{/gist_id}","starred_url":"https://api.github.com/users/xylar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xylar/subscriptions","organizations_url":"https://api.github.com/users/xylar/orgs","repos_url":"https://api.github.com/users/xylar/repos","events_url":"https://api.github.com/users/xylar/events{/privacy}","received_events_url":"https://api.github.com/users/xylar/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2016-02-10T18:54:24Z","updated_at":"2016-02-10T18:54:24Z","closed_at":null,"body":"First let me say that I'm very happy with cartopy.  Most projections I have tried handle polygons that that intersect a pole surprisingly well.  The one exception I've encountered is the Mollweide projection, which seems to get confused when when the polygon is closer to the pole than 89.0 N.  Below is a script that reproduces the issue with a polygon representing the Arctic Ocean basin.\r\n\r\nA plot with a `PlateCarree` projection behaves as expected:\r\n![platecarree](https://cloud.githubusercontent.com/assets/4179064/12957820/fb1ef21c-d02e-11e5-8388-539feadc635e.png)\r\n\r\n`Mollweide` produces the following glitch with a polygon that intersects the pole\r\n\r\n![mollweide](https://cloud.githubusercontent.com/assets/4179064/12958043/d1d8ee0c-d02f-11e5-8092-8194087e3b7d.png)\r\n\r\nbut behaves as expected if the polygon doesn't quite reach the pole (`maxLat = 89` in the script).\r\n\r\n![mollweide_89](https://cloud.githubusercontent.com/assets/4179064/12958067/f800f106-d02f-11e5-9e83-acb7581c183c.png)\r\n\r\n````\r\nimport numpy\r\nimport matplotlib.pyplot as plt\r\nimport cartopy.crs\r\nimport cartopy.feature\r\n\r\n#maxLat = 89.\r\nmaxLat = 90.\r\n\r\npoints = [\r\n    [ -114.848345, 77.854709],\r\n    [ -120.812209, 76.737200],\r\n    [ -180.000000, 71.535845],\r\n    [ -180.000000, maxLat],\r\n    [ 0.000000, maxLat],\r\n    [ 180.000000, maxLat],\r\n    [ 180.000000, 73.187262],\r\n    [ 173.916445, 73.187262],\r\n    [ 88.445563, 81.255838],\r\n    [ 44.860000, 80.613455],\r\n    [ 24.365000, 80.289982],\r\n    [ 21.798055, 80.146945],\r\n    [ 18.443464, 80.181091],\r\n    [ -28.773336, 83.513609],\r\n    [ -36.783487, 83.573498],\r\n    [ -72.648900, 82.746645],\r\n    [ -76.102782, 82.470536],\r\n    [ -78.843609, 82.664991],\r\n    [ -80.909164, 82.156645],\r\n    [ -83.001955, 82.089155],\r\n    [ -85.405836, 82.042209],\r\n    [ -88.113618, 82.090545],\r\n    [ -93.687500, 81.210264],\r\n    [ -94.093609, 80.593318],\r\n    [ -114.848345, 77.854709]]\r\n          \r\npoints = numpy.asarray(points)\r\n\r\n\r\nfor projection in [cartopy.crs.PlateCarree(), cartopy.crs.Mollweide()]:\r\n    plt.figure()\r\n\r\n    ax = plt.axes(projection=projection)\r\n    resolution = '50m'\r\n    ax.add_feature(cartopy.feature.NaturalEarthFeature('physical', 'land', resolution,\r\n                   edgecolor='face', facecolor=cartopy.feature.COLORS['land']), zorder=1)\r\n    ax.add_feature(cartopy.feature.NaturalEarthFeature('physical', 'coastline', resolution,\r\n                   edgecolor='black', facecolor='none'), zorder=2)\r\n    \r\n    \r\n    plt.tight_layout()\r\n    \r\n    ax.fill(points[:,0], points[:,1], transform=cartopy.crs.PlateCarree(), color='green', alpha=0.4, linewidth=2.0, zorder=3)\r\n\r\nplt.show()\r\n```"}}