def process()

in granule_ingester/granule_ingester/processors/ElevationBounds.py [0:0]


    def process(self, tile, dataset):
        tile_type = tile.tile.WhichOneof("tile_type")
        tile_data = getattr(tile.tile, tile_type)

        tile_summary = tile.summary

        spec_list = tile_summary.section_spec.split(',')

        depth_index = None

        for spec in spec_list:
            v = spec.split(':')

            if v[0] == self.dimension:
                depth_index = int(v[1])
                break

        if depth_index is None:
            logger.warning(f"Cannot compute depth bounds for tile {str(tile.summary.tile_id)}. Unable to determine depth index from spec")

            return tile

        bounds = dataset[self.coordinate][depth_index]

        # if tile_type in ['GridTile', 'GridMultiVariableTile']:
        #     elev_shape = (len(from_shaped_array(tile_data.latitude)), len(from_shaped_array(tile_data.longitude)))
        # else:
        #     elev_shape = from_shaped_array(tile_data.latitude).shape

        elev_shape = from_shaped_array(tile_data.variable_data).shape

        tile_data.elevation.CopyFrom(
            to_shaped_array(
                np.full(
                    elev_shape,
                    tile_data.min_elevation
                )
            )
        )

        tile_data.min_elevation = bounds[0].item()
        tile_data.max_elevation = bounds[1].item()

        if self.flip_min_max:
            tile_data.min_elevation, tile_data.max_elevation = tile_data.max_elevation, tile_data.min_elevation

        return tile