§
    ŸjÚG  ã                   ó"  — d dl Z d dlZd dlZd dlZd dlmZmZmZmZm	Z	m
Z
mZmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZmZmZmZmZ d d
l m!Z!m"Z" d dl#m$Z$ d dl%m&Z&m'Z' d dl(m)Z)  G d„ de*¦  «        Z+ G d„ de¦  «        Z,dS )é    N)Ú	addressofÚbyrefÚc_bufferÚc_char_pÚc_doubleÚc_intÚc_void_pÚ	string_at)ÚPath)ÚDriver)ÚGDALException)Úraster©ÚBandList)ÚGDALRasterBase)ÚGDAL_RESAMPLE_ALGORITHMSÚVSI_DELETE_BUFFER_ON_READÚVSI_FILESYSTEM_PREFIXÚVSI_MEM_FILESYSTEM_BASE_PATHÚVSI_TAKE_BUFFER_OWNERSHIP)ÚSpatialReferenceÚSRSException)Ú
json_regex)Úforce_bytesÚ	force_str)Úcached_propertyc                   ó–   ‡ — e Zd ZddddœZˆ fd„Zed„ ¦   «         Zej        d„ ¦   «         Zed„ ¦   «         Zej        d	„ ¦   «         Zˆ xZ	S )
ÚTransformPoint)r   é   )é   é   )é   é   )ÚoriginÚscaleÚskewc                 óâ   •— |j         | j        |         d                  }|j         | j        |         d                  }t          ¦   «                              ||g¦  «         || _        || _        d S )Nr   r    )ÚgeotransformÚindicesÚsuperÚ__init__Ú_rasterÚ_prop)Úselfr   ÚpropÚxÚyÚ	__class__s        €úr/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/django/contrib/gis/gdal/raster/source.pyr+   zTransformPoint.__init__*   sc   ø€ ØÔ ¤¨TÔ 2°1Ô 5Ô6ˆØÔ ¤¨TÔ 2°1Ô 5Ô6ˆÝ‰Œ×Ò˜!˜Q˜Ñ Ô Ð ØˆŒØˆŒ
ˆ
ˆ
ó    c                 ó   — | d         S ©Nr   © ©r.   s    r3   r0   zTransformPoint.x1   ó   € à�AŒwˆr4   c                 ól   — | j         j        }||| j        | j                 d         <   || j         _        d S r6   ©r,   r(   r)   r-   ©r.   ÚvalueÚgtfs      r3   r0   zTransformPoint.x5   ó4   € àŒlÔ'ˆØ+0ˆˆDŒL˜œÔ$ QÔ'Ñ(Ø$'ˆŒÔ!Ð!Ð!r4   c                 ó   — | d         S ©Nr    r7   r8   s    r3   r1   zTransformPoint.y;   r9   r4   c                 ól   — | j         j        }||| j        | j                 d         <   || j         _        d S rA   r;   r<   s      r3   r1   zTransformPoint.y?   r?   r4   )
Ú__name__Ú
__module__Ú__qualname__r)   r+   Úpropertyr0   Úsetterr1   Ú__classcell__©r2   s   @r3   r   r   #   s½   ø€ € € € € àØØðð €Gðð ð ð ð ð ðð ñ „Xðð „Xð(ð (ñ „Xð(ð
 ðð ñ „Xðð „Xð(ð (ñ „Xð(ð (ð (ð (ð (r4   r   c                   ó  ‡ — e Zd ZdZej        Zd d„Zˆ fd„Zd„ Z	d„ Z
d„ Zed„ ¦   «         Zed	„ ¦   «         Zed
„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zej        d„ ¦   «         Zed„ ¦   «         Zej        d„ ¦   «         Zed„ ¦   «         Zej        d„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zd!d„Zd"d„Z	 d#d„Zed„ ¦   «         Z ˆ xZ!S )$Ú
GDALRasterz0
    Wrap a raster GDAL Data Source object.
    Fc                 ó  — |rdnd| _         t          j        ¦   «          t          |t          ¦  «        r(t          j        |¦  «        rt          j        |¦  «        }t          |t          t          f¦  «        r¾t	          |¦  «        }| 
                    t          ¦  «        s1t          j                             |¦  «        st          d|z  ¦  «        ‚	 t!          j        t%          |¦  «        | j         ¦  «        | _        d S # t          $ r(}t          d                     ||¦  «        ¦  «        ‚d }~ww xY wt          |t*          ¦  «        �rd| _         t-          j        |¦  «        }t1          |¦  «        | _        t          j                             t6          t	          t9          j        ¦   «         ¦  «        ¦  «        }t!          j        t%          |¦  «        t?          | j        ¦  «        |t@          ¦  «         	 t!          j        t%          |¦  «        | j         ¦  «        | _        d S # t          $ r1 t!          j!        t%          |¦  «        ¦  «         t          d¦  «        ‚w xY wt          |tD          ¦  «        �rAd| _         t          | #                    dd¦  «        ¦  «        }|j$        dk    r+d|vr't          d	                     |j$        ¦  «        ¦  «        ‚d
|vsd|vrt          d¦  «        ‚d|vrt          d¦  «        ‚g }| #                    di ¦  «         %                    ¦   «         D ]T\  }}	d                     ||	¦  «        }
| &                    |
 '                    ¦   «          (                    ¦   «         ¦  «         ŒU| &                    d ¦  «         tS          tU          |¦  «        z  |Ž }t!          j+        |j        t%          | #                    dd¦  «        ¦  «        |d
         |d         | #                    dtU          | #                    dg ¦  «        ¦  «        ¦  «        | #                    dd¦  «        t?          |¦  «        ¦  «        | _        tY          | #                    dg ¦  «        ¦  «        D ]¸\  }}| j-        |         }d|v r=|d         |_.        |j.        �)d|vsd|v sd|v r| /                    |j.        fd¬¦  «         | /                    | #                    d¦  «        | #                    d¦  «        | #                    d¦  «        | #                    d¦  «        ¬¦  «         Œ¹| #                    d¦  «        | _0        d|v r|d         \  | j1        _2        | j1        _3        d|v r|d         \  | j4        _2        | j4        _3        d |v r!|d          \  | j5        _2        | j5        _3        d S d S t          |tl          ¦  «        r	|| _        d S t          d!                     to          |¦  «        ¦  «        ¦  «        ‚)"Nr    r   z(Unable to read raster source input "%s".z+Could not open the datasource at "{}" ({}).z1Failed creating VSI raster from the input buffer.ÚdriverÚMEMÚnamez5Specify name for creation of raster with driver "{}".ÚwidthÚheightz;Specify width and height attributes for JSON or dict input.Úsridz$Specify srid for JSON or dict input.Úpapsz_optionsz{}={}Ú Únr_of_bandsÚbandsÚdatatypeé   Únodata_valueÚdataÚsizeÚshape)r    r    )rZ   r\   Úoffset)rZ   r[   r\   r]   r$   r%   r&   z%Invalid data source input type: "{}".)8Ú_writer   Úensure_registeredÚ
isinstanceÚstrr   ÚmatchÚjsonÚloadsr   Ú
startswithr   ÚosÚpathÚexistsr   ÚcapiÚopen_dsr   Ú_ptrÚformatÚbytesÚsysÚ	getsizeofr   Ú	_ds_inputÚjoinr   ÚuuidÚuuid4Úcreate_vsi_file_from_mem_bufferr   r   Úunlink_vsi_fileÚdictÚgetrO   ÚitemsÚappendÚupperÚencoder   ÚlenÚ	create_dsÚ	enumeraterV   rY   rZ   Úsrsr$   r0   r1   r%   r&   r	   Útype)r.   Úds_inputÚwriteÚerrr[   Úvsi_pathrM   rS   ÚkeyÚvalÚoptionÚiÚ
band_inputÚbands                 r3   r+   zGDALRaster.__init__M   sß  € Ø Ð'�a�a aˆŒÝÔ Ñ"Ô"Ð"õ �h¥Ñ$Ô$ð 	,­Ô)9¸(Ñ)CÔ)Cð 	,Ý”z (Ñ+Ô+ˆHõ �h¥¥d Ñ,Ô,ð }	Ý˜8‘}”}ˆHØ×&Ò&Õ'<Ñ=Ô=ð ÅbÄgÇnÂnØñGô Gð õ $Ø>ÀÑIñô ð ðå œL­°XÑ)>Ô)>ÀÄÑLÔL�”	�	�	øÝ ð ð ð Ý#ØA×HÒHÈÐSVÑWÔWñô ð øøøøðøøøõ ˜¥%Ñ(Ô(ñ n	àˆDŒKå”= Ñ*Ô*ˆDõ & hÑ/Ô/ˆDŒNå”w—|’|Õ$@Å#ÅdÄjÁlÄlÑBSÔBSÑTÔTˆHåÔ0Ý˜HÑ%Ô%Ý�d”nÑ%Ô%ØÝ)ñ	ô ð ðYÝ œL­°XÑ)>Ô)>ÀÄÑLÔL�”	�	�	øÝ ð Yð Yð YåÔ$¥[°Ñ%:Ô%:Ñ;Ô;Ð;Ý#Ð$WÑXÔXÐXðYøøøõ ˜¥$Ñ'Ô'ñ U	àˆDŒKõ ˜HŸLšL¨°5Ñ9Ô9Ñ:Ô:ˆFð Œ{˜eÒ#Ð#¨°hÐ(>Ð(>Ý#ØK×RÒRØœñô ñô ð ð ˜hÐ&Ð&¨(¸(Ð*BÐ*BÝ#ØQñô ð ð
 ˜XÐ%Ð%Ý#Ð$JÑKÔKÐKð ˆMØ$ŸLšL¨¸"Ñ=Ô=×CÒCÑEÔEð >ð >‘��SØ Ÿš¨¨SÑ1Ô1�Ø×$Ò$ V§\¢\¡^¤^×%:Ò%:Ñ%<Ô%<Ñ=Ô=Ð=Ð=Ø× Ò  Ñ&Ô&Ð&õ &­¨MÑ(:Ô(:Ñ:¸]ÐKˆMõ œØ”Ý˜HŸLšL¨°Ñ4Ô4Ñ5Ô5Ø˜Ô!Ø˜Ô"Ø—’˜]­C°·²¸WÀbÑ0IÔ0IÑ,JÔ,JÑKÔKØ—’˜Z¨Ñ+Ô+Ý�mÑ$Ô$ñô ˆDŒIõ "+¨8¯<ª<¸ÀÑ+DÔ+DÑ!EÔ!Eð ð ‘��:Ø”z !”}�Ø! ZÐ/Ð/Ø(2°>Ô(B�DÔ%ð Ô(Ð4Ø jÐ0Ð0Ø! ZÐ/Ð/Ø" jÐ0Ð0àŸ	š	¨Ô(9Ð';À6˜	ÑJÔJÐJà—	’	Ø#Ÿš¨Ñ/Ô/Ø#Ÿš¨Ñ/Ô/Ø$Ÿ.š.¨Ñ1Ô1Ø%Ÿ>š>¨(Ñ3Ô3ð	 ñ ô ð ð ð  —|’| FÑ+Ô+ˆDŒHð ˜8Ð#Ð#Ø/7¸Ô/AÑ,�””˜tœ{œ}à˜(Ð"Ð"Ø-5°gÔ->Ñ*�”
”˜dœjœlà˜Ð!Ð!Ø+3°FÔ+;Ñ(�”	”˜TœYœ[˜[˜[ð "Ð!å˜¥(Ñ+Ô+ð 	à ˆDŒIˆIˆIåØ7×>Ò>½tÀH¹~¼~ÑNÔNñô ð s$   Ã,D Ä
D3Ä#D.Ä.D3Ç:,H( È(;I#c                 ó¢   •— | j         r&t          j        t          | j        ¦  «        ¦  «         t          ¦   «                              ¦   «          d S ©N)Úis_vsi_basedri   ru   r   rO   r*   Ú__del__)r.   r2   s    €r3   rŽ   zGDALRaster.__del__Ö   sC   ø€ ØÔð 	9åÔ ¥¨T¬YÑ!7Ô!7Ñ8Ô8Ð8Ý‰Œ�ŠÑÔÐÐÐr4   c                 ó   — | j         S rŒ   )rO   r8   s    r3   Ú__str__zGDALRaster.__str__Ü   s
   € ØŒyÐr4   c                 óJ   — dt          t          | j        ¦  «        ¦  «        z  S )zJ
        Short-hand representation because WKB may be very large.
        z<Raster object at %s>)Úhexr   rk   r8   s    r3   Ú__repr__zGDALRaster.__repr__ß   s!   € ð '­­Y°t´yÑ-AÔ-AÑ)BÔ)BÑBÐBr4   c                 ód   — | j         st          d¦  «        ‚t          j        | j        ¦  «         dS )a  
        Flush all data from memory into the source file if it exists.
        The data that needs flushing are geotransforms, coordinate systems,
        nodata_values and pixel values. This function will be called
        automatically wherever it is needed.
        z9Raster needs to be opened in write mode to change values.N)r^   r   ri   Úflush_dsrk   r8   s    r3   Ú_flushzGDALRaster._flushå   s=   € ð Œ{ð 	ÝØKñô ð õ 	Œ�d”iÑ Ô Ð Ð Ð r4   c                 ó  — | j         r| j                             t          ¦  «        sd S t	          ¦   «         }t          j        t          | j        ¦  «        t          |¦  «        t          ¦  «        }t          ||j        ¦  «        S rŒ   )r�   rO   re   r   r   ri   Úget_mem_buffer_from_vsi_filer   r   r   r
   r=   )r.   Ú
out_lengthÚdats      r3   Ú
vsi_bufferzGDALRaster.vsi_bufferó   sz   € ð Ôð	Ø"&¤)×"6Ò"6Õ7SÑ"TÔ"Tð	ð �4å‘W”Wˆ
åÔ/Ý˜œ	Ñ"Ô"Ý�*ÑÔÝ%ñ
ô 
ˆõ ˜˜jÔ.Ñ/Ô/Ð/r4   c                 óN   — | j         o| j                             t          ¦  «        S rŒ   )rk   rO   re   r   r8   s    r3   r�   zGDALRaster.is_vsi_based  s    € àŒyÐH˜TœY×1Ò1Õ2GÑHÔHÐHr4   c                 óN   — t          t          j        | j        ¦  «        ¦  «        S )zi
        Return the name of this raster. Corresponds to filename
        for file-based rasters.
        )r   ri   Úget_ds_descriptionrk   r8   s    r3   rO   zGDALRaster.name  s   € õ �Ô0°´Ñ;Ô;Ñ<Ô<Ð<r4   c                 óR   — t          j        | j        ¦  «        }t          |¦  «        S )z>
        Return the GDAL Driver used for this raster.
        )ri   Úget_ds_driverrk   r   )r.   Ú	ds_drivers     r3   rM   zGDALRaster.driver  s$   € õ
 Ô& t¤yÑ1Ô1ˆ	Ý�iÑ Ô Ð r4   c                 ó4   — t          j        | j        ¦  «        S )z+
        Width (X axis) in pixels.
        )ri   Úget_ds_xsizerk   r8   s    r3   rP   zGDALRaster.width  ó   € õ
 Ô  ¤Ñ+Ô+Ð+r4   c                 ó4   — t          j        | j        ¦  «        S )z,
        Height (Y axis) in pixels.
        )ri   Úget_ds_ysizerk   r8   s    r3   rQ   zGDALRaster.height  r¤   r4   c                 ó‚   — 	 t          j        | j        ¦  «        }|sdS t          |d¬¦  «        S # t          $ r Y dS w xY w)zF
        Return the SpatialReference used in this GDALRaster.
        NÚwkt)Úsrs_type)ri   Úget_ds_projection_refrk   r   r   )r.   r¨   s     r3   r   zGDALRaster.srs&  s[   € ð
	ÝÔ,¨T¬YÑ7Ô7ˆCØð Ø�tÝ# C°%Ð8Ñ8Ô8Ð8øÝð 	ð 	ð 	Ø�4�4ð	øøøs   ‚0 Ÿ0 °
>½>c                 ó6  — t          |t          ¦  «        r|}n;t          |t          t          f¦  «        rt          |¦  «        }nt	          d¦  «        ‚t          j        | j        |j         	                    ¦   «         ¦  «         |  
                    ¦   «          dS )z·
        Set the spatial reference used in this GDALRaster. The input can be
        a SpatialReference or any parameter accepted by the SpatialReference
        constructor.
        z/Could not create a SpatialReference from input.N)r`   r   Úintra   Ú
ValueErrorri   Úset_ds_projection_refrk   r¨   r{   r–   )r.   r=   r   s      r3   r   zGDALRaster.srs3  s†   € õ �eÕ-Ñ.Ô.ð 	PØˆCˆCÝ˜¥¥S˜zÑ*Ô*ð 	PÝ" 5Ñ)Ô)ˆCˆCåÐNÑOÔOÐOÝÔ" 4¤9¨c¬g¯nªnÑ.>Ô.>Ñ?Ô?Ð?Ø�Š‰Œˆˆˆr4   c                 ó   — | j         j        S )zA
        Shortcut to access the srid of this GDALRaster.
        )r   rR   r8   s    r3   rR   zGDALRaster.sridC  s   € ð
 ŒxŒ}Ðr4   c                 ó   — || _         dS )zE
        Shortcut to set this GDALRaster's srs from an srid.
        N)r   )r.   r=   s     r3   rR   zGDALRaster.sridJ  s   € ð
 ˆŒˆˆr4   c                 ó�   — t          dz  ¦   «         }t          j        | j        t	          |¦  «        ¦  «         t          |¦  «        S )zÒ
        Return the geotransform of the data source.
        Return the default geotransform if it does not exist or has not been
        set previously. The default is [0.0, 1.0, 0.0, 0.0, 0.0, -1.0].
        rX   )r   ri   Úget_ds_geotransformrk   r   Úlist)r.   r>   s     r3   r(   zGDALRaster.geotransformQ  s:   € õ ˜!‰|ÑÔˆÝÔ  ¤­E°#©J¬JÑ7Ô7Ð7Ý�C‰yŒyÐr4   c                 ó
  — t          |¦  «        dk    st          d„ |D ¦   «         ¦  «        st          d¦  «        ‚t          dz  |Ž }t	          j        | j        t          |¦  «        ¦  «         |                      ¦   «          dS )z)Set the geotransform for the data source.rX   c              3   óN   K  — | ] }t          |t          t          f¦  «        V — Œ!d S rŒ   )r`   r¬   Úfloat)Ú.0r0   s     r3   ú	<genexpr>z*GDALRaster.geotransform.<locals>.<genexpr>`  s0   è è € Ð&SÐ&SÀq¥z°!µc½5°\Ñ'BÔ'BÐ&SÐ&SÐ&SÐ&SÐ&SÐ&Sr4   z.Geotransform must consist of 6 numeric values.N)	r|   Úallr­   r   ri   Úset_ds_geotransformrk   r   r–   )r.   Úvaluess     r3   r(   zGDALRaster.geotransform]  sz   € õ ˆv‰;Œ;˜!ÒÐ¥3Ð&SÐ&SÈFÐ&SÑ&SÔ&SÑ#SÔ#SÐÝÐMÑNÔNÐNå˜Q‘, Ð(ˆÝÔ  ¤­E°&©M¬MÑ:Ô:Ð:Ø�Š‰Œˆˆˆr4   c                 ó"   — t          | d¦  «        S )z3
        Coordinates of the raster origin.
        r$   ©r   r8   s    r3   r$   zGDALRaster.origing  s   € õ
 ˜d HÑ-Ô-Ð-r4   c                 ó"   — t          | d¦  «        S )z@
        Pixel scale in units of the raster projection.
        r%   r½   r8   s    r3   r%   zGDALRaster.scalen  s   € õ
 ˜d GÑ,Ô,Ð,r4   c                 ó"   — t          | d¦  «        S )z7
        Skew of pixels (rotation parameters).
        r&   r½   r8   s    r3   r&   zGDALRaster.skewu  s   € õ
 ˜d FÑ+Ô+Ð+r4   c                 ób  — | j         j        | j        j        | j        z  z   }| j         j        | j        j        | j        z  z   }t          || j         j        ¦  «        }t          || j         j        ¦  «        }t          || j         j        ¦  «        }t          || j         j        ¦  «        }||||fS )zJ
        Return the extent as a 4-tuple (xmin, ymin, xmax, ymax).
        )r$   r0   r%   rP   r1   rQ   ÚminÚmax)r.   ÚxvalÚyvalÚxminÚxmaxÚyminÚymaxs          r3   ÚextentzGDALRaster.extent|  s‘   € ð Œ{Œ}˜tœzœ|¨d¬jÑ8Ñ8ˆØŒ{Œ}˜tœzœ|¨d¬kÑ9Ñ9ˆå�4˜œœÑ'Ô'ˆÝ�4˜œœÑ'Ô'ˆÝ�4˜œœÑ'Ô'ˆÝ�4˜œœÑ'Ô'ˆà�T˜4 Ð%Ð%r4   c                 ó    — t          | ¦  «        S rŒ   r   r8   s    r3   rV   zGDALRaster.bandsŒ  s   € å˜‰~Œ~Ðr4   ÚNearestNeighbourç        c                 ó®  — |                      d| j        ¦  «         |                      d| j        ¦  «         |                      d| j        j        ¦  «         |                      d| j        ¦  «         |                      d| j        ¦  «         |                      d| j        ¦  «         |                      d| j        j	        ¦  «         d|vr| j	        d	z   | j        j	        z   |d<   d
|vr"| j
        d                              ¦   «         |d
<   d„ | j
        D ¦   «         |d<   t          |d¬¦  «        }t          |         }t          j        | j        | j        j                             ¦   «         |j        |j        j                             ¦   «         |d|t'          ¦   «         t'          ¦   «         t'          ¦   «         ¦
  «
         |                     ¦   «          |S )a  
        Return a warped GDALRaster with the given input characteristics.

        The input is expected to be a dictionary containing the parameters
        of the target raster. Allowed values are width, height, SRID, origin,
        scale, skew, datatype, driver, and name (filename).

        By default, the warp functions keeps all parameters equal to the values
        of the original source raster. For the name of the target raster, the
        name of the source raster will be used and appended with
        _copy. + source_driver_name.

        In addition, the resampling algorithm can be specified with the "resampling"
        input parameter. The default is NearestNeighbor. For a list of all options
        consult the GDAL_RESAMPLE_ALGORITHMS constant.
        rP   rQ   rR   r$   r%   r&   rM   rO   ú_copy.rW   r   c                 ó    — g | ]}d |j         i‘ŒS ©rY   rÐ   )r·   Úbnds     r3   ú
<listcomp>z#GDALRaster.warp.<locals>.<listcomp>²  s    € ÐVÐVÐVÀC˜n¨cÔ.>Ð?ÐVÐVÐVr4   rV   T©r‚   rÌ   )Ú
setdefaultrP   rQ   r   rR   r$   r%   r&   rM   rO   rV   rW   rK   r   ri   Úreproject_imagerk   r¨   r{   r	   r–   )r.   r�   Ú
resamplingÚ	max_errorÚtargetÚ	algorithms         r3   ÚwarpzGDALRaster.warp�  s´  € ð$ 	×Ò˜G T¤ZÑ0Ô0Ð0Ø×Ò˜H d¤kÑ2Ô2Ð2Ø×Ò˜F D¤H¤MÑ2Ô2Ð2Ø×Ò˜H d¤kÑ2Ô2Ð2Ø×Ò˜G T¤ZÑ0Ô0Ð0Ø×Ò˜F D¤IÑ.Ô.Ð.à×Ò˜H d¤kÔ&6Ñ7Ô7Ð7à˜Ð!Ð!Ø#œy¨8Ñ3°d´kÔ6FÑFˆH�VÑà˜XÐ%Ð%Ø#'¤:¨a¤=×#9Ò#9Ñ#;Ô#;ˆH�ZÑ ð WÐVÈ4Ì:ÐVÑVÔVˆ�Ñõ ˜H¨DÐ1Ñ1Ô1ˆõ -¨ZÔ8ˆ	õ 	ÔØŒIØŒHŒL×ÒÑ!Ô!ØŒKØŒJŒN×!Ò!Ñ#Ô#ØØØÝ‰JŒJÝ‰JŒJÝ‰JŒJñ	
ô 	
ð 	
ð 	�Š‰Œˆàˆr4   Nc                 óÖ  — |r|}nk| j         j        dk    r| j        dz   | j         j        z   }nCt          j                             t
          t          t          j        ¦   «         ¦  «        ¦  «        }t          t          j        | j         j        t          |¦  «        | j        t          ¦   «         t          ¦   «         t!          ¦   «         t!          ¦   «         ¦  «        | j        ¬¦  «        S )z"Return a clone of this GDALRaster.rN   rÎ   rÓ   )rM   rO   rf   rg   rq   r   ra   rr   rs   rK   ri   Úcopy_dsrk   r   r   r   r	   r^   )r.   rO   Ú
clone_names      r3   ÚclonezGDALRaster.cloneÍ  s¿   € àð 	WØˆJˆJØŒ[Ô Ò&Ð&Øœ XÑ-°´Ô0@Ñ@ˆJˆJåœŸšÕ&BÅCÍÌ
ÉÌÑDUÔDUÑVÔVˆJÝÝŒLØ”Ô Ý˜JÑ'Ô'Ø”	Ý‘”Ý‘
”
Ý‘
”
Ý‘
”
ñô ð ”+ð
ñ 
ô 
ð 	
r4   c           	      ó  — t           |         }t          |t          ¦  «        r|}n;t          |t          t          f¦  «        rt          |¦  «        }nt          d¦  «        ‚|j        | j        k    r'|r|| j        j        k    r|  	                    |¦  «        S t          j        | j        | j        j                             ¦   «         |j                             ¦   «         ||t!          ¦   «         ¦  «        }t#          |¦  «        }|j        |j        |j        |j        j        |j        j        g|j        j        |j        j        g|j        j        |j        j        gdœ}	|r||	d<   |r||	d<   |                      |	||¬¦  «        S )zk
        Return a copy of this raster reprojected into the given spatial
        reference system.
        zETransform only accepts SpatialReference, string, and integer objects.)rR   rP   rQ   r$   r%   r&   rM   rO   )rÖ   r×   )r   r`   r   r¬   ra   Ú	TypeErrorrR   rM   rO   rÞ   ri   Úauto_create_warped_vrtrk   r   r¨   r{   r	   rK   rP   rQ   r$   r0   r1   r%   r&   rÚ   )
