
    nj0              #       r   S SK r S SKr S SK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 r\R                  4S jrSSSSSSSSSSSSSSSS\R"                  4S	\\\      S
\\   S\\\      S\\\R&                        S\\\R(                        S\\\      S\\\      S\\   S\\   S\\\      S\\   S\\   S\\	\\4      S\\	\\4      S\\	\\4      S\S\4"S jjrS\\   S\\R&                     S\\R(                     4S jr\S:X  a#  \R6                  " \" \R                  5      5        gg)    N)Real)ListOptionalSequenceUnion)gdal)GetOutputDriverForc                    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  [        S
US9  U (       a  S$ S$ )Nz0Usage: gdal_pansharpen [--help] [--help-general])filezy                       <pan_dataset> {<spectral_dataset>[,band=<num>]} {<spectral_dataset>[,band=<num>]}... <out_dataset>zE                       [-of <format>] [-b <band>]... [-w <weight>]...zP                       [-r {nearest|bilinear|cubic|cubicspline|lanczos|average}]zW                       [-threads {ALL_CPUS|<number>}] [-bitdepth <val>] [-nodata <val>]zR                       [-spat_adjust {union|intersection|none|nonewithoutwarning}]zB                       [-verbose_vrt] [-co <NAME>=<VALUE>]... [-q] z:Create a dataset resulting from a pansharpening operation.   r   )sysstderrstdoutprint)isErrorfs     W/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/osgeo_utils/gdal_pansharpen.pyUsager   +   s    

3::A	
<1E	 	D 
OVW 
Z 
a 
\ 

