-
Notifications
You must be signed in to change notification settings - Fork 22
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Prod OWS DEA Intertidal layer (#1253)
* Draft prod OWS style * Pass only required styles * Update Terria prod config
- Loading branch information
Showing
7 changed files
with
496 additions
and
115 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
49 changes: 49 additions & 0 deletions
49
prod/services/wms/ows_refactored/sea_ocean_coast/intertidal_c3/ows_intertidal_cfg.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
from ows_refactored.ows_reslim_cfg import reslim_standard | ||
from ows_refactored.sea_ocean_coast.intertidal_c3.style_intertidal_cfg import \ | ||
styles_intertidal_list | ||
|
||
bands_intertidal = { | ||
"elevation": [], | ||
"elevation_uncertainty": [], | ||
"exposure": [], | ||
"ta_hat": [], | ||
"ta_hot": [], | ||
"ta_lat": [], | ||
"ta_lot": [], | ||
"ta_offset_high": [], | ||
"ta_offset_low": [], | ||
"ta_spread": [], | ||
"qa_ndwi_corr": [], | ||
"qa_ndwi_freq": [], | ||
} | ||
|
||
abstract_intertidal = """Geoscience Australia Sentinel-2 Landsat Intertidal Calendar Year Collection 3 | ||
The DEA Intertidal product suite maps the changing extent, elevation and topography of Australia's exposed intertidal zone, the complex zone that defines the interface between land and sea. | ||
Incorporating both Sentinel-2 and Landsat data, the product suite provides an annual 10 m resolution elevation product for the intertidal zone, enabling users to better monitor and understand some of the most dynamic regions of Australia’s coastlines. Utilising an improved tidal modelling capability, the product suite includes a continental scale mapping of intertidal exposure over time, enabling scientists and managers to integrate the data into ecological and migratory species applications and modelling. | ||
https://knowledge.dea.ga.gov.au/data/product/dea-intertidal/ | ||
For service status information, see https://status.dea.ga.gov.au""" | ||
|
||
dea_intertidal_layer = { | ||
"title": "DEA Intertidal (Sentinel-2, Landsat)", | ||
"name": "ga_s2ls_intertidal_cyear_3", | ||
"abstract": abstract_intertidal, | ||
"product_name": "ga_s2ls_intertidal_cyear_3", | ||
"bands": bands_intertidal, | ||
"time_resolution": "summary", | ||
"resource_limits": reslim_standard, | ||
"native_crs": "EPSG:3577", | ||
"native_resolution": [10, -10], | ||
"image_processing": { | ||
"extent_mask_func": "datacube_ows.ogc_utils.mask_by_val", | ||
"always_fetch_bands": [], | ||
"manual_merge": False, | ||
}, | ||
"styling": { | ||
"default_style": "intertidal_elevation_adaptive", | ||
"styles": styles_intertidal_list, | ||
}, | ||
} |
257 changes: 257 additions & 0 deletions
257
prod/services/wms/ows_refactored/sea_ocean_coast/intertidal_c3/style_intertidal_cfg.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,257 @@ | ||
legend_intertidal_percentage_by_20 = { | ||
"begin": "0.0", | ||
"end": "100", | ||
"decimal_places": 1, | ||
"ticks_every": "20", | ||
"units": "%", | ||
"tick_labels": { | ||
"0": {"label": "0"}, | ||
"20": {"label": "20"}, | ||
"40": {"label": "40"}, | ||
"60": {"label": "60"}, | ||
"80": {"label": "80"}, | ||
"100": {"label": "100"}, | ||
}, | ||
} | ||
|
||
style_intertidal_elevation_meso = { | ||
"name": "intertidal_elevation_meso", | ||
"title": "Elevation (mesotidal)", | ||
"abstract": "Intertidal elevation in metres above Mean Sea Level", | ||
"index_function": { | ||
"function": "datacube_ows.band_utils.single_band", | ||
"mapped_bands": True, | ||
"kwargs": { | ||
"band": "elevation", | ||
}, | ||
}, | ||
"include_in_feature_info": False, | ||
"needed_bands": ["elevation"], | ||
"mpl_ramp": "viridis", | ||
"range": [-2.0, 1.0], | ||
"legend": { | ||
"begin": "-2.0", | ||
"end": "1.0", | ||
"ticks": ["-2.0", "-1.0", "0.0", "1.0"], | ||
"units": "metres above Mean Sea Level", | ||
"tick_labels": { | ||
"1.0": {"prefix": ">"}, | ||
"-2.0": {"prefix": "<"}, | ||
}, | ||
}, | ||
} | ||
|
||
style_intertidal_elevation_micro = { | ||
"name": "intertidal_elevation_micro", | ||
"title": "Elevation (microtidal)", | ||
"abstract": "Intertidal elevation in metres above Mean Sea Level", | ||
"index_function": { | ||
"function": "datacube_ows.band_utils.single_band", | ||
"mapped_bands": True, | ||
"kwargs": { | ||
"band": "elevation", | ||
}, | ||
}, | ||
"include_in_feature_info": False, | ||
"needed_bands": ["elevation"], | ||
"mpl_ramp": "viridis", | ||
"range": [-1.0, 0.5], | ||
"legend": { | ||
"begin": "-1.0", | ||
"end": "0.5", | ||
"ticks": ["-1.0", "-0.5", "0.0", "0.5"], | ||
"units": "metres above Mean Sea Level", | ||
"tick_labels": { | ||
"0.5": {"prefix": ">"}, | ||
"-1.0": {"prefix": "<"}, | ||
}, | ||
}, | ||
} | ||
|
||
style_intertidal_elevation_macro = { | ||
"name": "intertidal_elevation_macro", | ||
"title": "Elevation (macrotidal)", | ||
"abstract": "Intertidal elevation in metres above Mean Sea Level", | ||
"index_function": { | ||
"function": "datacube_ows.band_utils.single_band", | ||
"mapped_bands": True, | ||
"kwargs": { | ||
"band": "elevation", | ||
}, | ||
}, | ||
"include_in_feature_info": False, | ||
"needed_bands": ["elevation"], | ||
"mpl_ramp": "viridis", | ||
"range": [-4.0, 2.0], | ||
"legend": { | ||
"begin": "-4.0", | ||
"end": "2.0", | ||
"ticks": ["-4.0", "-2.0", "0.0", "2.0"], | ||
"units": "metres above Mean Sea Level", | ||
"tick_labels": { | ||
"2.0": {"prefix": ">"}, | ||
"-4.0": {"prefix": "<"}, | ||
}, | ||
}, | ||
} | ||
|
||
style_intertidal_elevation_uncertainty = { | ||
"name": "intertidal_elevation_uncertainty", | ||
"title": "Elevation uncertainty", | ||
"abstract": "Intertidal elevation uncertainty in metres", | ||
"index_function": { | ||
"function": "datacube_ows.band_utils.single_band", | ||
"mapped_bands": True, | ||
"kwargs": { | ||
"band": "elevation_uncertainty", | ||
}, | ||
}, | ||
"include_in_feature_info": False, | ||
"needed_bands": ["elevation_uncertainty"], | ||
"mpl_ramp": "inferno", | ||
"range": [0.0, 1.0], | ||
"legend": { | ||
"begin": "0.0", | ||
"end": "1.0", | ||
"ticks": ["0.0", "0.5", "1.0"], | ||
"units": "metres", | ||
"tick_labels": { | ||
"1.0": {"prefix": ">"}, | ||
}, | ||
}, | ||
} | ||
|
||
style_intertidal_exposure = { | ||
"name": "intertidal_exposure", | ||
"title": "Exposure", | ||
"abstract": "Intertidal exposure in percent of time exposed to air", | ||
"index_function": { | ||
"function": "datacube_ows.band_utils.single_band", | ||
"mapped_bands": True, | ||
"kwargs": { | ||
"band": "exposure", | ||
}, | ||
}, | ||
"include_in_feature_info": False, | ||
"needed_bands": ["exposure"], | ||
"color_ramp": [ | ||
{"value": 0, "color": '#2f0f3d'}, | ||
{'value': 10, 'color': '#4f1552'}, | ||
{'value': 20, 'color': '#72195f'}, | ||
{'value': 30, 'color': '#931f63'}, | ||
{'value': 40, 'color': '#b32e5e'}, | ||
{'value': 50, 'color': '#ce4356'}, | ||
{'value': 60, 'color': '#e26152'}, | ||
{'value': 70, 'color': '#ee845d'}, | ||
{'value': 80, 'color': '#f5a672'}, | ||
{'value': 90, 'color': '#faca8f'}, | ||
{'value': 100, 'color': '#fdedb0'} | ||
], | ||
"legend": legend_intertidal_percentage_by_20, | ||
} | ||
|
||
style_intertidal_elevation_adaptive = { | ||
"name": "intertidal_elevation_adaptive", | ||
"title": "Elevation", | ||
"abstract": "Intertidal elevation in metres above Mean Sea Level", | ||
"index_function": { | ||
"function": "ows_refactored.sea_ocean_coast.intertidal_c3.utils_intertidal.elevation_adaptive", | ||
"mapped_bands": True, | ||
"kwargs": { | ||
"band": "elevation", | ||
"lot": "ta_lot", | ||
"hot": "ta_hot", | ||
}, | ||
}, | ||
"include_in_feature_info": False, | ||
"needed_bands": ["elevation", "ta_lot", "ta_hot"], | ||
"mpl_ramp": "viridis", | ||
"range": [0.1, 0.7], | ||
"legend": { | ||
"begin": "0.1", | ||
"end": "0.7", | ||
"ticks": ["0.1", "0.7"], | ||
"units": "", | ||
"tick_labels": { | ||
"0.1": {"label": "Low"}, | ||
"0.7": {"label": "High"}, | ||
}, | ||
}, | ||
} | ||
|
||
style_intertidal_elevation_uncertainty_adaptive = { | ||
"name": "intertidal_elevation_uncertainty_adaptive", | ||
"title": "Elevation uncertainty", | ||
"abstract": "Intertidal elevation uncertainty", | ||
"index_function": { | ||
"function": "ows_refactored.sea_ocean_coast.intertidal_c3.utils_intertidal.uncertainty_adaptive", | ||
"mapped_bands": True, | ||
"kwargs": { | ||
"band": "elevation_uncertainty", | ||
"lot": "ta_lot", | ||
"hot": "ta_hot", | ||
}, | ||
}, | ||
"include_in_feature_info": False, | ||
"needed_bands": ["elevation_uncertainty", "ta_lot", "ta_hot"], | ||
"mpl_ramp": "inferno", | ||
"range": [0.0, 0.3], | ||
"legend": { | ||
"begin": "0.0", | ||
"end": "0.3", | ||
"ticks": ["0.0", "0.3"], | ||
"units": "", | ||
"tick_labels": { | ||
"0.0": {"label": "Low"}, | ||
"0.3": {"label": "High"}, | ||
}, | ||
}, | ||
} | ||
|
||
style_intertidal_corr = { | ||
"name": "intertidal_corr", | ||
"title": "NDWI tide correlation", | ||
"abstract": "Correlation between NDWI and tide height", | ||
"index_function": { | ||
"function": "datacube_ows.band_utils.single_band", | ||
"mapped_bands": True, | ||
"kwargs": { | ||
"band": "qa_ndwi_corr", | ||
}, | ||
}, | ||
"include_in_feature_info": False, | ||
"needed_bands": ["qa_ndwi_corr"], | ||
"mpl_ramp": "RdBu", | ||
"range": [-0.5, 0.5], | ||
"legend": { | ||
"begin": "-0.5", | ||
"end": "0.5", | ||
"ticks": ["-0.5", "0.0", "0.5"], | ||
"units": "correlation", | ||
}, | ||
} | ||
|
||
style_intertidal_freq = { | ||
"name": "intertidal_freq", | ||
"title": "NDWI frequency", | ||
"abstract": "NDWI inundation frequency", | ||
"index_function": { | ||
"function": "datacube_ows.band_utils.single_band", | ||
"mapped_bands": True, | ||
"kwargs": { | ||
"band": "qa_ndwi_freq", | ||
}, | ||
}, | ||
"include_in_feature_info": False, | ||
"needed_bands": ["qa_ndwi_freq"], | ||
"mpl_ramp": "RdBu", | ||
"range": [0, 100], | ||
"legend": legend_intertidal_percentage_by_20, | ||
} | ||
|
||
# Create combined list that is imported and passed to the layer | ||
styles_intertidal_list = [ | ||
style_intertidal_elevation_adaptive, | ||
style_intertidal_elevation_uncertainty_adaptive, | ||
style_intertidal_exposure, | ||
] |
43 changes: 43 additions & 0 deletions
43
prod/services/wms/ows_refactored/sea_ocean_coast/intertidal_c3/utils_intertidal.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
from datacube_ows.band_utils import scalable | ||
|
||
|
||
@scalable | ||
def elevation_adaptive(data, band, lot, hot, band_mapper=None): | ||
""" | ||
Experimental adaptive elevation function, using pixel-level | ||
tide metadata to calculate relative elevation for any | ||
given location. | ||
This implementation should be free of any tile-based | ||
discontinuities in the resulting visualisation. | ||
# TODO: Add hillshading | ||
""" | ||
|
||
# Calculate observed tide range (max - min) | ||
otr = data[hot] - data[lot] | ||
|
||
# Calculate distance between elevation and minumum | ||
# observed tide height | ||
distance_to_min = data[band] - data[lot] | ||
|
||
# Calculate proportion along observed tide range | ||
proportion_array = distance_to_min / otr | ||
|
||
return proportion_array | ||
|
||
|
||
@scalable | ||
def uncertainty_adaptive(data, band, lot, hot, band_mapper=None): | ||
""" | ||
Experimental adaptive elevation uncertainty function, using | ||
pixel-level tide metadata to calculate relative uncertainty. | ||
""" | ||
|
||
# Calculate observed tide range (max - min) | ||
otr = data[hot] - data[lot] | ||
|
||
# Calculate proportion | ||
proportion_array = data[band] / otr | ||
|
||
return proportion_array |
Oops, something went wrong.