
    h                     Z    S SK r S SKJr  SSKJrJrJrJrJrJ	r	J
r
  S rS rS rS rS	 rg)
    N)ValidationError   )BANDTYPE_FLAG_HASNODATABANDTYPE_PIXTYPE_MASKGDAL_TO_POSTGISGDAL_TO_STRUCTPOSTGIS_HEADER_STRUCTUREPOSTGIS_TO_GDALSTRUCT_SIZEc                 6    [         R                  " SU -   /UQ76 $ )z6
Pack data into hex string with little endian format.
<)structpack	structuredatas     a/var/www/html/env/lib/python3.13/site-packages/django/contrib/gis/db/backends/postgis/pgraster.pyr   r      s     ;;sY...    c                 \    [         R                  " SU -   [        R                  U5      5      $ )z;
Unpack little endian hexlified binary string into a list.
r   )r   unpackbytesfromhexr   s     r   r   r      s"     ==y%--*=>>r   c                     U SU XS 4$ )z3
Split a string into two parts at the input index.
N )r   indexs     r   chunkr      s     <f%%r   c           	         U c  g[        U S5      u  p[        [        U5      n/ n/ nU (       a  [        U S5      u  p@[        SU5      S   nU[        -  n[        U   n[
        U   nS[        U   -  n[        X5      u  p[        Xh5      S   n[        XUS   -  US   -  5      u  pS[        R                  U	5      0n
U[        -  (       a  XS	'   UR                  U
5        UR                  U5        U (       a  M  [        [        U5      5      S
:w  a  [        S5      e[        US   5      US   US   US   US   US   4US   US   4US   US   4US.$ )z1
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#LF,f5F EJ
%*4^"%c+?@C(+@@	 $I.	"9-	I..	
 T-	*1- 4VBZ!7&*!DE
u}}T23  "99*0' 	[! 	)$; $D 3z?q BCC F1I*qM!9fQi()VAY'F1I&	 	r   c                    SS[        U R                  5      U R                  R                  U R                  R                  U R
                  R                  U R
                  R                  U R                  R                  U R                  R                  U R                  R                  U R                  U R                  4n[        [        U5      nU R                   H~  nS[        UR                  5          -   n[        UR                  5          nUR                   b	  U["        -  n[        XEUR                   =(       d    S45      nX&UR%                  SS9-   -  nM     U$ )z2
Convert a GDALRaster into PostGIS Raster format.
r   r   r    T)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    	
	DJJ



				

L  *L9F

 .99	 $DMMO4	 (00I )1B1B1Ga%HI
 	tyyty<<<3 6 Mr   )r   django.core.exceptionsr   constr   r   r   r   r	   r
   r   r   r   r   r@   rJ   r   r   r   <module>rM      s4     2  /?&<~4r   