o
    Nrf†  ã                   @   s$   d dl Z d dlZd dlZdd„ ZdS )é    Nc           
      C   sj  i }t | ƒr/t ¡  t dd¡ tt | ¡ƒ}tt | ¡ƒ}W d  ƒ n1 s)w   Y  ntj}tj}t 	|¡s<|nd|d< t 	|¡sG|nd|d< t 
d¡j}t 
d¡j}t t 	| ¡¡dk}t | jƒ}|d	kro| jd
 nd
}| }	|dkr{|  ¡ }	|s¡||kr¡||k r¡||kr¡||k r¡| t |	 d¡¡ d¡|ddœ¡ |S | t |	 d¡¡ d¡|ddœ¡ |S )aÀ  
    Format raw vector data into a more structured tile
    containing either float16 or float32 data along with a
    dtype to differentiate between the two.

    Parameters
    ----------
    tile_data_array: np.array
        An array of values
    Returns
    -------
    tile_data: {'dense': str, 'dtype': str}
        The tile data reformatted to use float16 or float32 as the
        datatype. The dtype indicates which format is chosen.
    Úignorez All-NaN (slice|axis) encounteredNÚNaNZ	min_valueZ	max_valueZfloat16r   é   é   zutf-8)ZdenseÚsizeZdtypeZfloat32)ÚlenÚwarningsÚcatch_warningsÚfilterwarningsÚfloatÚnpZnanmaxZnanminÚnanÚisnanZfinfoÚminÚmaxÚsumÚshapeÚflattenÚupdateÚbase64Ú	b64encodeZastypeÚdecode)
ÚdataZ	tile_dataZ	max_denseZ	min_denseZmin_f16Zmax_f16Zhas_nanZn_dimr   Úfdata© r   ú]/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/clodius/tiles/format.pyÚformat_dense_tile   sP   
ü€
ÿýÿøýÿr   )r   r   Únumpyr   r   r   r   r   r   Ú<module>   s    