in data-access/nexustiles/backends/nexusproto/backend.py [0:0]
def _metadata_store_docs_to_tiles(self, *store_docs):
tiles = []
for store_doc in store_docs:
tile = Tile()
try:
tile.tile_id = store_doc['id']
except KeyError:
pass
try:
min_lat = store_doc['tile_min_lat']
min_lon = store_doc['tile_min_lon']
max_lat = store_doc['tile_max_lat']
max_lon = store_doc['tile_max_lon']
if isinstance(min_lat, list):
min_lat = min_lat[0]
if isinstance(min_lon, list):
min_lon = min_lon[0]
if isinstance(max_lat, list):
max_lat = max_lat[0]
if isinstance(max_lon, list):
max_lon = max_lon[0]
tile.bbox = BBox(min_lat, max_lat, min_lon, max_lon)
except KeyError:
pass
try:
tile.dataset = store_doc['dataset_s']
except KeyError:
pass
try:
tile.dataset_id = store_doc['dataset_id_s']
except KeyError:
pass
try:
tile.granule = store_doc['granule_s']
except KeyError:
pass
try:
tile.min_time = datetime.strptime(store_doc['tile_min_time_dt'], "%Y-%m-%dT%H:%M:%SZ").replace(
tzinfo=UTC)
except KeyError:
pass
try:
tile.max_time = datetime.strptime(store_doc['tile_max_time_dt'], "%Y-%m-%dT%H:%M:%SZ").replace(
tzinfo=UTC)
except KeyError:
pass
try:
tile.section_spec = store_doc['sectionSpec_s']
except KeyError:
pass
try:
tile.tile_stats = TileStats(
store_doc['tile_min_val_d'], store_doc['tile_max_val_d'],
store_doc['tile_avg_val_d'], store_doc['tile_count_i']
)
except KeyError:
pass
try:
# Ensure backwards compatibility by working with old
# tile_var_name_s and tile_standard_name_s fields to
# will be overwritten if tile_var_name_ss is present
# as well.
if '[' in store_doc['tile_var_name_s']:
var_names = json.loads(store_doc['tile_var_name_s'])
else:
var_names = [store_doc['tile_var_name_s']]
standard_name = store_doc.get(
'tile_standard_name_s',
json.dumps([None] * len(var_names))
)
if '[' in standard_name:
standard_names = json.loads(standard_name)
else:
standard_names = [standard_name]
tile.variables = []
for var_name, standard_name in zip(var_names, standard_names):
tile.variables.append(TileVariable(
variable_name=var_name,
standard_name=standard_name
))
except KeyError:
pass
if 'tile_var_name_ss' in store_doc:
tile.variables = []
for var_name in store_doc['tile_var_name_ss']:
standard_name_key = f'{var_name}.tile_standard_name_s'
standard_name = store_doc.get(standard_name_key)
tile.variables.append(TileVariable(
variable_name=var_name,
standard_name=standard_name
))
tiles.append(tile)
return tiles