r.   r   rM   rO   rÖ   r×   rÙ   Ú
target_srsrØ   rZ   s
             r3   Ú	transformzGDALRaster.transformâ  s}  € õ -¨ZÔ8ˆ	å�cÕ+Ñ,Ô,ð 	ØˆJˆJÝ˜�c¥3˜ZÑ(Ô(ð 	Ý)¨#Ñ.Ô.ˆJˆJåðñô ð ð
 Œ?˜dœiÒ'Ð'°Ð'¸6ÀTÄ[ÔEUÒ;UÐ;UØ—:’:˜dÑ#Ô#Ð#åÔ,ØŒIØŒHŒL×ÒÑ!Ô!ØŒN×!Ò!Ñ#Ô#ØØÝ‰JŒJñ
ô 
ˆõ ˜FÑ#Ô#ˆð ”OØ”\Ø”mØ”}”¨¬¬Ð8Ø”l”n f¤l¤nÐ5Ø”[”] F¤K¤MÐ2ð
ð 
ˆð ð 	$Ø#ˆD�‰Nàð 	 ØˆD�‰Lð �yŠy˜¨*À	ˆyÑJÔJÐJr4   c                 óZ   — t          j        | j        d¦  «                             ¦   «         S )z�
        Return information about this raster in a string format equivalent
        to the output of the gdalinfo command line utility.
        N)ri   Úget_ds_infoÚptrÚdecoder8   s    r3   ÚinfozGDALRaster.info  s%   € õ Ô ¤¨$Ñ/Ô/×6Ò6Ñ8Ô8Ð8r4   )F)rË   rÌ   rŒ   )NNrË   rÌ   )"rC   rD   rE   Ú__doc__ri   Úclose_dsÚ
