
    nj2I                        S SK r S SKrS SKrS SKJr  S SKJr  \R                  rSSS r	  SS jr
S rS	 rS
 r " S S\5      rS rSS jr\R$                  4S jr\S:X  a#  \R*                  " \" \R$                  5      5        gg)    N)gdal)GetOutputDriverForz$id$   c                 .   US:w  a  [        SXX4XxX4-  5        Ub  [        U UUUUUUUUU	U
UU5      $ U R                  U5      nS nUR                  5       [        R
                  :w  a  UR                  5       nO$UR                  5       [        R                  :X  a  UnUb  [        U UUUUUUUUU	U
UU5      $ U R                  U5      nUR                  U5      nUR                  XX4XUR                  5      nUR                  XxXUXUR                  5        g)Nr   z Copy %d,%d,%d,%d to %d,%d,%d,%d.)printraster_copy_with_nodataGetRasterBandGetMaskFlagsr   GMF_ALL_VALIDGetMaskBandGetColorInterpretationGCI_AlphaBandraster_copy_with_mask
ReadRasterDataTypeWriteRaster)s_fhs_xoffs_yoffs_xsizes_ysizes_band_nt_fht_xofft_yofft_xsizet_ysizet_band_nnodataverboses_bandm_bandt_banddatas                     R/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/osgeo_utils/gdal_merge.pyraster_copyr'   .   s[   " !|.wRS	

 &
 	
  )FF  2 22##%		&	&	(D,>,>	>$
 	
  )F)F'FOOD $&//     c                 Z   SS K nU R                  U5      nUR                  U5      nUR                  XX4X5      nUR                  XxX5      nUR                  U5      (       d  UR	                  UU5      nOUR                  U5      nUR                  UUU45      nUR                  UXx5        gNr   )numpyr
   ReadAsArrayisnanequalchoose
WriteArray)r   r   r   r   r   r   r   r   r   r   r   r   r    npr"   r$   data_srcdata_dstnodata_testto_writes                       r&   r	   r	      s     )F)F!!&'GUH!!&'CH88Fhhx0hhx(yyx&:;H
h/r(   c                 0   SS K nU R                  U5      nUR                  U5      nUR                  XX4X5      nUR                  XX4X5      nUR                  XxX5      nUR                  US5      nUR	                  UUU45      nUR                  UXx5        gr*   )r+   r
   r,   r.   r/   r0   )r   r   r   r   r   r   r   r   r   r   r   r   r#   r1   r"   r$   r2   	data_maskr3   	mask_testr5   s                        r&   r   r      s     )F)F!!&'GUH""67WVI!!&'CHA&IyyXx$89H
h/r(   c                     / nU  H5  n[        5       nUR                  U5      S:X  d  M$  UR                  U5        M7     U$ )z
Translate a list of GDAL filenames, into file_info objects.

names -- list of valid GDAL dataset names.

Returns a list of file_info objects.  There may be less file_info objects
than names if some of the names could not be opened as GDAL files.
   )	file_infoinit_from_nameappend)names
file_infosnamefis       r&   names_to_fileinfosrB      sC     J[T"a'b! 
 r(   c                   4    \ rS rSrSrS rS rS rS	S jrSr	g)
r;      z.A class holding information about a GDAL file.c                     S U l         S U l        S U l        S U l        S U l        S U l        S U l        S U l        S U l        S U l	        S U l
        S U l        g N	band_typebandsctfilenamegeotransformlrxlry
projectionulxulyxsizeysizeselfs    r&   __init__file_info.__init__   sW    
 

r(   c                    [         R                  " U5      nUc  gXl        UR                  U l        UR
                  U l        UR                  U l        UR                  S5      R                  U l        UR                  5       U l        UR                  5       U l        U R                  S   U l        U R                  S   U l        U R                   U R                  S   U R                  -  -   U l        U R"                  U R                  S   U R                  -  -   U l        UR                  S5      R)                  5       nUb  UR+                  5       U l        gSU l        g)z
Initialize file_info from filename

filename -- Name of file to read.

Returns 1 on success or 0 if the file can't be opened.
Nr   r:      r   )r   OpenrK   RasterCountrI   RasterXSizerR   RasterYSizerS   r
   r   rH   GetProjectionrO   GetGeoTransformrL   rP   rQ   rM   rN   GetRasterColorTableClonerJ   )rU   rK   fhrJ   s       r&   r<   file_info.init_from_name   s!    YYx : ^^
^^
^^
))!,55**,..0$$Q'$$Q'88d//2TZZ??88d//2TZZ??a 446>hhjDG  DGr(   c                 Z   [        SU R                  -   5        [        SU R                  U R                  U R                  4-  5        [        SU R
                  S   U R
                  S   4-  5        [        SU R                  U R                  U R                  U R                  4-  5        g )Nz
