Skip to content

Commit

Permalink
Added Planet basemaps GUI #9
Browse files Browse the repository at this point in the history
  • Loading branch information
giswqs committed Jun 14, 2021
1 parent f820cfb commit dc95c37
Show file tree
Hide file tree
Showing 6 changed files with 214 additions and 30 deletions.
12 changes: 6 additions & 6 deletions docs/notebooks/20_planet_imagery.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
"outputs": [],
"source": [
"import os\n",
"import leafmap.foliumap as leafmap"
"import leafmap"
]
},
{
Expand Down Expand Up @@ -65,7 +65,7 @@
"metadata": {},
"outputs": [],
"source": [
"# leafmap.planet_biannual_catalog()"
"# leafmap.planet_biannual_tropical()"
]
},
{
Expand All @@ -74,7 +74,7 @@
"metadata": {},
"outputs": [],
"source": [
"# leafmap.planet_monthly_catalog()"
"# leafmap.planet_monthly_tropical()"
]
},
{
Expand All @@ -83,7 +83,7 @@
"metadata": {},
"outputs": [],
"source": [
"# leafmap.planet_catalog()"
"# leafmap.planet_catalog_tropical()"
]
},
{
Expand All @@ -92,7 +92,7 @@
"metadata": {},
"outputs": [],
"source": [
"biannual_tiles = leafmap.planet_biannual_tiles(api_key=None, token_name='PLANET_API_KEY', tile_format=tile_format)"
"biannual_tiles = leafmap.planet_biannual_tiles_tropical(api_key=None, token_name='PLANET_API_KEY', tile_format=tile_format)"
]
},
{
Expand All @@ -101,7 +101,7 @@
"metadata": {},
"outputs": [],
"source": [
"monthly_tiles = leafmap.planet_monthly_tiles(api_key=None, token_name='PLANET_API_KEY', tile_format=tile_format)"
"monthly_tiles = leafmap.planet_monthly_tiles_tropical(api_key=None, token_name='PLANET_API_KEY', tile_format=tile_format)"
]
},
{
Expand Down
12 changes: 6 additions & 6 deletions examples/notebooks/20_planet_imagery.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
"outputs": [],
"source": [
"import os\n",
"import leafmap.foliumap as leafmap"
"import leafmap"
]
},
{
Expand Down Expand Up @@ -65,7 +65,7 @@
"metadata": {},
"outputs": [],
"source": [
"# leafmap.planet_biannual_catalog()"
"# leafmap.planet_biannual_tropical()"
]
},
{
Expand All @@ -74,7 +74,7 @@
"metadata": {},
"outputs": [],
"source": [
"# leafmap.planet_monthly_catalog()"
"# leafmap.planet_monthly_tropical()"
]
},
{
Expand All @@ -83,7 +83,7 @@
"metadata": {},
"outputs": [],
"source": [
"# leafmap.planet_catalog()"
"# leafmap.planet_catalog_tropical()"
]
},
{
Expand All @@ -92,7 +92,7 @@
"metadata": {},
"outputs": [],
"source": [
"biannual_tiles = leafmap.planet_biannual_tiles(api_key=None, token_name='PLANET_API_KEY', tile_format=tile_format)"
"biannual_tiles = leafmap.planet_biannual_tiles_tropical(api_key=None, token_name='PLANET_API_KEY', tile_format=tile_format)"
]
},
{
Expand All @@ -101,7 +101,7 @@
"metadata": {},
"outputs": [],
"source": [
"monthly_tiles = leafmap.planet_monthly_tiles(api_key=None, token_name='PLANET_API_KEY', tile_format=tile_format)"
"monthly_tiles = leafmap.planet_monthly_tiles_tropical(api_key=None, token_name='PLANET_API_KEY', tile_format=tile_format)"
]
},
{
Expand Down
4 changes: 2 additions & 2 deletions leafmap/basemaps.py
Original file line number Diff line number Diff line change
Expand Up @@ -528,9 +528,9 @@
leaf_basemaps[name] = basemap_to_tiles(eval(basemap))

if os.environ.get("PLANET_API_KEY") is not None:
from .common import planet_tiles
from .common import planet_tiles_tropical

planet_dict = planet_tiles()
planet_dict = planet_tiles_tropical()
for key in planet_dict:
leaf_basemaps[key] = planet_dict[key]

Expand Down
26 changes: 14 additions & 12 deletions leafmap/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -1717,7 +1717,7 @@ def vector_col_names(filename, **kwargs):
return col_names


def planet_monthly_catalog(api_key=None, token_name="PLANET_API_KEY"):
def planet_monthly_tropical(api_key=None, token_name="PLANET_API_KEY"):
"""Generates Planet monthly imagery URLs based on API key. See https://assets.planet.com/docs/NICFI_UserGuidesFAQ.pdf
Args:
Expand Down Expand Up @@ -1760,7 +1760,7 @@ def planet_monthly_catalog(api_key=None, token_name="PLANET_API_KEY"):
return url_list


def planet_biannual_catalog(api_key=None, token_name="PLANET_API_KEY"):
def planet_biannual_tropical(api_key=None, token_name="PLANET_API_KEY"):
"""Generates Planet bi-annual imagery URLs based on API key. See https://assets.planet.com/docs/NICFI_UserGuidesFAQ.pdf
Args:
Expand Down Expand Up @@ -1803,7 +1803,7 @@ def planet_biannual_catalog(api_key=None, token_name="PLANET_API_KEY"):
return url_list


def planet_catalog(api_key=None, token_name="PLANET_API_KEY"):
def planet_catalog_tropical(api_key=None, token_name="PLANET_API_KEY"):
"""Generates Planet bi-annual and monthly imagery URLs based on API key. See https://assets.planet.com/docs/NICFI_UserGuidesFAQ.pdf
Args:
Expand All @@ -1813,12 +1813,12 @@ def planet_catalog(api_key=None, token_name="PLANET_API_KEY"):
Returns:
list: A list of tile URLs.
"""
biannual = planet_biannual_catalog(api_key, token_name)
monthly = planet_monthly_catalog(api_key, token_name)
biannual = planet_biannual_tropical(api_key, token_name)
monthly = planet_monthly_tropical(api_key, token_name)
return biannual + monthly


def planet_monthly_tiles(
def planet_monthly_tiles_tropical(
api_key=None, token_name="PLANET_API_KEY", tile_format="ipyleaflet"
):
"""Generates Planet monthly imagery TileLayer based on API key. See https://assets.planet.com/docs/NICFI_UserGuidesFAQ.pdf
Expand All @@ -1841,7 +1841,7 @@ def planet_monthly_tiles(
raise ValueError("The tile format must be either ipyleaflet or folium.")

tiles = {}
url_list = planet_monthly_catalog(api_key, token_name)
url_list = planet_monthly_tropical(api_key, token_name)
for url in url_list:
index = url.find("20")
name = "Planet_" + url[index : index + 7]
Expand All @@ -1862,7 +1862,7 @@ def planet_monthly_tiles(
return tiles


def planet_biannual_tiles(
def planet_biannual_tiles_tropical(
api_key=None, token_name="PLANET_API_KEY", tile_format="ipyleaflet"
):
"""Generates Planet bi-annual imagery TileLayer based on API key. See https://assets.planet.com/docs/NICFI_UserGuidesFAQ.pdf
Expand All @@ -1886,7 +1886,7 @@ def planet_biannual_tiles(
raise ValueError("The tile format must be either ipyleaflet or folium.")

tiles = {}
url_list = planet_biannual_catalog(api_key, token_name)
url_list = planet_biannual_tropical(api_key, token_name)
for url in url_list:
index = url.find("20")
name = "Planet_" + url[index : index + 15]
Expand All @@ -1905,7 +1905,9 @@ def planet_biannual_tiles(
return tiles


def planet_tiles(api_key=None, token_name="PLANET_API_KEY", tile_format="ipyleaflet"):
def planet_tiles_tropical(
api_key=None, token_name="PLANET_API_KEY", tile_format="ipyleaflet"
):
"""Generates Planet monthly imagery TileLayer based on API key. See https://assets.planet.com/docs/NICFI_UserGuidesFAQ.pdf
Args:
Expand All @@ -1921,8 +1923,8 @@ def planet_tiles(api_key=None, token_name="PLANET_API_KEY", tile_format="ipyleaf
"""

catalog = {}
biannul = planet_biannual_tiles(api_key, token_name, tile_format)
monthly = planet_monthly_tiles(api_key, token_name, tile_format)
biannul = planet_biannual_tiles_tropical(api_key, token_name, tile_format)
monthly = planet_monthly_tiles_tropical(api_key, token_name, tile_format)

for key in biannul:
catalog[key] = biannul[key]
Expand Down
90 changes: 90 additions & 0 deletions leafmap/leafmap.py
Original file line number Diff line number Diff line change
Expand Up @@ -2228,3 +2228,93 @@ def split_map(
raise Exception(e)

return m


def ts_inspector(
layers_dict=None,
left_name=None,
right_name=None,
width="120px",
center=[40, -100],
zoom=4,
**kwargs,
):

import ipywidgets as widgets

add_zoom = True
add_fullscreen = True

if "toolbar_control" not in kwargs:
kwargs["toolbar_control"] = False
if "draw_control" not in kwargs:
kwargs["draw_control"] = False
if "measure_control" not in kwargs:
kwargs["measure_control"] = False
if "zoom_control" not in kwargs:
kwargs["zoom_control"] = False
else:
add_zoom = kwargs["zoom_control"]
if "fullscreen_control" not in kwargs:
kwargs["fullscreen_control"] = False
else:
add_fullscreen = kwargs["fullscreen_control"]

if layers_dict is None:
layers_dict = {}
keys = dict(basemap_tiles).keys()
for key in keys:
if isinstance(basemap_tiles[key], ipyleaflet.WMSLayer):
pass
else:
layers_dict[key] = basemap_tiles[key]

keys = list(layers_dict.keys())
if left_name is None:
left_name = keys[0]
if right_name is None:
right_name = keys[-1]

left_layer = layers_dict[left_name]
right_layer = layers_dict[right_name]

m = Map(center=center, zoom=zoom, google_map=None, **kwargs)
control = ipyleaflet.SplitMapControl(left_layer=left_layer, right_layer=right_layer)
m.add_control(control)

left_dropdown = widgets.Dropdown(
options=keys, value=left_name, layout=widgets.Layout(width=width)
)

left_control = ipyleaflet.WidgetControl(widget=left_dropdown, position="topleft")
m.add_control(left_control)

right_dropdown = widgets.Dropdown(
options=keys, value=right_name, layout=widgets.Layout(width=width)
)

right_control = ipyleaflet.WidgetControl(widget=right_dropdown, position="topright")
m.add_control(right_control)

if add_zoom:
m.add_control(ipyleaflet.ZoomControl())
if add_fullscreen:
m.add_control(ipyleaflet.FullScreenControl())

split_control = None
for ctrl in m.controls:
if isinstance(ctrl, ipyleaflet.SplitMapControl):
split_control = ctrl
break

def left_change(change):
split_control.left_layer.url = layers_dict[left_dropdown.value].url

left_dropdown.observe(left_change, "value")

def right_change(change):
split_control.right_layer.url = layers_dict[right_dropdown.value].url

right_dropdown.observe(right_change, "value")

return m
Loading

0 comments on commit dc95c37

Please sign in to comment.