mikonvergence commited on
Commit
8d89494
·
verified ·
1 Parent(s): 13359ab

Update helpers/functional.py

Browse files
Files changed (1) hide show
  1. helpers/functional.py +38 -2
helpers/functional.py CHANGED
@@ -46,6 +46,22 @@ df_dict = {
46
  'COP-DEM' : dem_df
47
  }
48
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
  def pretty_date(input):
50
  template = '%Y%m%dT%H%M%S' if 'T' in input else '%Y%m%d%H%M%S'
51
  return datetime.datetime.strptime(input, template).strftime('%H:%M:%S - %d %b %Y')
@@ -91,7 +107,7 @@ def cell2row(grid_string, meta_df, return_row = False):
91
  return R.parquet_url.item(), R.parquet_row.item()
92
  else:
93
  return None
94
-
95
  def map_to_image(map, return_centre=False, return_gridcell=False, return_timestamp=False, source='Sentinel-2 L2A'):
96
 
97
  try:
@@ -104,9 +120,28 @@ def map_to_image(map, return_centre=False, return_gridcell=False, return_timesta
104
  # 2. translate coordinate to major-tom tile
105
  rows, cols = grid.latlon2rowcol([center[0]], [center[1]])
106
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
  # 3. translate major-tom cell to row in parquet
108
  df = df_dict[source]
109
- row = cell2row("{}_{}".format(rows[0],cols[0]), df, return_row = True)
110
 
111
  if row is not None:
112
  parquet_url, parquet_row, meta_row = row
@@ -115,6 +150,7 @@ def map_to_image(map, return_centre=False, return_gridcell=False, return_timesta
115
  img = row2image(parquet_url, parquet_row)
116
  except:
117
  return None
 
118
  # 4. acquire image # X. update map
119
  lat, lon = meta_row.centre_lat.item(), meta_row.centre_lon.item()
120
 
 
46
  'COP-DEM' : dem_df
47
  }
48
 
49
+ '''
50
+ --- SigLIP Search ---
51
+ '''
52
+ from TextSearch import *
53
+
54
+ BASE_DIR='./'
55
+ INDEX_OUTPUT = f'{BASE_DIR}/siglip_ivfpq.index'
56
+ METADATA_OUTPUT = f'{BASE_DIR}/siglip_ivfpq_metadata.parquet'
57
+
58
+ search = SearchSigLIP(index_path=INDEX_OUTPUT,
59
+ metadata_path=METADATA_OUTPUT)
60
+
61
+ '''
62
+ --- Helper Functions ---
63
+ '''
64
+
65
  def pretty_date(input):
66
  template = '%Y%m%dT%H%M%S' if 'T' in input else '%Y%m%d%H%M%S'
67
  return datetime.datetime.strptime(input, template).strftime('%H:%M:%S - %d %b %Y')
 
107
  return R.parquet_url.item(), R.parquet_row.item()
108
  else:
109
  return None
110
+
111
  def map_to_image(map, return_centre=False, return_gridcell=False, return_timestamp=False, source='Sentinel-2 L2A'):
112
 
113
  try:
 
120
  # 2. translate coordinate to major-tom tile
121
  rows, cols = grid.latlon2rowcol([center[0]], [center[1]])
122
 
123
+ return cell_to_image(cell="{}_{}".format(rows[0],cols[0]),
124
+ return_centre=return_centre,
125
+ return_gridcell=return_gridcell,
126
+ return_timestamp=return_timestamp,
127
+ source=source)
128
+
129
+ def text_to_image(text, return_centre=False, return_gridcell=False, return_timestamp=False, source='Sentinel-2 L2A'):
130
+
131
+ cell = search.faiss(text)[0]["grid_cell"]
132
+
133
+ return cell_to_image(cell=cell,
134
+ return_centre=return_centre,
135
+ return_gridcell=return_gridcell,
136
+ return_timestamp=return_timestamp,
137
+ source=source)
138
+
139
+
140
+ def cell_to_image(cell, return_centre=False, return_gridcell=False, return_timestamp=False, source='Sentinel-2 L2A'):
141
+
142
  # 3. translate major-tom cell to row in parquet
143
  df = df_dict[source]
144
+ row = cell2row(cell, df, return_row = True)
145
 
146
  if row is not None:
147
  parquet_url, parquet_row, meta_row = row
 
150
  img = row2image(parquet_url, parquet_row)
151
  except:
152
  return None
153
+
154
  # 4. acquire image # X. update map
155
  lat, lon = meta_row.centre_lat.item(), meta_row.centre_lon.item()
156