Skip to content

Commit

Permalink
Merge pull request #560 from pelson/empty_path_to_geom
Browse files Browse the repository at this point in the history
Empty paths raising exception when being converted to shapely geometry.
  • Loading branch information
pelson committed Feb 20, 2015
2 parents 403207e + 91adb5d commit 40f1535
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 1 deletion.
4 changes: 3 additions & 1 deletion lib/cartopy/mpl/patch.py
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,9 @@ def path_to_geos(path, force_ccw=False):
# If geom is a Polygon and is contained within the last geom in
# collection, add it to its list of internal polygons, otherwise
# simple append it as a new external geom.
if (len(collection) > 0 and
if geom.is_empty:
pass
elif (len(collection) > 0 and
isinstance(collection[-1][0], Polygon) and
isinstance(geom, Polygon) and
collection[-1][0].contains(geom.exterior)):
Expand Down
40 changes: 40 additions & 0 deletions lib/cartopy/tests/mpl/test_patch.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# (C) British Crown Copyright 2015, Met Office
#
# This file is part of cartopy.
#
# cartopy is free software: you can redistribute it and/or modify it under
# the terms of the GNU Lesser General Public License as published by the
# Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cartopy is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with cartopy. If not, see <http://www.gnu.org/licenses/>.

from __future__ import (absolute_import, division, print_function)

import six
import unittest

from matplotlib.path import Path

import cartopy.mpl.patch as cpatch


class Test_path_to_geos(unittest.TestCase):
def test_empty_polyong(self):
p = Path([[0, 0], [0, 0], [0, 0], [0, 0],
[0, 0], [0, 0], [0, 0], [0, 0]],
codes=[1, 2, 2, 79,
1, 2, 2, 79])
geom = cpatch.path_to_geos(p)
self.assertEqual(len(geom), 0)


if __name__ == '__main__':
import nose
nose.runmodule(argv=['-s', '--with-doctest'], exit=False)

0 comments on commit 40f1535

Please sign in to comment.