o
    :Zc\                     @   s\   d dl Z d dlmZ ddlmZmZmZmZmZ dd Z	dd Z
d	d
 Zdd Zdd ZdS )    N)ValidationError   )GDAL_TO_POSTGISGDAL_TO_STRUCTPOSTGIS_HEADER_STRUCTUREPOSTGIS_TO_GDALSTRUCT_SIZEc                 C   s   t jd|  g|R  S )z>
    Pack data into hex string with little endian format.
    <)structpack	structuredata r   e/var/www/chikooza/env/lib/python3.10/site-packages/django/contrib/gis/db/backends/postgis/pgraster.pyr         r   c                 C   s   t d|  t|S )zC
    Unpack little endian hexlified binary string into a list.
    r	   )r
   unpackbytesfromhexr   r   r   r   r      r   r   c                 C   s   | d| | |d fS )z;
    Split a string into two parts at the input index.
    Nr   )r   indexr   r   r   chunk   s   r   c              	   C   sN  | du rdS t | d\}} tt|}g }g }| rtt | d\}} td|d }|dk}|r0|d8 }t| }t| }dt|  }t | |\}} t||d }t | ||d  |d  \}	} d	t|	i}
|rh||
d
< ||
 || | st	t
|dkrt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   appendlensetr   int)r   headerr,   
pixeltypes	pixeltype
has_nodata	pack_type	pack_sizenodatabandband_resultr   r   r   from_pgraster    sD   


&
r:   c                 C   s   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|   }t|  }|jdurB|d7 }t|||jpIdf}|||jdd 7 }q)| S )z:
    Convert a GDALRaster into PostGIS Raster format.
    r   r   r   Nr   T)as_memoryview)r.   r,   r*   xyr)   r+   srsr%   r&   r'   r   r   r   r(   r   r   r   hex)rastrasterheaderresultr8   r   r3   
bandheaderr   r   r   to_pgrasterb   s   


rD   )r
   django.formsr   constr   r   r   r   r   r   r   r   r:   rD   r   r   r   r   <module>   s    B