here.inspector.ipyleaflet.utils
Source code for here.inspector.ipyleaflet.utils
Copyright (C) 2019-2022 HERE Global B.V. and its affiliate(s).
All rights reserved.
This software and other materials contain proprietary information
controlled by HERE and are protected by applicable copyright legislation.
Any use and utilization of this software and other materials and
disclosure to any third parties is conditional upon having a separate
agreement with HERE for the access, use, utilization or disclosure of this
software. In the absence of such agreement, the use of the software is not
allowed.
"""
Helper utilities for the ipyleaflet-based inspector
"""
from typing import Dict
from here.inspector.brand import colors
from here.inspector.ipyleaflet.basemaps import external_basemaps, here_basemaps
from here.inspector.styles import Color, Theme
from mapquadlib import HereQuad
Conversion tables from generic inspector colors to Ipyleaflet colors
This is the main color, used for the color parameter of the ipyleaflet style
color parameter of the ipyleaflet stylelight_colors = {Color.AQUA: colors.HERE_Aqua_Dark, Color.RED: colors.Red, Color.PINK: colors.Pink, Color.ORANGE: colors.Orange, Color.YELLOW: colors.Yellow, Color.GREEN: colors.Dark_Green, Color.BLUE: colors.Dark_Blue, Color.PURPLE: colors.Purple, Color.GRAY: colors.HERE_Gray,}
dark_colors = {Color.AQUA: colors.HERE_Aqua, Color.RED: colors.Red_75, Color.PINK: colors.Pink_75, Color.ORANGE: colors.Orange_75, Color.YELLOW: colors.Yellow_75, Color.GREEN: colors.Light_Green, Color.BLUE: colors.Light_Blue, Color.PURPLE: colors.Purple_75, Color.GRAY: colors.HERE_Gray_50,}
theme_colors = {
Theme.LIGHT_BLANK: light_colors,
Theme.LIGHT_MAP: light_colors,
Theme.DARK_BLANK: dark_colors,
Theme.DARK_MAP: dark_colors,
}
theme_basemap = {
Theme.LIGHT_BLANK: None,
Theme.LIGHT_MAP: external_basemaps.Esri.WorldTopoMap,
Theme.DARK_BLANK: None,
Theme.DARK_MAP: external_basemaps.CartoDB.DarkMatter,
}
theme_here_basemap = {
Theme.LIGHT_BLANK: None,
Theme.LIGHT_MAP: here_basemaps.liteDay,
Theme.DARK_BLANK: None,
Theme.DARK_MAP: here_basemaps.liteNight,
}
[docs]
def to_style(theme: Theme, color: Color) -> Dict:
"""Convert a color to an ipyleaflet style given a theme"""
return {"color": theme_colors[theme][color], "opacity": 1}
def _geojson_with_longkey(tile_id: int) -> dict:
"""
Return GeoJSON geometry for given mapquad with its long key as parameter.
The quad's "long key" (an integer) will appear as "tile_id" in the
properties.
:param tile_id: Tile id
:returns: A dict representing a GeoJSON geometry (polygon) for the mapquad.
Example:
_geojson_with_longkey(1483) # doctest: +SKIP
{'type': 'Polygon',
'coordinates': [[[101.25, 33.75],
[112.5, 33.75],
[112.5, 45.0],
[101.25, 45.0],
[101.25, 33.75]]],
'properties': {'tile_id': 1483}}
""" # noqa: D412
quad = HereQuad.from_long_key(tile_id)
gj: dict = quad.bounding_box._geojson()
if "properties" not in gj:
gj["properties"] =
gj["properties"]["tile_id"] = tile_id
return gj