This is an automated email from the ASF dual-hosted git repository. rkk pushed a commit to branch SDAP-508 in repository https://gitbox.apache.org/repos/asf/incubator-sdap-nexus.git
commit f4ad6e44f7dd22b14907e83e25198dae391b8a5b Author: rileykk <[email protected]> AuthorDate: Fri Feb 2 13:06:28 2024 -0800 SDAP-508 report sat spatial extents --- CHANGELOG.md | 1 + .../webservice/algorithms/doms/DatasetListQuery.py | 2 +- data-access/nexustiles/dao/SolrProxy.py | 28 ++++++++++++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 94e2fa6..8db48ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - SDAP-506: - Added STAC Catalog endpoint for matchup outputs +- SDAP-508: Added spatial extents to the satellite dataset entries in `/list` and `/cdmslist` ### Changed - SDAP-493: - Updated /job endpoint to use `executionId` terminology for consistency with existing `/cdmsresults` endpoint diff --git a/analysis/webservice/algorithms/doms/DatasetListQuery.py b/analysis/webservice/algorithms/doms/DatasetListQuery.py index 7c40d18..5427eb2 100644 --- a/analysis/webservice/algorithms/doms/DatasetListQuery.py +++ b/analysis/webservice/algorithms/doms/DatasetListQuery.py @@ -91,7 +91,7 @@ class DomsDatasetListQueryHandler(BaseDomsHandler.BaseDomsQueryCalcHandler): @cached(ttl=(60 * 60 * 1000)) # 1 hour cached def calc(self, computeOptions, **args): - satellitesList = self._get_tile_service().get_dataseries_list(simple=True) + satellitesList = self._get_tile_service().get_dataseries_list(simple=False) insituList = [] diff --git a/data-access/nexustiles/dao/SolrProxy.py b/data-access/nexustiles/dao/SolrProxy.py index ca1033a..a072c6b 100644 --- a/data-access/nexustiles/dao/SolrProxy.py +++ b/data-access/nexustiles/dao/SolrProxy.py @@ -162,6 +162,27 @@ class SolrProxy(object): datasets = self.get_data_series_list_simple() + def get_spatial_bound(dataset, lat_lon, min_max): + search = f'dataset_s:{dataset}' + + field = f'tile_{min_max}_{lat_lon}' + + order = 'ASC' if min_max == 'min' else 'DESC' + + params = dict( + rows=1, + sort=[f'{field} {order}'] + ) + + results = self.do_query_raw(*(search, None, None, False, None), **params) + + v = results.docs[0][field] + + if isinstance(v, list): + v = v[0] + + return v + for dataset in datasets: min_date = self.find_min_date_from_tiles([], ds=dataset['title']) max_date = self.find_max_date_from_tiles([], ds=dataset['title']) @@ -170,6 +191,13 @@ class SolrProxy(object): dataset['iso_start'] = min_date.strftime(ISO_8601) dataset['iso_end'] = max_date.strftime(ISO_8601) + min_lat = get_spatial_bound(dataset['title'], 'lat', 'min') + max_lat = get_spatial_bound(dataset['title'], 'lat', 'max') + min_lon = get_spatial_bound(dataset['title'], 'lon', 'min') + max_lon = get_spatial_bound(dataset['title'], 'lon', 'max') + + dataset['spatial_extent'] = '{:0.2f},{:0.2f},{:0.2f},{:0.2f}'.format(min_lon, min_lat, max_lon, max_lat) + return datasets def get_data_series_list_simple(self):
