示例#1
0
def write_data_to_HDF(array,
                      attribute={},
                      name="",
                      folder="ResAmp/",
                      bands='l3m_data'):
    """ Crea un nuevo HDF en la carpeta ResAmp, con el nombre pasado por parametro
    o un nombre generado con sus attributos en caso contrario y con el array
     pasado por parametro como dataset y con los atributos pasados por parametro"""
    if "" == name:
        name = name_generator(attribute, name)
        attribute["Product Name"] = name
        file = SD(folder + name + "", SDC.WRITE | SDC.CREATE)
    else:
        if os.path.isfile(folder + name):
            file = SD(folder + name + "", SDC.WRITE)
        else:
            file = SD(folder + name + "", SDC.WRITE | SDC.CREATE)
    file.create(bands, SDC.FLOAT64, array.shape)
    data = file.select(bands)
    for x in range(len(array)):
        data[x] = array[x]
    for x in attribute:
        at = attribute[x]
        try:
            if (at.dtype == np.dtype('int16') or at.dtype == np.dtype('int32')
                    or at.dtype == np.dtype('uint8')
                    or at.dtype == np.dtype('uint16') or type(at) == int):
                new_attr = file.attr(x)
                new_attr.set(SDC.INT32, int(at))
            elif (at.dtype == np.dtype('float32')
                  or at.dtype == np.dtype('float64') or type(at) == float):
                new_attr = file.attr(x)
                new_attr.set(SDC.FLOAT64, at)
            else:
                at = np.str(at)
                file.__setattr__(x, at)
        except AttributeError:
            #at = np.str(at)
            file.__setattr__(x, at)
        except TypeError:
            print(type(at))
            print(x)
            print(at)
    print("Guardando: ", name)