Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def update_handles(self, *args):
"""
Update the elements of the plot.
"""
return GeoPlot.update_handles(self, *args)
style_opts = ['alpha', 'facecolor', 'edgecolor', 'linestyle', 'linewidth',
'visible']
def get_data(self, element, ranges, style):
if hasattr(element.data, 'with_scale'):
feature = element.data.with_scale(self.scale)
else:
feature = copy.copy(element.data)
feature.scale = self.scale
return (feature,), style, {}
def init_artists(self, ax, plot_args, plot_kwargs):
return {'artist': ax.add_feature(*plot_args, **plot_kwargs)}
class WMTSPlot(GeoPlot):
"""
Adds a Web Map Tile Service from a WMTS Element.
"""
zoom = param.Integer(default=8, doc="""
Controls the zoom level of the tile source.""")
style_opts = ['alpha', 'cmap', 'interpolation', 'visible',
'filterrad', 'clims', 'norm']
def get_data(self, element, ranges, style):
if isinstance(element.data, util.basestring):
tile_source = GoogleTiles(url=element.data)
return (tile_source, self.zoom), style, {}
else:
tile_source = element.data
apply_ranges = param.Boolean(default=True)
_project_operation = project_path
class GeoContourPlot(GeoPlot, ContourPlot):
"""
Draws a contour plot from a Contours Element.
"""
apply_ranges = param.Boolean(default=True)
_project_operation = project_path
class GeoPolygonPlot(GeoPlot, PolygonPlot):
"""
Draws a scatter plot from the data in a Points Element.
"""
apply_ranges = param.Boolean(default=True)
_project_operation = project_path
class LineContourPlot(GeoContourPlot):
"""
Draws a contour plot.
"""
levels = param.ClassSelector(default=10, class_=(list, int), doc="""
A list of scalar values used to specify the contour levels.""")
apply_ranges = param.Boolean(default=True)
_project_operation = project_points
class GeoLabelsPlot(GeoPlot, LabelsPlot):
"""
Draws a scatter plot from the data in a Labels Element.
"""
apply_ranges = param.Boolean(default=True)
_project_operation = project_points
class GeoHexTilesPlot(GeoPlot, HexTilesPlot):
"""
Draws a scatter plot from the data in a Points Element.
"""
apply_ranges = param.Boolean(default=True)
_project_operation = project_points
class GeoVectorFieldPlot(GeoPlot, VectorFieldPlot):
"""
Draws a vector field plot from the data in a VectorField Element.
"""
apply_ranges = param.Boolean(default=True)
_project_operation = project_graph
class GeoTriMeshPlot(GeoPlot, TriMeshPlot):
apply_ranges = param.Boolean(default=True)
_project_operation = project_graph
########################################
# Geographic features and annotations #
########################################
class FeaturePlot(GeoPlot):
"""
Draws a feature from a Features Element.
"""
scale = param.ObjectSelector(default='110m',
objects=['10m', '50m', '110m'],
doc="The scale of the Feature in meters.")
style_opts = ['alpha', 'facecolor', 'edgecolor', 'linestyle', 'linewidth',
'visible']
def get_data(self, element, ranges, style):
if hasattr(element.data, 'with_scale'):
feature = element.data.with_scale(self.scale)
else:
feature = copy.copy(element.data)
def _finalize_axis(self, *args, **kwargs):
gridlabels = self.geographic and isinstance(self.projection, (ccrs.PlateCarree, ccrs.Mercator))
if gridlabels:
xaxis, yaxis = self.xaxis, self.yaxis
self.xaxis = self.yaxis = None
try:
ret = super(GeoPlot, self)._finalize_axis(*args, **kwargs)
except Exception as e:
raise e
finally:
if gridlabels:
self.xaxis, self.yaxis = xaxis, yaxis
axis = self.handles['axis']
# Only PlateCarree and Mercator plots support grid labels.
if 'gridlines' in self.handles:
gl = self.handles['gridlines']
else:
self.handles['gridlines'] = gl = axis.gridlines(
draw_labels=gridlabels and self.zorder == 0)
self._process_grid(gl)
if self.global_extent:
apply_ranges = param.Boolean(default=True)
_project_operation = project_points
class GeometryPlot(GeoPlot):
def init_artists(self, ax, plot_args, plot_kwargs):
if self.geographic:
artist = ax.add_geometries(*plot_args, **plot_kwargs)
return {'artist': artist}
else:
return super(GeometryPlot, self).init_artist(ax, plot_args, plot_kwargs)
class GeoPathPlot(GeoPlot, PathPlot):
"""
Draws a Path plot from a Path Element.
"""
apply_ranges = param.Boolean(default=True)
_project_operation = project_path
class GeoContourPlot(GeoPlot, ContourPlot):
"""
Draws a contour plot from a Contours Element.
"""
apply_ranges = param.Boolean(default=True)
apply_ranges = param.Boolean(default=True)
_project_operation = project_points
class GeoVectorFieldPlot(GeoPlot, VectorFieldPlot):
"""
Draws a vector field plot from the data in a VectorField Element.
"""
apply_ranges = param.Boolean(default=True)
_project_operation = project_points
class GeometryPlot(GeoPlot):
def init_artists(self, ax, plot_args, plot_kwargs):
if self.geographic:
artist = ax.add_geometries(*plot_args, **plot_kwargs)
return {'artist': artist}
else:
return super(GeometryPlot, self).init_artist(ax, plot_args, plot_kwargs)
class GeoPathPlot(GeoPlot, PathPlot):
"""
Draws a Path plot from a Path Element.
"""
apply_ranges = param.Boolean(default=True)
if self._project_operation and self.geographic:
element = self._project_operation(element, projection=self.projection)
return super(GeoPlot, self).get_data(element, ranges, style)
def teardown_handles(self):
"""
Delete artist handle so it can be redrawn.
"""
try:
self.handles['artist'].remove()
except ValueError:
pass
class GeoImagePlot(GeoPlot, RasterPlot):
"""
Draws a pcolormesh plot from the data in a Image Element.
"""
style_opts = ['alpha', 'cmap', 'visible', 'filterrad', 'clims', 'norm']
def get_data(self, element, ranges, style):
self._norm_kwargs(element, ranges, style, element.vdims[0])
style.pop('interpolation', None)
xs, ys, zs = geo_mesh(element)
xs = GridInterface._infer_interval_breaks(xs)
ys = GridInterface._infer_interval_breaks(ys)
if self.geographic:
style['transform'] = element.crs
return (xs, ys, zs), style, {}
apply_ranges = param.Boolean(default=True)
_project_operation = project_points
class GeoHexTilesPlot(GeoPlot, HexTilesPlot):
"""
Draws a scatter plot from the data in a Points Element.
"""
apply_ranges = param.Boolean(default=True)
_project_operation = project_points
class GeoVectorFieldPlot(GeoPlot, VectorFieldPlot):
"""
Draws a vector field plot from the data in a VectorField Element.
"""
apply_ranges = param.Boolean(default=True)
_project_operation = project_points
class GeometryPlot(GeoPlot):
def init_artists(self, ax, plot_args, plot_kwargs):
if self.geographic:
artist = ax.add_geometries(*plot_args, **plot_kwargs)
return {'artist': artist}
else: