Skip to content

Commit 4a38703

Browse files
authored
Merge pull request #106 from metno/osisaf_seaice_fixes
Osisaf seaice fixes
2 parents 2ce65d4 + 575b556 commit 4a38703

File tree

1 file changed

+22
-1
lines changed

1 file changed

+22
-1
lines changed

mapgen/modules/helpers.py

+22-1
Original file line numberDiff line numberDiff line change
@@ -383,6 +383,7 @@ def _extract_extent(ds, variable):
383383
return ll_x,ur_x,ll_y,ur_y
384384
except KeyError:
385385
pass
386+
logger.warning(f"Fail to detect dimmension names from hardcoded values. Try to find dim names from variable")
386387
dim_names = _find_dim_names(ds, variable)
387388
try:
388389
ll_x = min(ds[variable].coords[dim_names[0]].data)
@@ -396,7 +397,6 @@ def _extract_extent(ds, variable):
396397
raise HTTPError(response_code='500 Internal Server Error', response=f"Could not recognize coords for {variable}. Valid for this service are {x_l} and {y_l} or {dim_names}(found in dataset).")
397398

398399
def _find_dim_names(ds, variable):
399-
logger.warning(f"Fail to detect from hardcode. Try to find dim names from variable")
400400
dims = ds[variable].dims
401401
dim_names = []
402402
for dim in reversed(dims[1:]):
@@ -557,6 +557,7 @@ def _generate_getcapabilities(layer, ds, variable, grid_mapping_cache, netcdf_fi
557557
logger.debug(f"wms_title {wms_title}")
558558
layer.metadata.set("wms_title", f"{wms_title}")
559559

560+
ll_x, ll_y, ur_x, ur_y = _adjust_extent_to_units(ds, variable, grid_mapping_cache, grid_mapping_name, ll_x, ll_y, ur_x, ur_y)
560561
layer.metadata.set("wms_extent", f"{ll_x} {ll_y} {ur_x} {ur_y}")
561562
dims_list = []
562563
if 'time' not in ds[variable].dims:
@@ -637,6 +638,23 @@ def _generate_getcapabilities(layer, ds, variable, grid_mapping_cache, netcdf_fi
637638
style1.maxcolor = mapscript.colorObj(red=255, green=255, blue=255)
638639
return True
639640

641+
def _adjust_extent_to_units(ds, variable, grid_mapping_cache, grid_mapping_name, ll_x, ll_y, ur_x, ur_y):
642+
dim_name = _find_dim_names(ds, variable)
643+
try:
644+
if "units=m" in grid_mapping_cache[grid_mapping_name]:
645+
if ds[variable].coords[dim_name[0]].attrs['units'] == 'km':
646+
logger.debug(f"adjust extent to units VARIBLE: {variable} {dim_name[0]} from km to m")
647+
ll_x *= 1000
648+
ur_x *= 1000
649+
if ds[variable].coords[dim_name[1]].attrs['units'] == 'km':
650+
logger.debug(f"adjust extent to units VARIBLE: {variable} {dim_name[1]} from km to m")
651+
ll_y *= 1000
652+
ur_y *= 1000
653+
except (KeyError, AttributeError, IndexError):
654+
logger.warning(f"Could not find units for variable {variable} dimension {dim_name}")
655+
pass
656+
return ll_x, ll_y, ur_x, ur_y
657+
640658
def _generate_getcapabilities_vector(layer, ds, variable, grid_mapping_cache, netcdf_file, direction_speed=False, last_ds=None, netcdf_files=[], product_config=None):
641659
"""Generate getcapabilities for vector fiels for the netcdf file."""
642660
logger.debug("ADDING vector")
@@ -675,6 +693,7 @@ def _generate_getcapabilities_vector(layer, ds, variable, grid_mapping_cache, ne
675693
layer.name = f'{vector_variable_name}_vector_from_direction_and_speed'
676694
layer.metadata.set("wms_title", f'{vector_variable_name} vector from direction and speed')
677695
layer.setConnectionType(mapscript.MS_CONTOUR, "")
696+
ll_x, ll_y, ur_x, ur_y = _adjust_extent_to_units(ds, variable, grid_mapping_cache, grid_mapping_name, ll_x, ll_y, ur_x, ur_y)
678697
layer.metadata.set("wms_extent", f"{ll_x} {ll_y} {ur_x} {ur_y}")
679698
dims_list = []
680699
if 'time' not in ds[variable].dims:
@@ -980,6 +999,7 @@ def _generate_layer(layer, ds, grid_mapping_cache, netcdf_file, qp, map_obj, pro
980999

9811000
set_scale_processing_key = False
9821001
layer.setProjection(grid_mapping_cache[grid_mapping_name])
1002+
9831003
if "units=km" in grid_mapping_cache[grid_mapping_name]:
9841004
layer.units = mapscript.MS_KILOMETERS
9851005
elif "units=m" in grid_mapping_cache[grid_mapping_name]:
@@ -1263,6 +1283,7 @@ def _generate_layer(layer, ds, grid_mapping_cache, netcdf_file, qp, map_obj, pro
12631283
optimal_bb_area = None
12641284
else:
12651285
ll_x, ur_x, ll_y, ur_y = _extract_extent(ds, actual_variable)
1286+
ll_x, ll_y, ur_x, ur_y = _adjust_extent_to_units(ds, actual_variable, grid_mapping_cache, grid_mapping_name, ll_x, ll_y, ur_x, ur_y)
12661287
logger.debug(f"ll ur {ll_x} {ll_y} {ur_x} {ur_y}")
12671288
layer.metadata.set("wms_extent", f"{ll_x} {ll_y} {ur_x} {ur_y}")
12681289

0 commit comments

Comments
 (0)