Spaces:
Sleeping
Sleeping
import ast | |
import streamlit as st | |
import leafmap.foliumap as leafmap | |
st.set_page_config(layout="wide") | |
st.sidebar.info( | |
""" | |
- Web App URL: <https://streamlit.gishub.org> | |
- GitHub repository: <https://github.com/giswqs/streamlit-geospatial> | |
""" | |
) | |
st.sidebar.title("Contact") | |
st.sidebar.info( | |
""" | |
Qiusheng Wu at [wetlands.io](https://wetlands.io) | [GitHub](https://github.com/giswqs) | [Twitter](https://twitter.com/giswqs) | [YouTube](https://www.youtube.com/c/QiushengWu) | [LinkedIn](https://www.linkedin.com/in/qiushengwu) | |
""" | |
) | |
def get_layers(url): | |
options = leafmap.get_wms_layers(url) | |
return options | |
def app(): | |
st.title("Web Map Service (WMS)") | |
st.markdown( | |
""" | |
This app is a demonstration of loading Web Map Service (WMS) layers. Simply enter the URL of the WMS service | |
in the text box below and press Enter to retrieve the layers. Go to https://apps.nationalmap.gov/services to find | |
some WMS URLs if needed. | |
""" | |
) | |
row1_col1, row1_col2 = st.columns([3, 1.3]) | |
width = 800 | |
height = 600 | |
layers = None | |
with row1_col2: | |
esa_landcover = "https://services.terrascope.be/wms/v2" | |
url = st.text_input( | |
"Enter a WMS URL:", value="https://services.terrascope.be/wms/v2" | |
) | |
empty = st.empty() | |
if url: | |
options = get_layers(url) | |
default = None | |
if url == esa_landcover: | |
default = "WORLDCOVER_2020_MAP" | |
layers = empty.multiselect( | |
"Select WMS layers to add to the map:", options, default=default | |
) | |
add_legend = st.checkbox("Add a legend to the map", value=True) | |
if default == "WORLDCOVER_2020_MAP": | |
legend = str(leafmap.builtin_legends["ESA_WorldCover"]) | |
else: | |
legend = "" | |
if add_legend: | |
legend_text = st.text_area( | |
"Enter a legend as a dictionary {label: color}", | |
value=legend, | |
height=200, | |
) | |
with row1_col1: | |
m = leafmap.Map(center=(36.3, 0), zoom=2) | |
if layers is not None: | |
for layer in layers: | |
m.add_wms_layer( | |
url, layers=layer, name=layer, attribution=" ", transparent=True | |
) | |
if add_legend and legend_text: | |
legend_dict = ast.literal_eval(legend_text) | |
m.add_legend(legend_dict=legend_dict) | |
m.to_streamlit(height=height) | |
app() | |