Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 8 additions & 3 deletions lib/cartopy/_crs.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ class Globe(object):
Define an ellipsoid and, optionally, how to relate it to the real world.

"""
def __init__(self, datum=None, ellipse='WGS84',
def __init__(self, datum=None, ellipse=None,
semimajor_axis=None, semiminor_axis=None,
flattening=None, inverse_flattening=None,
towgs84=None, nadgrids=None):
Expand All @@ -127,7 +127,7 @@ class Globe(object):
datum
Proj "datum" definition. Defaults to None.
ellipse
Proj "ellps" definition. Defaults to 'WGS84'.
Proj "ellps" definition. Defaults to 'WGS84' if no arguments given.
semimajor_axis
Semimajor axis of the spheroid / ellipsoid. Defaults to None.
semiminor_axis
Expand All @@ -142,8 +142,13 @@ class Globe(object):
Passed through to the Proj definition. Defaults to None.

"""
args = (datum, ellipse, semimajor_axis, semiminor_axis,
flattening, inverse_flattening, towgs84, nadgrids)
args_defaults = zip(args, self.__init__.__defaults__)
all_defaults = all(arg == default for arg, default in args_defaults)

self.datum = datum
self.ellipse = ellipse
self.ellipse = 'WGS84' if all_defaults else ellipse
self.semimajor_axis = semimajor_axis
self.semiminor_axis = semiminor_axis
self.flattening = flattening
Expand Down
10 changes: 10 additions & 0 deletions lib/cartopy/tests/test_crs.py
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,16 @@ def test_globe(self):
assert_arr_almost_eq(rugby_pt, (1400915, 1741319), decimal=0)
assert_arr_almost_eq(footy_pt, (155657, 193479), decimal=0)

def test_globe_defaults(self):
"""Regression test for #564"""
default_globe = ccrs.Globe()
assert default_globe.ellipse == 'WGS84'

eccentric_globe = ccrs.Globe(semimajor_axis=1000, semiminor_axis=500)
assert not eccentric_globe.ellipse
assert eccentric_globe.semimajor_axis == 1000
assert eccentric_globe.semiminor_axis == 500

def test_project_point(self):
point = sgeom.Point([0, 45])
multi_point = sgeom.MultiPoint([point, sgeom.Point([180, 45])])
Expand Down