Filename: zFile Size: %dx%dx%dzPixel Size: %f x %fr:   r   zUL:(%f,%f)   LR:(%f,%f))
r   rK   rR   rS   rI   rL   rP   rQ   rM   rN   rT   s    r&   reportfile_info.report  s    lT]]*+#tzz4::tzz&JJK#t'8'8';T=N=Nq=Q&RRS'488TXXtxx*RRSr(   Nc                    UR                  5       nUS   nUS   nUS   UR                  US   -  -   n	US   UR                  US   -  -   n
[        XpR                  5      n[        XR                  5      nUS   S:  a+  [        XR                  5      n[        XR                  5      nO*[        XR                  5      n[        XR                  5      nX:  a  gUS   S:  a  X::  a  gUS   S:  a  X:  a  g[        XS   -
  US   -  S-   5      n[        XS   -
  US   -  S-   5      n[        XS   -
  US   -  S-   5      U-
  n[        XS   -
  US   -  S-   5      U-
  nUS:  d  US:  a  g[        XR                  S   -
  U R                  S   -  S-   5      n[        XR                  S   -
  U R                  S   -  S-   5      n[        XR                  S   -
  U R                  S   -  S-   5      U-
  n[        XR                  S   -
  U R                  S   -  S-   5      U-
  nUS:  d  US:  a  g[        R                  " U R                  5      n[        UUUUUUUUUUUUUU5      $ )a  
Copy this files image into target file.

This method will compute the overlap area of the file_info objects
file, and the target gdal.Dataset object, and copy the image data
for the common window area.  It is assumed that the files are in
a compatible projection ... no checking or warping is done.  However,
if the destination file is a different resolution, or different
image pixel type, the appropriate resampling and conversions will
be done (using normal GDAL promotion/demotion rules).

t_fh -- gdal.Dataset object for the file into which some or all
of this file may be copied.

Returns 1 on success (or if nothing needs to be copied), and zero one
failure.
r   rY   r:   r   g?      ?)r_   r\   r]   maxrP   minrM   rQ   rN   intrL   r   rZ   rK   r'   )rU   r   r"   r$   
nodata_argr!   t_geotransformt_ulxt_ulyt_lrxt_lrytgw_ulxtgw_lrxtgw_ulytgw_lrytw_xofftw_yofftw_xsizetw_ysizesw_xoffsw_yoffsw_xsizesw_ysizer   s                           r&   	copy_intofile_info.copy_into  s   $ --/q!q!q!D$4$4~a7H$HHq!D$4$4~a7H$HH eXX&eXX&!q %*G%*G%*G%*G !q W%7!q W%7 w!22nQ6GG#MNw!22nQ6GG#MN!,,q0AACGH7R 	 !,,q0AACGH7R 	 a<8a< w!2!21!559J9J19MMPSSTw!2!21!559J9J19MMPSST,,Q//43D3DQ3GG#MNQXX 	 ,,Q//43D3DQ3GG#MNQXX 	 a<8a< yy'
 	
r(   rG   )r:   r:   Nr   )
__name__
__module____qualname____firstlineno____doc__rV   r<   re   r~   __static_attributes__ r(   r&   r;   r;      s    8@TV
r(   r;   c                    U (       a  [         R                  O[         R                  n[        SUS9  [        SUS9  [        SUS9  [        SUS9  [        SUS9  [        SUS9  [        SUS9  [        S	US9  U (       a  S
$ S$ )Nz.Usage: gdal_merge.py [--help] [--help-general])filezS                     [-o <out_filename>] [-of <out_format>] [-co <NAME>=<VALUE>]...zZ                     [-ps <pixelsize_x> <pixelsize_y>] [-tap] [-separate] [-q] [-v] [-pct]zT                     [-ul_lr <ulx> <uly> <lrx> <lry>] [-init "<value>[ <value>]..."]zJ                     [-n <nodata_value>] [-a_nodata <output_nodata_value>]zR                     [-ot <datatype>] [-createonly] <input_file> [<input_file>]...z%                     [--help-general]    r   )sysstderrstdoutr   )isErrorfs     r&   Usager   o  s    

3::A	
:C	] 
d 
^ 
T 
\ 

1:	"11Qr(   c                    SnSn/ nS nSnS nS nSnSn	S n
S n/ n/ nS nSnSn[         R                   " 5       nU c  U n [        R                  " U 5      n U c  gSnU[        U 5      :  Ga>  U U   nUS:X  a	  [	        SS9$ US:X  a  US-   nU U   nGOUS:X  a  SnGOUS	:X  d  US
:X  a  SnGOUS:X  a  SnGOUS:X  a  SnGOUS:X  a  SnGOUS:X  a  Sn	GOUS:X  aF  US-   n[        R
                  " U U   5      nU[        R                  :X  a  [        SU U   -  5        gGOsUS:X  a=  US-   nU U   R                  5       nU H  nUR                  [        U5      5        M     GO0US:X  a  US-   n[        U U   5      n
GOUS:X  a  US-   n[        U U   5      nOUS:X  d  US:X  a  US-   nU U   nOUS:X  a  US-   nUR                  U U   5        OUS:X  a4  [        U US-      5      nS[        [        U US-      5      5      -  nUS-   nOUS:X  a  SnOUS:X  aJ  [        U US-      5      n[        U US-      5      n[        U US-      5      n[        U US-      5      nUS-   nO1US S S:X  a  [        S U-  5        [	        SS9$ UR                  U5        US-   nU[        U 5      :  a  GM>  U(       d  [        S!5        [	        SS9$ Uc  [        U5      n[        R                  " U5      nUc  [        S"U-  5        gUR                  5       nS#U;  a  [        S$U-  5        g[        U5      nUc  US   R                   nUS   R"                  nUS   R$                  nUS   R&                  nU H[  n[)        UUR                   5      n[+        UUR"                  5      n[+        UUR$                  5      n[)        UUR&                  5      nM]     Uc$  US   R,                  S   nUS   R,                  S%   nUc  US   R.                  n[        R0                  " 5          [        R2                  " SS&9   [        R4                  " U[        R6                  5      nS S S 5        S S S 5        WGcg  U(       as  [8        R:                  " Xg-  5      U-  n[8        R<                  " WU-  5      U-  n[8        R:                  " WW* -  5      U* -  n[8        R<                  " WU* -  5      U* -  nXgSWSW/n[?        WU-
  US   -  S'-   5      n [?        WU-
  US%   -  S'-   5      n!US:w  a  Sn"U H  nU"UR@                  -   n"M     OUS   R@                  n"URC                  UU U!U"X5      nUc  [        S(5        gURE                  U5        URG                  US   RH                  5        U	(       a-  URK                  S5      RM                  US   RN                  5        O`US:w  a7  Sn"U H  nU"UR@                  -   n"M     URP                  U":  a  [        S)5        gO#[)        US   R@                  URP                  5      n"Ub?  [S        URP                  5       H&  nURK                  US-   5      RU                  U5        M(     Ub  URP                  [        U5      ::  aC  [S        URP                  5       H)  nURK                  US-   5      RW                  UU   5        M+     OQ[        U5      S:X  aB  [S        URP                  5       H)  nURK                  US-   5      RW                  US   5        M+     Sn#US:X  a  US:X  a  [Y        S*5        Sn$U GH%  nUS:w  a  M  US:w  as  [        S+5        [        S,U$S-   [        U5      U$S--  [        U5      -  [?        [[        [         R                   " 5       U-
  S.-  5      5      4-  5        UR]                  5         US:X  a+  [S        SU"S-   5       H  n%UR_                  UU%U%X5        M     O9[S        SUR@                  S-   5       H  n%UR_                  UU%U#X5        U#S-   n#M     U$S-   n$US:X  d  M  US:X  d  GM  [Y        U$[        [        U5      5      -  5        GM(     S ng ! , (       d  f       GN= f! , (       d  f       GN(= f)/Nr   zout.tifFr:   z--help)r   z-oz-vz-qz-quietz-createonlyz	-separatez	-seperatez-pctz-otzUnknown GDAL data type: %sz-initz-nz	-a_nodataz-fz-ofz-coz-psr   r   z-tapTz-ul_lrrY      -zUnrecognized command option: %szNo input files selected.z4Format driver %s not found, pick a supported driver.DCAP_CREATEzFormat driver %s does not support creation and piecewise writing.
Please select a format that does, such as GTiff (the default) or HFA (Erdas Imagine).r   )useExceptionsrh   z(Creation failed, terminating gdal_merge.znExisting output file has less bands than the input files. You should delete it before. Terminating gdal_merge.g        r   z<Processing file %5d of %5d, %6.3f%% completed in %d minutes.g      Y@g      N@)0timer   GeneralCmdLineProcessorlenr   GetDataTypeByNameGDT_Unknownr   splitr=   floatabsr   GetDriverByNameGetMetadatarB   rP   rQ   rM   rN   rj   ri   rL   rH   quiet_errorsExceptionMgrrZ   	GA_Updatemathfloorceilrk   rI   CreateSetGeoTransformSetProjectionrO   r
   SetRasterColorTablerJ   r[   rangeSetNoDataValueFillprogressroundre   r~   )&argvr!   quietr>   driver_nameout_filerP   psize_xseparatecopy_pctr    a_nodatacreate_optionspre_initrH   
createonlybTargetAlignedPixels
start_timeiargstr_pre_initxpsize_yrQ   rM   rN   driverDriverMDr?   rA   r   rL   rR   rS   rI   r$   fi_processedbands&                                         r&   
gdal_merger     sz   GEEKH
CGHHFHNHIJ J|''-D| 	
A
c$i-1g(?''D[AAAwHD[GD[C8OEM!JKHKHF]HE\AA..tAw7ID,,,2T!W<= - G^AA7==?L!a) " D[AA47^FKAAT!W~HD[C5LAAq'KE\AA!!$q'*E\DQK(G3uT!a%[122GAAF]#' H_QU$CQU$CQU$CQU$CAA!W^3c9:&& LLE_ c$i-b ()T""(2!!+.F~D{RS!!#HH$ g	
  $E*J
{mmmmBc266"Cc266"Cc266"Cc266"C	  Q-,,Q/Q-,,Q/qM++	 
			d//eDyy4>>2 E	 |**S]+g5C))C'M*W4C**SG8^,x7C))C7(N+wh6Caa9S3Y,q/1C78S3Y,q/1C78q=E ( ! qM''E}}XueUIV<<=\*:a=334q!55jm6F6FGq=E ( !%' E 	 ( 
1++T-=-=>E t''(Aq1u%44X> ) s8},4++,""1q5)..x{; -]a4++,""1q5)..x{; - FzglL?a<"IN 1$
O 5(3z?:tyy{Z74?@A	 IIKq=a+T4v? , aA.T4A! / $a'A:'Q,\E#j/$::;7 < DG ED		s$   a8)&a&a8&
a5	0a88
bc                     [        U 5      $ rF   )r   )r   s    r&   mainr     s    dr(   __main__r*   rF   )r   r   r   osgeor   osgeo_utils.auxiliary.utilr   TermProgress_nocbr   __version__r'   r	   r   rB   objectr;   r   r   r   r   r   exitr   r(   r&   <module>r      s   B  
   9!!Qrl" Kb LF,M
 M
b8{| hh  zHHT#((^ r(   