thadk commited on
Commit
c885eeb
·
1 Parent(s): 3d01e3d

add datepicker

Browse files
Files changed (1) hide show
  1. app.py +28 -4
app.py CHANGED
@@ -5,6 +5,12 @@ import leafmap.foliumap as leafmap
5
 
6
  st.set_page_config(layout="wide")
7
 
 
 
 
 
 
 
8
  url = 'https://open.gishub.org/maxar-open-data'
9
  repo = 'https://github.com/opengeos/maxar-open-data/blob/master/datasets'
10
 
@@ -22,15 +28,29 @@ def get_datasets():
22
 
23
 
24
  @st.cache_data
25
- def get_catalogs(name):
26
  dataset = f'{url}/datasets/{name}.tsv'
27
 
28
  dataset_df = pd.read_csv(dataset, sep='\t')
29
- catalog_ids = dataset_df['catalog_id'].unique().tolist()
 
 
 
 
30
  return catalog_ids
31
 
 
 
 
 
 
 
 
 
 
32
 
33
  st.title('Visualizing Maxar Open Data')
 
34
 
35
  col1, col2 = st.columns([1.2, 3.8])
36
 
@@ -38,7 +58,9 @@ with col1:
38
  default = 'Morocco-Earthquake-Sept-2023'
39
  datasets = get_datasets()['dataset'].tolist()
40
  dataset = st.selectbox('Select a dataset', datasets, index=datasets.index(default))
41
- catalog = st.selectbox('Select a COG mosaic', get_catalogs(dataset), index=get_catalogs(dataset).index('10300500E4F91900'))
 
 
42
  geojson = f'{url}/datasets/{dataset}.geojson'
43
  mosaic = f'{url}/datasets/{dataset}/{catalog}.json'
44
  tsv = f'{repo}/{dataset}/{catalog}.tsv'
@@ -61,7 +83,9 @@ m
61
  'weight': 1,
62
  'fillOpacity': 0
63
  }
64
- m.add_geojson(geojson, layer_name=dataset, style=style, info_mode='on_click')
 
 
65
  m.add_stac_layer(mosaic, name=catalog)
66
 
67
  st.info('About')
 
5
 
6
  st.set_page_config(layout="wide")
7
 
8
+ def random_color(feature):
9
+ return {
10
+ 'color': 'black',
11
+ 'fillColor': random.choice(['red', 'yellow', 'green', 'orange']),
12
+ }
13
+
14
  url = 'https://open.gishub.org/maxar-open-data'
15
  repo = 'https://github.com/opengeos/maxar-open-data/blob/master/datasets'
16
 
 
28
 
29
 
30
  @st.cache_data
31
+ def get_catalogs(name, date_selected):
32
  dataset = f'{url}/datasets/{name}.tsv'
33
 
34
  dataset_df = pd.read_csv(dataset, sep='\t')
35
+
36
+ dataset_df['as_datetime'] = dataset_df['datetime'].apply(pd.to_datetime)
37
+ dataset_df['as_date'] = dataset_df['datetime'].apply(pd.to_datetime).apply(pd.Timestamp.date)
38
+ filtered_to_date = dataset_df.loc[(dataset_df['as_date'] == date_selected), 'catalog_id' ]
39
+ catalog_ids = filtered_to_date.unique().tolist()
40
  return catalog_ids
41
 
42
+ @st.cache_data
43
+ def get_catalogs_dates(name):
44
+ dataset = f'{url}/datasets/{name}.tsv'
45
+
46
+ dataset_df = pd.read_csv(dataset, sep='\t')
47
+ catalog_dates_as_datetime = pd.to_datetime(dataset_df['datetime']).sort_values(ascending=False)
48
+ catalog_dates_ids = catalog_dates_as_datetime.map(pd.Timestamp.date).unique().tolist()
49
+ return catalog_dates_ids
50
+
51
 
52
  st.title('Visualizing Maxar Open Data')
53
+ # st.markdown(get_catalogs('Morocco-Earthquake-Sept-2023', '2023-09-11'))
54
 
55
  col1, col2 = st.columns([1.2, 3.8])
56
 
 
58
  default = 'Morocco-Earthquake-Sept-2023'
59
  datasets = get_datasets()['dataset'].tolist()
60
  dataset = st.selectbox('Select a dataset', datasets, index=datasets.index(default))
61
+ datepicker = st.selectbox('Select Date', get_catalogs_dates(dataset))
62
+ # st.markdown(get_catalogs(dataset, datepicker))
63
+ catalog = st.selectbox('Select a COG mosaic', get_catalogs(dataset, datepicker), index=get_catalogs(dataset, datepicker).index(get_catalogs(dataset, datepicker)[0]))
64
  geojson = f'{url}/datasets/{dataset}.geojson'
65
  mosaic = f'{url}/datasets/{dataset}/{catalog}.json'
66
  tsv = f'{repo}/{dataset}/{catalog}.tsv'
 
83
  'weight': 1,
84
  'fillOpacity': 0
85
  }
86
+
87
+ callback = lambda feat: print(feat["properties"]["datetime"])
88
+ m.add_geojson(geojson, layer_name=dataset, style=style, info_mode='on_click', style_callback=random_color)
89
  m.add_stac_layer(mosaic, name=catalog)
90
 
91
  st.info('About')