destructorr+   rŽ   r�   r“   r–   rF   r›   r   r�   rO   rM   rP   rQ   r   rG   rR   r(   r$   r%   r&   rÉ   rV   rÚ   rÞ   rã   rè   rH   rI   s   @r3   rK   rK   F   sÎ  ø€ € € € € ðð ð ”€JðGð Gð Gð GðRð ð ð ð ðð ð ðCð Cð Cð!ð !ð !ð ð0ð 0ñ „Xð0ð  ðIð Iñ „_ðIð ð=ð =ñ „Xð=ð ð!ð !ñ „_ð!ð ð,ð ,ñ „Xð,ð ð,ð ,ñ „Xð,ð ð
ð 
ñ „Xð
ð 	„Zðð ñ „Zðð ðð ñ „Xðð 
„[ðð ñ „[ðð ð	ð 	ñ „Xð	ð Ôðð ñ Ôðð ð.ð .ñ „Xð.ð ð-ð -ñ „Xð-ð ð,ð ,ñ „Xð,ð ð&ð &ñ „Xð&ð ðð ñ „Xðð;ð ;ð ;ð ;ðz
ð 
ð 
ð 
ð, UXð3Kð 3Kð 3Kð 3Kðj ð9ð 9ñ „Xð9ð 9ð 9ð 9ð 9r4   rK   )-rc   rf   rn   rr   Úctypesr   r   r   r   r   r   r	   r
   Úpathlibr   Údjango.contrib.gis.gdal.driverr   Údjango.contrib.gis.gdal.errorr   Ú"django.contrib.gis.gdal.prototypesr   ri   Ú#django.contrib.gis.gdal.raster.bandr   Ú#django.contrib.gis.gdal.raster.baser   Ú$django.contrib.gis.gdal.raster.constr   r   r   r   r   Údjango.contrib.gis.gdal.srsr   r   Údjango.contrib.gis.geometryr   Údjango.utils.encodingr   r   Údjango.utils.functionalr   r³   r   rK   r7   r4   r3   ú<module>rø      s  ðØ €€€Ø 	€	€	€	Ø 
€
€
€
Ø €€€ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð Ð Ð Ð Ð Ð à 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø =Ð =Ð =Ð =Ð =Ð =Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø >Ð >Ð >Ð >Ð >Ð >ðð ð ð ð ð ð ð ð ð ð ð ð ð ð GÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3ð (ð  (ð  (ð  (ð  (�Tñ  (ô  (ð  (ðFW9ð W9ð W9ð W9ð W9�ñ W9ô W9ð W9ð W9ð W9r4   