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)