Spaces:
Running
on
L4
Running
on
L4
File size: 4,124 Bytes
90b25f5 6401b49 2dcc4fd 90b25f5 3af24bc 90b25f5 a5af602 af46245 90b25f5 fb6a92f 90b25f5 adc6b43 90b25f5 af46245 90b25f5 adc6b43 90b25f5 afef7db 9e5ff86 90b25f5 2dcc4fd 3bf0d94 90b25f5 a5af602 af46245 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
import sys
import os
import leafmap
from helpers.grid import *
from helpers.functional import *
from leafmap.toolbar import change_basemap
from IPython.display import display
import ipywidgets
import solara
instructions_top = '''
![image/png](https://cdn-uploads.huggingface.co/production/uploads/6304c06eeb6d777a838eab63/BJKsLwX0GG4W3-gdf40TJ.png)
# Dataset Viewer
This app provides a way of exploring samples present in the MajorTOM-Core dataset.
It contains nearly every piece of Earth captured by ESA Sentinel-2 satellite as well as a large fraction of paired Sentinel-1 data from a similar time period.
### Instructions
To find a sample, navigate on the map to a place of interest. Click `Find Sample` to find a dataset sample that contains the central pixel of your current view.
'''
instructions_bottom = '''
<details><summary><strong>π Couldn't find a sample? See this figure of global coverage:</strong></summary>
<img src='https://cdn-uploads.huggingface.co/production/uploads/6304c06eeb6d777a838eab63/2KTarfsM0a1dNYEbXriUH.png' />
</details>
'''
image_data = solara.reactive(Image.new('RGB',(1068,1068)))
center = solara.reactive((20, 0))
gridcell = solara.reactive('')
timestamp = solara.reactive('')
zoom= solara.reactive(4)
source = solara.reactive('Sentinel-2 L2A')
@solara.component
def Page():
with solara.Column():
with solara.Card(margin=10):
solara.Markdown(instructions_top)
solara.Button(label="Website",
icon_name="mdi-map-legend",
attributes={"href": 'https://www.huggingface.co/Major-TOM', "target": "_blank"},
text=True,
outlined=True)
solara.Button(label="arXiv Paper",
icon_name="mdi-script-text",
attributes={"href": 'https://www.arxiv.org/abs/2402.12095', "target": "_blank"},
text=True,
outlined=True)
solara.Markdown(instructions_bottom)
def update_image():
ret = map_to_image(m, return_centre=True, return_gridcell=True, return_timestamp=True, source=source.value)
if ret is not None:
image_data.value, center.value, gridcell.value, timestamp.value = ret
zoom.value=12
else:
image_data.value = Image.new('RGB',(1068,1068))
center.value = (20,0)
zoom.value = 4
def update_source(val):
source.value = val
update_image()
with solara.Card(margin=10):
with solara.ColumnsResponsive(default=12, small=12, medium=6, large=6, xlarge=6):
with solara.Column(align='center'):
m = leafmap.Map(
height=560,
width=560,
layout=ipywidgets.Layout(max_width='60vw', max_height='80vh'),
zoom=zoom.value,
center=center.value,
draw_control=False,
measure_control=False,
fullscreen_control=False,
toolbar_control=False,
attribution_control=True,
)
display(m)
button = solara.Button("Find Sample", on_click=update_image, height='80px')
solara.Select(label="Data Source", value=source, values=['Sentinel-2 L2A','Sentinel-2 L1C', 'Sentinel-1 RTC', 'COP-DEM'], on_value=update_source)
with solara.Column(align='center'):
output = solara.Image(image_data.value)
solara.Markdown('''
| | |
|--------------------:|:----:|
| Latitude, Longitude | {:.3f}, {:.3f} |
| MajorTOM Grid | {} |
| Timestamp| {} |
'''.format(center.value[0], center.value[1], gridcell.value, timestamp.value)) |