NUVW	"1	
FQO1Q    c                    [         R                  " U 5      n U c  gS n/ n/ n/ n/ n/ nS n/ n[         R                  n	S n
S nSnS nS nS nSn[        U 5      nUU:  GaM  U U   S:X  d	  U U   S:X  a!  U[        U 5      S-
  :  a  U US-      nUS-   nGOU U   S:X  a!  U[        U 5      S-
  :  a  U US-      n
US-   nGOU U   S:X  a!  U[        U 5      S-
  :  a  U US-      nUS-   nGOU U   S:X  a9  U[        U 5      S-
  :  a'  UR	                  [        U US-      5      5        US-   nGOvU U   S	:X  a9  U[        U 5      S-
  :  a'  UR	                  [        U US-      5      5        US-   nGO4U U   S
:X  a/  U[        U 5      S-
  :  a  UR	                  U US-      5        US-   nOU U   S:X  a   U[        U 5      S-
  :  a  U US-      nUS-   nOU U   S:X  a   U[        U 5      S-
  :  a  U US-      nUS-   nOU U   S:X  a   U[        U 5      S-
  :  a  U US-      nUS-   nOU U   S:X  a  S n	OuU U   S:X  a  SnOiU U   S:X  a	  [        SS9$ U U   S   S:X  a.  [        R                  R                  SU U   -  5        [        SS9$ Uc  U U   nOUR	                  U U   5        US-   nUU:  a  GMM  Ub  [        U5      S:  a	  [        SS9$ UR                  5       n[        S'0 SS _SU_SU_SU_SU_SU_SU_SU_SU_SU_S U
_S!U_S"U_S#U_S$U_S%U_S&U	_6$ )(Nr   F   z-ofz-fz-rz-spat_adjustz-bz-wz-coz-threadsz	-bitdepthz-nodataz-qz-verbose_vrtTz--help)r   -zUnrecognized option : %s
r   argvpan_namespectral_namesspectral_dsspectral_bands	band_numsweightsdst_filenamedriver_namecreation_options
resamplingspat_adjustnum_threadsbitdepthnodata_valueverbose_vrtprogress_callback )r   GeneralCmdLineProcessorTermProgress_nocblenappendintfloatr   r   r   writepopgdal_pansharpen)r   r   r   r   r   r   r    r"   r#   r*   r$   r%   r)   r&   r'   r(   iargcr!   s                      r   mainr7   G   s   ''-D|HNKNIGK..JKKKHL	At9D
d(GuQ4QTQ5Fq1u+KAA!W_SY]!2a!eJAA!W&1s4y1}+<q1u+KAA!W_SY]!2Sa!e-.AA!W_SY]!2NN5a!e-.AA!W!c$i!m"3##DQK0AA!W
"q3t9q='8q1u+KAA!W#CIM(9AE{HAA!W	!a#d)a-&7A;LAA!W_ $!W&K!W ''!WQZ3JJ9DGCD&&AwH!!$q'*EU d(X 3~.2T""!%%'L  &  	
 &   "   *       "   !" ,# r   Fr   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   c                 	   U (       a  [        U 5      $ U=(       d    / nU=(       d    / nU=(       d    / nU=(       d    / nU=(       d    / nU	=(       d    / n	U(       a  [        UUUS9  Ub  U(       d  g[        R                  " U5      nUc  gUc  [	        U5      nU(       d(  [        [        U5      5       Vs/ s H  nUS-   PM
     nnO.U H(  nUS:  d  U[        U5      :  d  M  [        SU-  5          g   U(       a$  [        U5      [        U5      :w  a  [        S5        gSnU[        [        U5      5       Vs/ s H  nUS-   PM
     sn:w  ao  [        U5       H`  u  nnUUS-
     n[        R                  " UR                  5      n[        R                  " UR                  5       5      nUSUUS-   U4-  -  nMb     US-  nU(       a<  US	-  nUS
-  n[        U5       H  u  nnUS:  a  US-  nUSU-  -  nM     US-  nUS-  nU
b	  USU
 S3-  nUb	  USU S3-  nUb	  USU S3-  nUb	  USU S3-  nUb	  USU S3-  nSnUR                  5       S:X  ac  [        R                  R!                  U5      (       d?  Sn[        R                  R#                  U[        R                  R%                  U5      5      nUSU< SU< S3-  n[        U5       H  u  nnSn[        U5       H  u  nnUS-   U:X  d  M  S US-   -  n  O   SnUU   R'                  5       nUR                  5       S:X  ad  [        R                  R!                  U5      (       d@   [        R                  R#                  U[        R                  R%                  U5      5      nSnUS!UUUUR+                  5       4-  -  nM     US"-  nUS#-  nUR                  5       S:X  a  [        R,                  " US$5      nUc  [        S%U-  5        g[        R.                  " US[        U5      U5        [        R0                  " U5        U(       aE  [        R                  " U[        R2                  5      nUR5                  UR7                  5       5        O[        R                  " U5      nUc  gg[        R                  " U5      n[        R8                  " U5      R;                  UUSU	US&9n U c  ggs  snf s  snf ! [(         a     GN]f = f)'N)r   r   r   r   r   zInvalid band number in -b: %dzAThere must be as many -w values specified as input spectral bandsz/<VRTDataset subClass="VRTPansharpenedDataset">
z  <VRTRasterBand dataType="%s" band="%d" subClass="VRTPansharpenedRasterBand">
      <ColorInterp>%s</ColorInterp>
  </VRTRasterBand>
z  <PansharpeningOptions>
z      <AlgorithmOptions>
z        <Weights>,z%.16gz</Weights>
z      </AlgorithmOptions>
z      <Resampling>z</Resampling>
z      <NumThreads>z</NumThreads>
z      <BitDepth>z</BitDepth>
z      <NoData>z
</NoData>
z      <SpatialExtentAdjustment>z</SpatialExtentAdjustment>
0VRT1z7    <PanchroBand>
      <SourceFilename relativeToVRT="z">zF</SourceFilename>
      <SourceBand>1</SourceBand>
    </PanchroBand>
r   z dstBand="%d"z    <SpectralBand%s>
      <SourceFilename relativeToVRT="%s">%s</SourceFilename>
      <SourceBand>%d</SourceBand>
    </SpectralBand>
z  </PansharpeningOptions>
z</VRTDataset>
wbzCannot create %s)callback)r7   parse_spectral_namesr   Openr	   ranger.   r   	enumerateGetDataTypeNameDataTypeGetColorInterpretationNameGetColorInterpretationupperospathisabsrelpathdirnameGetDescription
ValueErrorGetBand	VSIFOpenL
VSIFWriteL
VSIFCloseL	GA_UpdateSetMetadataGetMetadataGetDriverByName
CreateCopy)!r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   pan_dsjbandvrt_xmlr5   sbanddatatype	colornameweightpan_relativedstbandms_relativems_namer   vrt_dsout_dss!                                    r   r4   r4      s   & Dz#)rN#K#)rNRImG'-2)#)	
 ~YYx F~(6$)#n*=$>?$>qQU$>	?	Dax4#n"555<= 
 3w<3~#66QRDGE#n*=$>?$>qQU$>?? +GAt"4!8,E++ENN;H778T8T8VWI  A G	 , //G33**"7+IAv1u3w''G , 	>!44'
|?CC'}ODD%hZ}==^L>==-k]:VW	
 Le#ww}}X&&Lwwx1NOH 	 G n-5 +GAt1u})QU3 ,
 a.//1%'77==)) ggoogrww|7TUG"%K 	  MMO	

 	
' .: 00G$$Ge#NN<.9$|34CL!4YY|T^^<Fv1134YY|,F>YYwF!!+.99fa!1<M : F ~w @ @L "  s   7S;S?S""
S0/S0c                    U  H  nUR                  S5      nUS:  an  USU n[        R                  " U5      nUc    g[        X4[	        S5      -   S  5      nUR                  U5      nUR                  U5        UR                  U5        M  Un[        R                  " U5      nUc    g[        UR                  5       H7  n	UR                  U5        UR                  UR                  U	S-   5      5        M9     M     g )Nz,band=r   r   )	findr   r@   r0   r.   GetRasterBandr/   rA   RasterCount)
r   r   r   spectral_argposspectral_namedsband_numrZ   rY   s
             r   r?   r?   Q  s    
 ')7(3/M=)Bz<c(m(;(=>?H##H-Dr"!!$' )M=)Bz2>>*""2&%%b&6&6q1u&=> +% 'r   __main__)rH   os.pathr   numbersr   typingr   r   r   r   osgeor   osgeo_utils.auxiliary.utilr	   r   r   r7   r-   strDatasetBandr0   r1   boolr4   r?   __name__exitr+   r   r   <module>r{      s	  B 
  
  2 2  98 hh Yz %)".20404)-)-"&!%04 $!%-1*./3"&"8"8#k
8C=
!ksmk Xc]+k $t||,-	k
 T$))_-k &k huo&k 3-k #k x}-k k #k %S/*k uS#X'k 5s+,k  !k"  #k\?SM?dll#? O?8 zHHT#((^ r   