Source code for SEAScope.types.extraction
# vim: ts=4:sts=4:sw=4
#
# @author: <sylvain.herledan@oceandatalab.com>
# @date: 2016-10-20
#
# This file is part of SEAScope, a 3D visualisation and analysis application
# for satellite, in-situ and numerical model data.
#
# Copyright (C) 2014-2023 OceanDataLab
#
# SEAScope is free software: you can redistribute it and/or modify it under
# the terms of the GNU Lesser General Public License as published by the Free
# Software Foundation, either version 3 of the License, or (at your option)
# any later version.
#
# SEAScope is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
# details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with SEAScope. If not, see <https://www.gnu.org/licenses/>.
"""
This module handles the deserialization of extraction objects
"""
import flatbuffers
import SEAScope.types.renderable_id
import SEAScope.types.gcp
import struct
import logging
import flatbuffers.compat
import flatbuffers.number_types
logger = logging.getLogger(__name__)
[docs]
def serialize(builder, obj):
"""
Not implemented
"""
pass
[docs]
def deserialize(o):
"""
Rebuild an extraction from a FlatBuffers buffer.
Parameters
----------
buf : bytearray
The buffer which contain the extraction object serialized with
FlatBuffers
Returns
-------
dict
The deserialized extraction object as a dictionary.
"""
result = {}
result['id'] = SEAScope.types.renderable_id.deserialize(o.Id())
result['xArity'] = o.XArity()
result['yArity'] = o.YArity()
result['channels'] = o.Channels()
result['uri'] = o.Uri()
result['start'] = o.Start()
result['stop'] = o.Stop()
fields_count = o.FieldsLength()
fields = []
for i in range(0, fields_count):
fields.append(o.Fields(i))
result['fields'] = fields
shape_count = o.ShapeLength()
shape = []
for i in range(0, shape_count):
gcp = SEAScope.types.gcp.deserialize(o.Shape(i))
shape.append(gcp)
result['shape'] = shape
gcps_count = o.GcpsLength()
gcps = []
for i in range(0, gcps_count):
gcp = SEAScope.types.gcp.deserialize(o.Gcps(i))
gcps.append(gcp)
result['gcps'] = gcps
fill_values_count = o.FillValuesLength()
fill_values = []
for i in range(0, fill_values_count):
fill_values.append(o.FillValues(i))
result['fill_values'] = fill_values
values_count = o.BufferLength()
fmt = '<' + 'f' * values_count
vs = struct.Struct(fmt)
b_offset = o._tab.Offset(12)
buffer_offset = flatbuffers.number_types.UOffsetTFlags.py_type(b_offset)
vector_offset = o._tab.Vector(buffer_offset)
values = vs.unpack_from(flatbuffers.compat.memoryview_type(o._tab.Bytes),
vector_offset)
result['buffer'] = values
return result