Skip to content

Commit 5952df0

Browse files
authored
Merge pull request #1823 from gauteh/gridlines-cartopy-bug
plot: protect gridliner against Shapely 2.x LinearRing error
2 parents a31facf + 977d2b7 commit 5952df0

3 files changed

Lines changed: 17 additions & 20 deletions

File tree

opendrift/models/basemodel/__init__.py

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -336,7 +336,7 @@ def __init__(self,
336336
# Set up logging
337337
logformat = '%(asctime)s %(levelname)-7s %(name)s:%(lineno)d: %(message)s'
338338
datefmt = '%H:%M:%S'
339-
339+
340340
if loglevel < 10: # 0 is NOTSET, giving no output
341341
print('WARNING: from next version (1.14.10), loglevel of 0 will give no logging, please change to 10 for DEBUG')
342342
loglevel = 10
@@ -1676,16 +1676,16 @@ def seed_from_ladim(self, ladimfile, roms):
16761676
elements = self.ElementType(lon=lon, lat=lat, z=-z)
16771677

16781678
self.schedule_elements(elements, time)
1679-
1679+
16801680
@require_mode(mode=Mode.Ready)
16811681
def seed_from_dataset(self, ds, trajectory_time_index=-1, time=None, keep_properties=True, **kwargs):
16821682
"""Seed elements from OpenDrift dataset
16831683
16841684
Arguments:
1685-
ds (DataArray) : DataArray from previous OpenDrift run.
1686-
trajectory_time_index (int) : Time index from which to continue OpenDrift run.
1687-
time (datenum or list) : Time to initiate particles. If None, uses time from trajectory_time_index.
1688-
keep_properties (bool) : Keep element properties from DataArray. If False, overrides properties with new ones.
1685+
ds (DataArray) : DataArray from previous OpenDrift run.
1686+
trajectory_time_index (int) : Time index from which to continue OpenDrift run.
1687+
time (datenum or list) : Time to initiate particles. If None, uses time from trajectory_time_index.
1688+
keep_properties (bool) : Keep element properties from DataArray. If False, overrides properties with new ones.
16891689
"""
16901690
ds = ds.isel(time=trajectory_time_index)
16911691

@@ -1695,9 +1695,9 @@ def seed_from_dataset(self, ds, trajectory_time_index=-1, time=None, keep_proper
16951695

16961696
# Dropping trajectories which had not been initiated at selected time, e.g. for continuous release.
16971697
ds = ds.where(ds.age_seconds >= 0, drop=True)
1698-
1698+
16991699
logger.info('Using positions from dataset at time %s' % (str(time)))
1700-
1700+
17011701
try:
17021702
file_class = ds.opendrift_class
17031703
current_class = self.__class__.__name__
@@ -1718,12 +1718,12 @@ def seed_from_dataset(self, ds, trajectory_time_index=-1, time=None, keep_proper
17181718
else:
17191719
if key in ds:
17201720
prop_dict[key] = ds[key].values
1721-
1721+
17221722
logger.info('Seeding %i particles from dataset' %(len(ds.lon)))
17231723
logger.info('Using values from dataset for element properties: ')
17241724
logger.info('%s' % (str([key for key in prop_dict.keys()])))
17251725
self.seed_elements(ds.lon, ds.lat, time=time, **prop_dict)
1726-
1726+
17271727
else:
17281728
logger.info('Using only lon, lat from provided dataset. Omitting particle properties from previous run')
17291729
self.seed_elements(ds.lon, ds.lat, time=time, **kwargs)
@@ -1732,12 +1732,12 @@ def seed_from_dataset(self, ds, trajectory_time_index=-1, time=None, keep_proper
17321732
@require_mode(mode=Mode.Ready)
17331733
def seed_from_file(self, filename, trajectory_time_index=-1, time=None, keep_properties=True, **kwargs):
17341734
"""Seed elements from OpenDrift output netCDF file
1735-
1735+
17361736
Arguments:
17371737
filename (str) : Name of netCDF file with particle positions.
1738-
trajectory_time_index (int) : Time index from which to continue OpenDrift run.
1739-
time (datenum or list) : Time to initiate particles. If None, uses time from trajectory_time_index.
1740-
keep_properties (bool) : Keep element properties from file. If False, overrides properties with new ones.
1738+
trajectory_time_index (int) : Time index from which to continue OpenDrift run.
1739+
time (datenum or list) : Time to initiate particles. If None, uses time from trajectory_time_index.
1740+
keep_properties (bool) : Keep element properties from file. If False, overrides properties with new ones.
17411741
"""
17421742
logger.info('Seeding elements from previous run in %s' %(filename))
17431743
ds = xr.open_dataset(filename)
@@ -2612,8 +2612,7 @@ def set_up_map(self,
26122612
lonmax -= .1 # To avoid problem with Cartopy
26132613
ax.set_extent([lonmin, lonmax, latmin, latmax], crs=self.crs_lonlat)
26142614

2615-
gl = ax.gridlines(self.crs_lonlat, draw_labels=True, xlocs=xlocs, ylocs=ylocs)
2616-
gl.top_labels = None
2615+
gl = ax.gridlines(self.crs_lonlat, draw_labels=['left', 'bottom'], xlocs=xlocs, ylocs=ylocs)
26172616

26182617
if 'ocean_color' in kwargs:
26192618
ax.patch.set_facecolor(kwargs['ocean_color'])

opendrift/readers/basereader/__init__.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -289,8 +289,7 @@ def plot(self, variable=None, vmin=None, vmax=None, time=None,
289289
facecolor=cfeature.COLORS['land'],
290290
edgecolor='black')
291291

292-
gl = ax.gridlines(ccrs.PlateCarree(), draw_labels=True, x_inline=False, y_inline=False)
293-
gl.top_labels = False
292+
gl = ax.gridlines(ccrs.PlateCarree(), draw_labels=['left', 'bottom'], x_inline=False, y_inline=False)
294293

295294
# Get boundary
296295
if self.global_coverage():

opendrift/readers/reader_schism_native.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -778,8 +778,7 @@ def plot_mesh(self, variable=None, vmin=None, vmax=None,
778778
facecolor=cfeature.COLORS['land'],
779779
edgecolor='black')
780780

781-
gl = ax.gridlines(ccrs.PlateCarree())
782-
gl.xlabels_top = False
781+
gl = ax.gridlines(ccrs.PlateCarree(), draw_labels=['left', 'bottom'])
783782

784783
# Get boundary
785784
npoints = 10 # points per side

0 commit comments

Comments
 (0)