1# Copyright Cartopy Contributors 2# 3# This file is part of Cartopy and is released under the LGPL license. 4# See COPYING and COPYING.LESSER in the root of the repository for full 5# licensing details. 6 7import cartopy.io.shapereader as shpreader 8import cartopy.crs as ccrs 9import shapely.geometry as sgeom 10 11 12class Oceans: 13 def prepare(self): 14 shpfilename = shpreader.natural_earth( 15 resolution='50m', category='physical', name='ocean') 16 reader = shpreader.Reader(shpfilename) 17 oceans = reader.geometries() 18 oceans = sgeom.MultiPolygon(oceans) 19 self.geoms = oceans 20 21 22OCEAN = Oceans() 23 24 25def use_setup(setup_fn): 26 # A decorator to create a decorator... 27 def decorator(test_func): 28 # This decorator attaches the setup function to the test. 29 test_func.setup = setup_fn 30 return test_func 31 return decorator 32 33 34@use_setup(OCEAN.prepare) 35def time_ocean_pc(): 36 ccrs.PlateCarree().project_geometry(OCEAN.geoms) 37 38 39@use_setup(OCEAN.prepare) 40def time_ocean_np(): 41 ccrs.NorthPolarStereo().project_geometry(OCEAN.geoms) 42 43 44@use_setup(OCEAN.prepare) 45def time_ocean_rob(): 46 ccrs.Robinson().project_geometry(OCEAN.geoms) 47 48 49@use_setup(OCEAN.prepare) 50def time_ocean_igh(): 51 ccrs.InterruptedGoodeHomolosine().project_geometry(OCEAN.geoms) 52