
    Dvg                     \    d dl Z d dlmZ ddlmZmZmZmZmZm	Z	m
Z
 d Zd Zd Zd Zd	 ZdS )
    N)ValidationError   )BANDTYPE_FLAG_HASNODATABANDTYPE_PIXTYPE_MASKGDAL_TO_POSTGISGDAL_TO_STRUCTPOSTGIS_HEADER_STRUCTUREPOSTGIS_TO_GDALSTRUCT_SIZEc                 ,    t          j        d| z   g|R  S )z>
    Pack data into hex string with little endian format.
    <)structpack	structuredatas     l/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/django/contrib/gis/db/backends/postgis/pgraster.pyr   r      s      ;sY.....    c                 b    t          j        d| z   t                              |                    S )zC
    Unpack little endian hexlified binary string into a list.
    r   )r   unpackbytesfromhexr   s     r   r   r      s&     =y%--*=*=>>>r   c                 *    | d|         | |d         fS )z;
    Split a string into two parts at the input index.
    N )r   indexs     r   chunkr      s     <eff%%r   c           	         | dS t          | d          \  }} t          t          |          }g }g }| rt          | d          \  }} t          d|          d         }|t          z  }t          |         }t
          |         }dt          |         z  }t          | |          \  }} t          ||          d         }t          | ||d         z  |d         z            \  }	} dt                              |	          i}
|t          z  r||
d	<   |
                    |
           |
                    |           | t          t          |                    d
k    rt          d          t          |d                   |d         |d         |d         |d         |d         f|d         |d         f|d         |d         f|dS )z9
    Convert a PostGIS HEX String into a dictionary.
    Nz      Br   
      r   nodata_valuer   z"Band pixeltypes are not all equal.	                     )sridwidthheightdatatypeoriginscaleskewbands)r   r   r	   r   r
   r   r   r   r   r   appendlensetr   int)r   headerr2   
pixeltypespixeltype_with_flags	pixeltype	pack_type	pack_sizenodatabandband_results              r   from_pgrasterr@   %   s    | s##LFD,f55F EJ
 %%*4^^"d%c+?@@C(+@@	 $I.	"9-	I..	
 T9--	6**1- 4VBZ!7&*!DEE
du}}T223  "99 	1*0K' 	[!!! 	)$$$;  %D 3z??q  BCCC F1I*qM!9fQi()VAY'F1I&	 	 	r   c                 2   ddt          | j                  | j        j        | j        j        | j        j        | j        j        | j        j        | j        j        | j        j        | j	        | j
        f}t          t          |          }| j        D ]}dt          |                                         z   }t          |                                         }|j        
|t"          z  }t          |||j        pdf          }|||                    d          z   z  }|S )z:
    Convert a GDALRaster into PostGIS Raster format.
    r   r   r    NT)as_memoryview)r4   r2   r0   xyr/   r1   srsr+   r,   r-   r   r	   r   r.   r   r#   r   r   )rastrasterheaderresultr>   r   r:   
bandheaders          r   to_pgrasterrJ   d   s    	
	DJ

		
L  *L99F
 = = .99	 $DMMOO4	 (00I )i1B1Ga%HII
 	*tyyty<<<<Mr   )r   django.core.exceptionsr   constr   r   r   r   r	   r
   r   r   r   r   r@   rJ   r   r   r   <module>rM      s     2 2 2 2 2 2                 / / /? ? ?& & &< < <~4 4 4 4 4r   