
    nj                     *   S SK r S SKrS SKrS SKJr  S SKJr  S SKJrJ	r	J
r
Jr  S SKJr  S SKJr   " S S\5      rS	\\\4   S
\4S jr " S S\5      r\
\   r SS\S\S\\\4   S\\\\\4   4   4S jjr SS\
\   S\\\4   4S jjrS	\4S jrg)    N)Enum)Number)DictOptionalSequenceUnion)gdal)GeoRectanglec                   $    \ rS rSrSrSrSrSrSrg)Extent)   r             N)	__name__
__module____qualname____firstlineno__IGNOREFAILUNION	INTERSECT__static_attributes__r       ]/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/osgeo_utils/auxiliary/extent_util.pyr   r   )   s    FDEIr   r   extentreturnc                     [        U [        5      (       a  [        U R                  5          $ [        U [        5      (       a  U $ [	        SU -  5      e)NzError: Unknown extent %s)
isinstancestrr   upper	Exception)r   s    r   parse_extentr$   0   sC    &#flln%%	FF	#	#
.7
88r   c                   0    \ rS rSrSrSrSrSrSrSr	Sr
S	rg
)GT8   r   r   r   r   r   N)r   r   r   r   SAMEALMOST_SAMECOMPATIBLE_DIFFINCOMPATIBLE_OFFSETINCOMPATIBLE_PIXEL_SIZEINCOMPATIBLE_ROTATIONNON_ZERO_ROTATIONr   r   r   r   r&   r&   8   s)    DKOr   r&   gt0gt1diff_supportepsc                 @   X:X  a  [         R                  $ [        U[        5      (       a2  [         R                  U[         R
                  U[         R                  U0n[         R                  U[         R                     [        U S   US   -
  5      [        U S   US   -
  5      -   :  [         R
                  U[         R
                     [        U S   US   -
  5      [        U S   US   -
  5      -   :  [         R                  U[         R                     [        U S   US   -
  5      [        U S   US   -
  5      -   :  [         R                  U S   U S   s=:H  =(       a%    US   s=:H  =(       a    US   s=:H  =(       a    S:H  Os  0nU[         R                     (       a@  U[         R
                     (       a(  U[         R                     (       a  [         R                  $ UR                  5        H  nXE   (       a  M  X%   (       a  M  Us  $    [         R                  $ )Nr   r   r      r      )r&   r+   r    r   r.   r/   r0   absr1   r,   keysr-   )r2   r3   r4   r5   samereasons         r   gt_diffr=   E   s    zww#v""C&&$$c
 	B$:$: ;AQ 3s1vA#77!9
""C(B(B$CAQ 3s1vA#77%9
  #b&>&>"?AQ 3s1vA#77#9
c!fAGG#a&GGCFGGaGD 	R##$++,))*~~))+||L$8$8M  r   geotransformsinput_extentc                    U b  [        U 5      [        U5      :w  a  [        S5      e[        U[        5      (       a  U S   nUR	                  U5      nO[        U[
        5      (       an  S nU[
        R                  :H  n[        X5       HI  u  p6[        R                  " X65      nUc  UO(U(       a  UR                  U5      OUR                  U5      nMK     O[        SU 35      eUb  UR                  5       (       a  gWS   US   4nUR                  U5      n	UR                  US   US   UR                  US   US   4nU[        R                   " U	R"                  5      [        R                   " U	R$                  5      4U4$ )	Nz;Error! GeoTransforms and Dimensions have different lengths!r   zUnknown input extent format )NNNr   r7   r   r8   )lenr#   r    r
   alignr   r   zipfrom_geotransform_and_sizeunion	intersectis_empty	to_pixelsleftupmathceilwh)
r>   
dimensionsr?   gt
out_extentis_unionsizer   
pixel_size
pix_extents
             r    calc_geotransform_and_dimensionsrV   h   sf    M 2c*o EUVV,--1!''+
	L&	)	)-1
6<</M6HB!<<RFF %    %%f-))&1  7 6|nEFFZ0022eRU^
))*5
oor!ubeZ]]BqE2a5I		*,,':<<)@A:MMr   c                 &   [         R                  " UR                  UR                  UR                  UR
                  4S9n[        R                  " SS9u  p4[         R                  " X@US9n[        R                  " U5        Uc  [        S5      eXE4$ )N)outputBoundsz.vrt)suffix)optionsz(Error! cannot create vrt. Cannot proceed)r	   BuildVRTOptionsmin_xmin_ymax_xmax_ytempfilemkstempBuildVRToscloser#   )dsr   rZ   tmp_fdvrt_filenamevrt_dss         r   make_temp_vrtri      sy    ""llFLL&,,MG $++6:F]]<W=FHHV~BCCr   )g        )N)rK   rc   r`   enumr   numbersr   typingr   r   r   r   osgeor	   osgeo_utils.auxiliary.rectangler
   r   r!   r$   r&   GeoTransformboolr=   rV   ri   r   r   r   <module>rq      s   <  	    2 2  8T 9sF{+ 9 9   ,/	 	 	  r4x.  
vtBJ''	(	 L 15"NL)"N f,-"NJ	 l 	 r   