Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
levels = param.ClassSelector(default=10, class_=(list, int), doc="""
A list of scalar values used to specify the contour levels.""")
class GeoPathPlot(GeoPlot, PathPlot):
_project_operation = project_path
class GeoGraphPlot(GeoPlot, GraphPlot):
_project_operation = project_graph
class GeoTriMeshPlot(GeoPlot, TriMeshPlot):
_project_operation = project_graph
class GeoShapePlot(GeoPolygonPlot):
def get_data(self, element, ranges, style):
if not isinstance(element.data['geometry'], poly_types):
style['fill_alpha'] = 0
if isinstance(element.data['geometry'], line_types):
el_type = Contours
style['plot_method'] = 'multi_line'
style.pop('fill_color', None)
style.pop('fill_alpha', None)
else:
el_type = Polygons
class FilledContourPlot(GeoPolygonPlot):
"""
Draws a filled contour plot.
"""
levels = param.ClassSelector(default=10, class_=(list, int), doc="""
A list of scalar values used to specify the contour levels.""")
class GeoPathPlot(GeoPlot, PathPlot):
_project_operation = project_path
class GeoGraphPlot(GeoPlot, GraphPlot):
_project_operation = project_graph
class GeoTriMeshPlot(GeoPlot, TriMeshPlot):
_project_operation = project_graph
class GeoShapePlot(GeoPolygonPlot):
def get_data(self, element, ranges, style):
if not isinstance(element.data['geometry'], poly_types):
style['fill_alpha'] = 0
if isinstance(element.data['geometry'], line_types):
el_type = Contours
from holoviews.plotting.bokeh.path import PolygonPlot, PathPlot, ContourPlot
from holoviews.plotting.bokeh.raster import RasterPlot, RGBPlot, QuadMeshPlot
from ...element import (WMTS, Points, Polygons, Path, Contours, Shape,
Image, Feature, Text, RGB, Nodes, EdgePaths,
Graph, TriMesh, QuadMesh, VectorField, Labels,
HexTiles, LineContours, FilledContours)
from ...operation import (project_image, project_points, project_path,
project_graph, project_quadmesh)
from ...tile_sources import _ATTRIBUTIONS
from ...util import poly_types, line_types
from .plot import GeoPlot, GeoOverlayPlot
from . import callbacks # noqa
class TilePlot(GeoPlot):
style_opts = ['alpha', 'render_parents', 'level', 'smoothing', 'min_zoom', 'max_zoom']
def get_extents(self, element, ranges, range_type='combined'):
extents = super(TilePlot, self).get_extents(element, ranges, range_type)
if (not self.overlaid and all(e is None or not np.isfinite(e) for e in extents)
and range_type in ('combined', 'data')):
(x0, x1), (y0, y1) = GOOGLE_MERCATOR.x_limits, GOOGLE_MERCATOR.y_limits
global_extent = (x0, y0, x1, y1)
return global_extent
return extents
def get_data(self, element, ranges, style):
if not isinstance(element.data, util.basestring):
SkipRendering("WMTS element data must be a URL string, "
"bokeh cannot render %r" % element.data)
def _init_glyph(self, plot, mapping, properties):
"""
Returns a Bokeh glyph object.
"""
tile_source = mapping['tile_source']
level = properties.pop('level', 'underlay')
renderer = plot.add_tile(tile_source, level=level)
renderer.alpha = properties.get('alpha', 1)
# Remove save tool
plot.tools = [t for t in plot.tools if not isinstance(t, SaveTool)]
return renderer, tile_source
class GeoPointPlot(GeoPlot, PointPlot):
_project_operation = project_points
class GeoVectorFieldPlot(GeoPlot, VectorFieldPlot):
_project_operation = project_points
class GeoQuadMeshPlot(GeoPlot, QuadMeshPlot):
_project_operation = project_quadmesh
class GeoRasterPlot(GeoPlot, RasterPlot):
"""
levels = param.ClassSelector(default=10, class_=(list, int), doc="""
A list of scalar values used to specify the contour levels.""")
class FilledContourPlot(GeoPolygonPlot):
"""
Draws a filled contour plot.
"""
levels = param.ClassSelector(default=10, class_=(list, int), doc="""
A list of scalar values used to specify the contour levels.""")
class GeoPathPlot(GeoPlot, PathPlot):
_project_operation = project_path
class GeoGraphPlot(GeoPlot, GraphPlot):
_project_operation = project_graph
class GeoTriMeshPlot(GeoPlot, TriMeshPlot):
_project_operation = project_graph
class GeoShapePlot(GeoPolygonPlot):
class GeoPointPlot(GeoPlot, PointPlot):
_project_operation = project_points
class GeoVectorFieldPlot(GeoPlot, VectorFieldPlot):
_project_operation = project_points
class GeoQuadMeshPlot(GeoPlot, QuadMeshPlot):
_project_operation = project_quadmesh
class GeoRasterPlot(GeoPlot, RasterPlot):
clipping_colors = param.Dict(default={'NaN': (0, 0, 0, 0)}, doc="""
Dictionary to specify colors for clipped values, allows
setting color for NaN values and for values above and below
the min and max value. The min, max or NaN color may specify
an RGB(A) color as a color hex string of the form #FFFFFF or
#FFFFFFFF or a length 3 or length 4 tuple specifying values in
the range 0-1 or a named HTML color.""")
_project_operation = project_image.instance(fast=False)
_hover_code = """
var projections = require("core/util/projections");
var x = special_vars.x
var y = special_vars.y
var coords = projections.wgs84_mercator.inverse([x, y])
_hover_code = """
var projections = require("core/util/projections");
var x = special_vars.x
var y = special_vars.y
var coords = projections.wgs84_mercator.inverse([x, y])
return "" + (coords[%d]).toFixed(4)
"""
class GeoRGBPlot(GeoPlot, RGBPlot):
_project_operation = project_image.instance(fast=False)
class GeoPolygonPlot(GeoPlot, PolygonPlot):
_project_operation = project_path
class GeoContourPlot(GeoPlot, ContourPlot):
_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.""")
def initialize_plot(self, ranges=None, plot=None, plots=None, source=None):
opts = {} if isinstance(self, HvOverlayPlot) else {'source': source}
fig = super(GeoPlot, self).initialize_plot(ranges, plot, plots, **opts)
if self.geographic and self.show_bounds and not self.overlaid:
from . import GeoShapePlot
shape = Shape(self.projection.boundary, crs=self.projection).options(fill_alpha=0)
shapeplot = GeoShapePlot(shape, projection=self.projection,
overlaid=True, renderer=self.renderer)
shapeplot.geographic = False
shapeplot.initialize_plot(plot=fig)
return fig
feature = copy.copy(element.data)
feature.scale = self.scale
geoms = list(feature.geometries())
if isinstance(geoms[0], line_types):
el_type = Contours
style['plot_method'] = 'multi_line'
style.pop('fill_color', None)
style.pop('fill_alpha', None)
else:
el_type = Polygons
polys = el_type(geoms, crs=element.crs, **util.get_param_values(element))
return super(FeaturePlot, self).get_data(polys, ranges, style)
class GeoTextPlot(GeoPlot, TextPlot):
def get_data(self, element, ranges, style):
mapping = dict(x='x', y='y', text='text')
if not self.geographic:
return super(GeoTextPlot, self).get_data(element, ranges, style)
if element.crs:
x, y = self.projection.transform_point(element.x, element.y,
element.crs)
return (dict(x=[x], y=[y], text=[element.text]), mapping, style)
class GeoLabelsPlot(GeoPlot, LabelsPlot):
_project_operation = project_points
an RGB(A) color as a color hex string of the form #FFFFFF or
#FFFFFFFF or a length 3 or length 4 tuple specifying values in
the range 0-1 or a named HTML color.""")
_project_operation = project_image.instance(fast=False)
_hover_code = """
var projections = require("core/util/projections");
var x = special_vars.x
var y = special_vars.y
var coords = projections.wgs84_mercator.inverse([x, y])
return "" + (coords[%d]).toFixed(4)
"""
class GeoRGBPlot(GeoPlot, RGBPlot):
_project_operation = project_image.instance(fast=False)
class GeoPolygonPlot(GeoPlot, PolygonPlot):
_project_operation = project_path
class GeoContourPlot(GeoPlot, ContourPlot):
_project_operation = project_path
class LineContourPlot(GeoContourPlot):
"""